IBM Cloud Docs
Création d'une sauvegarde

Création d'une sauvegarde

Ce tutoriel explique comment utiliser le Utilitaire CouchBackup pour sauvegarder et restaurer une instance CouchDB ou IBM® Cloudant® for IBM Cloud® . CouchBackup sauvegarde la base de données dans un fichier. En cas d'échec de défaillance de la base de données, vous pouvez utiliser le fichier de sauvegarde pour restaurer les informations dans une base de données existante.

Objectifs

  1. Installer CouchBackup.
  2. Créer un exemple de base de données contenant des documents.
  3. Configurer une variable d'environnement.
  4. Sauvegarder une base de données.
  5. Créer un fichier journal.
  6. Restaurer une sauvegarde à partir d'un fichier texte.

Installation de CouchBackup

Installez CouchBackup en exécutant la commande install.

npm install -g @cloudant/couchbackup

Création d'une base de données exemple

Créez une base de données exemple couchbackup-demo pour l'utiliser dans ce tutoriel.

  1. Créez une base de données en exécutant la commande ci-dessous.

    curl "https://username:password@myhost.cloudant.com/couchbackup-demo" -X PUT
    
  2. Examinez les résultats.

    {
      "ok": true
    }
    

Création de documents dans la base de données exemple

Les documents que vous créez dans cet exercice contiennent les données que vous sauvegardez et restaurez ultérieurement.

  1. Copiez le texte exemple dans un fichier de données nommé bulkcreate.dat pour créer les cinq documents.

    {
        "docs":
        [
            {
                "_id": "doc1",
                "firstname": "Sally",
                "lastname": "Brown",
                "age": 16,
                "location": "New York City, NY"
            },
            {
                "_id": "doc2",
                "firstname": "John",
                "lastname": "Brown",
                "age": 21,
                "location": "New York City, NY"
            },
            {
                "_id": "doc3",
                "firstname": "Greg",
                "lastname": "Greene",
                "age": 35,
                "location": "San Diego, CA"
            },
            {
                "_id": "doc4",
                "firstname": "Anna",
                "lastname": "Greene",
                "age": 44,
                "location": "Baton Rouge, LA"
            },
            {
                "_id": "doc5",
                "firstname": "Lois",
                "lastname": "Brown",
                "age": 33,
                "location": "Syracuse, NY"
            }
        ]
    }
    
  2. Exécutez la commande ci-dessous pour créer les documents.

    curl "https://username:password@myhost.cloudant.com/couchbackup-demo/_bulk_docs" -X POST -H "Content-Type: application/json" -d \@bulkcreate.dat
    
  3. Examinez les résultats.

    [
      {
        "ok": true,
        "id": "doc1",
        "rev": "1-57a08e644ca8c1bb8d8931240427162e"
      },
      {
        "ok": true,
        "id": "doc2",
        "rev": "1-bf51eef712165a9999a52a97e2209ac0"
      },
      {
        "ok": true,
        "id": "doc3",
        "rev": "1-9c9f9b893fcdd1cbe09420bc4e62cc71"
      },
      {
        "ok": true,
        "id": "doc4",
        "rev": "1-6aa4873443ddce569b27ab35d7bf78a2"
      },
      {
        "ok": true,
        "id": "doc5",
        "rev": "1-d881d863052cd9681650773206c0d65a"
      }
    ]
    

Définition d'une variable d'environnement

Vous pouvez utiliser des variables d'environnement ou des options afin de spécifier l'URL et la base de données de l'instance CouchDB ou IBM Cloudant que vous souhaitez employer avec CouchBackup.

Dans ce tutoriel, vous définissez COUCH_URL et spécifiez la base de données à l'aide du paramètre --db.

Définissez la variable d'environnement COUCH_URL pour spécifier l'URL de l'instance CouchDB ou IBM Cloudant.

export COUCH_URL=https://username:password@myhost.cloudant.com

Sauvegarde d'une base de données

L'utilitaire CouchBackup sauvegarde votre base de données dans un fichier texte afin de conserver vos données et faciliter leur restauration.

  1. Exécutez la commande couchbackup pour acheminer le contenu de votre base de données vers un fichier texte.

    couchbackup --db couchbackup-demo > couchbackup-demo-backup.txt
    
  2. Examinez les résultats.

    
    ================================================================================
    Performing backup on https://****:****@myhost.cloudant.com/couchbackup-demo using configuration:
    {
        "bufferSize": 500,
        "log": "/var/folders/r7/vtctv4695hj_njxmr2hj4jyc0000gn/T/tmp-3132gHPWk9A9yGVe.tmp",
        "mode": "full",
        "parallelism": 5
    }
    ================================================================================
    Streaming changes to disk:
     batch 0
        couchbackup:backup written 0  docs:  5 Time 0.604 +0ms
        couchbackup:backup finished { total: 5 } +4ms
    
  3. Examinez le répertoire pour vérifier que le fichier couchbackup-demo-backup.txt a été créé.

  4. Ouvrez le fichier et examinez la liste des documents qui sont sauvegardés depuis la base de données.

    [
        {
          "_id": "doc2",
          "_rev": "1-2c5ee70689bb75af6f65b0335d1c92f4",
          "firstname": "John",
          "lastname": "Brown",
          "age": 21,
          "location": "New York City, NY",
          "_revisions": {
            "start": 1,
            "ids": [
              "2c5ee70689bb75af6f65b0335d1c92f4"
            ]
          }
        },
        {
          "_id": "doc3",
          "_rev": "1-f6055e3e09f215c522d45189208a1bdf",
          "firstname": "Greg",
          "lastname": "Greene",
          "age": 35,
          "location": "San Diego, CA",
          "_revisions": {
            "start": 1,
            "ids": [
              "f6055e3e09f215c522d45189208a1bdf"
            ]
          }
        },
        {
          "_id": "doc1",
          "_rev": "1-cce7796c7113c5498b07d8e11d7e0c12",
          "firstname": "Sally",
          "lastname": "Brown",
          "age": 16,
          "location": "New York City, NY",
          "_revisions": {
            "start": 1,
            "ids": [
              "cce7796c7113c5498b07d8e11d7e0c12"
            ]
          }
        },
        {
          "_id": "doc4",
          "_rev": "1-0923b723c62fe5c15531e0c33e015148",
          "firstname": "Anna",
          "lastname": "Greene",
          "age":44,
          "location": "Baton Rouge, LA",
          "_revisions": {
            "start": 1,
            "ids": [
              "0923b723c62fe5c15531e0c33e015148"
            ]
          }
        },
        {
            "_id": "doc5",
            "_rev": "1-19f7ecbc68090bc7b3aa4e289e363576",
            "firstname": "Lois",
            "lastname": "Brown",
            "age": 33,
            "location": "Syracuse, NY",
            "_revisions": {
                "start": 1,
                "ids": [
                  "19f7ecbc68090bc7b3aa4e289e363576"
                ]
            }
        }
    ]
    

Création d'un fichier journal

Un fichier journal enregistre la progression de votre sauvegarde. Dans CouchBackup, utilisez le paramètre --log pour créer le fichier journal. Vous pouvez également l'employer pour redémarrer une sauvegarde là où elle s'était arrêtée et spécifier le nom du fichier de sortie.

La commande couchbackup utilise les paramètres suivants pour spécifier l'option de base de données, de fichier journal et de reprise.

--db
couchbackup-demo
--log
couchbackup-demo.log
--resume
true
  1. Exécutez la commande couchbackup pour créer un fichier journal.

    couchbackup --db couchbackup-demo --log couchbackup-demo-backup.log > couchbackup-demo-backup-log.txt
    
  2. Examinez les résultats.

    
    ================================================================================
    Performing backup on https://****:****@myhost.cloudant.com/couchbackup-demo using configuration:
        {
          "bufferSize": 500,
          "log": "couchbackup-demo-backup.log",
          "mode": "full",
          "parallelism": 5
        }
    ================================================================================
    Streaming changes to disk:
     batch 0
        [{"_id":"doc2","_rev":"1-2c5ee70689bb75af6f65b0335d1c92f4",
            "firstname":"John","lastname":"Brown","age":21,
            "location":"New York City, NY",
            "_revisions":{"start":1,"ids":["2c5ee70689bb75af6f65b0335d1c92f4"]}},
        {"_id":"doc4","_rev":"1-0923b723c62fe5c15531e0c33e015148",
            "firstname":"Anna","lastname":"Greene","age":44,
            "location":"Baton Rouge, LA",
            "_revisions":{"start":1,"ids":["0923b723c62fe5c15531e0c33e015148"]}},
        {"_id":"doc1","_rev":"1-cce7796c7113c5498b07d8e11d7e0c12",
            "firstname":"Sally","lastname":"Brown","age":16,
            "location":"New York City, NY",
            "_revisions":{"start":1,"ids":["cce7796c7113c5498b07d8e11d7e0c12"]}},
        {"_id":"doc5","_rev":"1-19f7ecbc68090bc7b3aa4e289e363576",
            "firstname":"Lois","lastname":"Brown","age":33,
            "location":"Syracuse, NY",
            "_revisions":{"start":1,"ids":["19f7ecbc68090bc7b3aa4e289e363576"]}},
        {"_id":"doc3","_rev":"1-f6055e3e09f215c522d45189208a1bdf",
            "firstname":"Greg","lastname":"Greene","age":35,
            "location":"San Diego, CA",
            "_revisions":{"start":1,"ids":["f6055e3e09f215c522d45189208a1bdf"]}}]
                couchbackup:backup written 0  docs:  5 Time 0.621 +0ms
                couchbackup:backup finished { total: 5 } +4ms
    
  3. Ouvrez le fichier journal couchbackup-demo-backup.log et examinez les actions qui sont prises lors de la sauvegarde ou de la restauration.

    :t batch0 [
        {"id":"doc1"},
        {"id":"doc5"},
        {"id":"doc3"},
        {"id":"doc4"},
        {"id":"doc2"}  ]
    :changes_complete 5-g1AAAAXkeJyl1MFNwzAUBmBDk
        RAnugEc4Nji2ImTnOgGsAH4-dkqVZoi1J5hA9gANoA
        NYAPYADaADUqMEYlBIWl7caTI-l7e_-xkhJDusINkD
        0FNLvQAIenDuKdUD2XWo7yvsskMZT7t53qaFbvXJYH
        t-Xw-GnYkGRcvNsM0lRwAydYsR23Oco2-GDWI0C1W2
        PFQFCYwKf2N7v-gAWtSd6168K2ufaksoQwD3dbx2wi
        aClJb8NBvQyVIk6Q-m6a0YWDRIw8NKA85M_Vo2IQe
        W_TEi0YIGiETLZlFZ3FqC068LqgBpHFQ30Vj3ucWv
        fRQYTAGwZbPO98oVnJVPAr3uoSTIGYcw3qYt4JvHHx
        b-WIpIqpwhYPu5Dsn35eyxNRI-c-9bArYwQ8OfqwcFY
        ghEdCSWib_J1fz2dZcdxcpAh2lpiW1zGheXM3XMsBY
        CcHonxO68GjenPxeyopyrXW86mg-HFz9NZiQh1FUhUefOhzMIg
    :d batch0
    

Restauration à partir d'un fichier texte de sauvegarde

Le fichier couchbackup-demo-backup.txt vous permet de restaurer vos données dans une nouvelle base de données vide à l'aide de la commande couchrestore.

La restauration d'une sauvegarde n'est prise en charge que dans le cas d'une restauration dans une base de données vide. Si vous supprimez tous les documents d'une base de données, les enregistrements de suppression des documents sont toujours présents pour assurer une cohérence au niveau de la réplication. Une base de données contenant uniquement des documents supprimés n'est pas considérée comme vide et ne peut donc pas être utilisée comme cible lorsque vous restaurez une sauvegarde.

  1. (Prérequis) Créez une nouvelle base de données vide dans laquelle vous pouvez restaurer vos données.

    curl "https://username:password@myhost.cloudant.com/couchbackup-demo-restore" -X PUT
    
  2. Exécutez la commande couchrestore.

    cat couchbackup-demo-backup.txt | couchrestore --db couchbackup-demo-restore
    
  3. Examinez les résultats.

    
    ================================================================================
    Performing restore on https://****:****@myhost.cloudant.com/couchbackup-demo-restore using configuration:
    {
      "bufferSize": 500,
      "parallelism": 5
    }
    ================================================================================
      couchbackup:restore restored 5 +0ms
      couchbackup:restore finished { total: 5 } +1ms
    

Vous avez effectué la sauvegarde et la restauration d'une base de données et créé un fichier journal. Pour plus d'informations, voir Reprise après incident et sauvegarde, Configuration d'IBM Cloudant pour la reprise après incident interrégionale et Sauvegarde et reprise d'IBM Cloudant.