Backup and restore presentation of mongodb

First, the installation environment Introduction:

Mongo demo installation environment:
binary packages mongoDB3.6.16
to authorize mongodb super administrator account :

mongo --host 127.0.0.1 --port 6068
db.createUser({user: 'root', pwd:'TdLLQ6689', roles:[{role: 'root', db: 'admin'}]});
use admin
db.auth("root","TdLLQ6689")

Building a database table to build simulation data :

use dbtest001
db.chenji.insert({"name":"小花","年级":"二年级","性别":"男","爱好":"学习"})
use dbtest002
db.xiangmu.insert({"name":"小花","年级":"二年级","性别":"男","爱好":"学习"})
db.mumu.insert({"name":"小花","年级":"二年级","性别":"男","爱好":"学习"})

Tip: The demonstration backup and recovery mainly super root account to demonstrate

Two, mongodump backup command description:

2.1 syntax and parameters:

mongodump -h dbhost -u xxx -p xxx -d dbname -o dbdirectory
parameters introduced:
-h host database specified in the IP
--port port specify the database
user name -u specifies the database
password -p specified database
-d specified the name of the database
-c specified collection name
-o to specify the name of the file you want to export
-q specified export data filtering conditions
--authenticationDatabase verify the name of the data
compression --gzip backup
--oplog use oplog for taking a point- in -time snapshot

Create a good demonstration of advanced backup directory:
mkdir Full # full backup
mkdir single_db # single backup
mkdir single_db_col # library table backup
mkdir single_db.gzip # backup compression
mkdir single_db_col.gzip # backup compression library table

2.2 full backup:

[root@localhost ~]# mongodump -h 127.0.0.1:6068 -u root -p TdLLQ6689  -o /root/full
2020-01-04T18:13:18.271+0800    writing admin.system.users to 
2020-01-04T18:13:18.272+0800    done dumping admin.system.users (7 documents)
2020-01-04T18:13:18.272+0800    writing admin.system.version to 
2020-01-04T18:13:18.273+0800    done dumping admin.system.version (2 documents)
2020-01-04T18:13:18.273+0800    writing dbtest001.chenji to 
2020-01-04T18:13:18.273+0800    writing dbtest002.mumu to 
2020-01-04T18:13:18.273+0800    writing dbtest002.xiangmu to 
2020-01-04T18:13:18.274+0800    done dumping dbtest002.mumu (1 document)
2020-01-04T18:13:18.274+0800    done dumping dbtest001.chenji (2 documents)
2020-01-04T18:13:18.290+0800    done dumping dbtest002.xiangmu (2 documents)
[root@localhost ~]# cd full/
[root@localhost full]# ls
admin  dbtest001  dbtest002

2.3 Single database backup:

Super root account using backup backup fails:

[root@localhost ~]# mongodump -h 127.0.0.1:6068 -u root -p TdLLQ6689 -d dbtest001 -o /root/single_db
2020-01-04T18:22:20.087+0800    Failed: error connecting to db server: server returned error on SASL authentication step: Authentication failed.

Solution is as follows:

The first method: Add --authenticationDatabase admin

[root@localhost ~]# mongodump -h 127.0.0.1:6068 -u root -p TdLLQ6689 --authenticationDatabase admin  -d dbtest001 -o /root/single_db
2020-01-04T18:37:46.926+0800    writing dbtest001.chenji to 
2020-01-04T18:37:46.927+0800    done dumping dbtest001.chenji (2 documents)
[root@localhost ~]# mongodump -h 127.0.0.1:6068 -u root -p TdLLQ6689 --authenticationDatabase admin  -d dbtest002 -o /root/single_db
2020-01-04T18:37:54.253+0800    writing dbtest002.xiangmu to 
2020-01-04T18:37:54.253+0800    writing dbtest002.mumu to 
2020-01-04T18:37:54.254+0800    done dumping dbtest002.xiangmu (2 documents)
2020-01-04T18:37:54.254+0800    done dumping dbtest002.mumu (1 document)

[root@localhost ~]# tree /root/single_db
/root/single_db
├── dbtest001
│   ├── chenji.bson
│   └── chenji.metadata.json
└── dbtest002
    ├── mumu.bson
    ├── mumu.metadata.json
    ├── xiangmu.bson
    └── xiangmu.metadata.json

2 directories, 6 files

The second method: backup for individual libraries authorized read and write permissions

[root@localhost ~]# mongo --host 127.0.0.1 --port 6068
MongoDB shell version v3.6.16
connecting to: mongodb://127.0.0.1:6068/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("93f83e64-71ca-4b1d-b599-508b7fba8722") }
MongoDB server version: 3.6.16
> use dbtest001
>db.auth("root","TdLLQ6689")

> use dbtest001
>db.createUser({user: 'backupuser', pwd:'TdLLQ6689', roles:[{role: 'readWrite', db: 'dbtest001'}]});
> use dbtest002
>db.createUser({user: 'backupuser', pwd:'TdLLQ6689', roles:[{role: 'readWrite', db: 'dbtest002'}]});
[root@localhost ~]# mongodump -h 127.0.0.1:6068 -u backupuser -p TdLLQ6689  -d dbtest001 -o /root/single_db
2020-01-04T18:24:15.243+0800    writing dbtest001.chenji to 
2020-01-04T18:24:15.244+0800    done dumping dbtest001.chenji (2 documents)
[root@localhost ~]# ll /root/single_db/dbtest001/chenji.*
-rw-r--r-- 1 root root 192 1月   4 18:24 /root/single_db/dbtest001/chenji.bson
-rw-r--r-- 1 root root 130 1月   4 18:24 /root/single_db/dbtest001/chenji.metadata.json
[root@localhost ~]# mongodump -h 127.0.0.1:6068 -u backupuser -p TdLLQ6689  -d dbtest002 -o /root/single_db
2020-01-04T18:28:39.523+0800    writing dbtest002.xiangmu to 
2020-01-04T18:28:39.523+0800    writing dbtest002.mumu to 
2020-01-04T18:28:39.524+0800    done dumping dbtest002.xiangmu (2 documents)
2020-01-04T18:28:39.524+0800    done dumping dbtest002.mumu (1 document)
[root@localhost ~]# cd  /root/single_db
[root@localhost single_db]# ls
dbtest001  dbtest002

2.4 Single backup repository specified in a single table:

[root@localhost ~]# mongodump -h 127.0.0.1:6068 -u root -p TdLLQ6689 --authenticationDatabase admin  -d dbtest002 -c xiangmu -o /root/single_db_col
2020-01-04T18:34:30.260+0800    writing dbtest002.xiangmu to 
2020-01-04T18:34:30.261+0800    done dumping dbtest002.xiangmu (2 documents)
[root@localhost ~]# ll /root/single_db_col/dbtest002/
总用量 8
-rw-r--r-- 1 root root 192 1月   4 18:34 xiangmu.bson
-rw-r--r-- 1 root root 131 1月   4 18:34 xiangmu.metadata.json

Backup Compression Library Table 2.5:

2.5.1 backup compression:

 [root@localhost ~]# mongodump -h 127.0.0.1:6068 -u root -p TdLLQ6689 --authenticationDatabase admin  -d dbtest002 -o /root/single_db --gzip
2020-01-04T18:44:28.558+0800    writing dbtest002.xiangmu to 
2020-01-04T18:44:28.559+0800    writing dbtest002.mumu to 
2020-01-04T18:44:28.560+0800    done dumping dbtest002.xiangmu (2 documents)
2020-01-04T18:44:28.561+0800    done dumping dbtest002.mumu (1 document)
[root@localhost ~]# tree single_db
single_db
└── dbtest002
    ├── mumu.bson.gz
    ├── mumu.metadata.json.gz
    ├── xiangmu.bson.gz
    └── xiangmu.metadata.json.gz

1 directory, 4 files

Backup Compression Library Table 2.5.2:

[root@localhost ~]# mongodump -h 127.0.0.1:6068 -u root -p TdLLQ6689 --authenticationDatabase admin  -d dbtest001 -o /root/single_db_col.gzip  --gzip
2020-01-04T18:41:08.459+0800    writing dbtest001.chenji to 
2020-01-04T18:41:08.460+0800    done dumping dbtest001.chenji (2 documents)
[root@localhost dbtest001]# ll /root/single_db_col.gzip/dbtest001
总用量 8
-rw-r--r-- 1 root root 124 1月   4 18:41 chenji.bson.gz
-rw-r--r-- 1 root root 132 1月   4 18:41 chenji.metadata.json.gz

Three, mongorestore restore backup data Commands

3.1 syntax and parameters introduced:

mongorestore -h <hostname><:port> -d dbname <path>

--host <: port>, -h < : port>: mongoDB where the server address, by default: localhost: 27017
IP -h host of the specified database
-u specifies the database user name
-p password specified database
-d specified the name of the database to use the when Restoring database ## from a BSON file
-c specified collection name collection to use the when Restoring ## from a BSON file
-o to specify the file name to export
-q filter conditions specified export data
- name authenticationDatabase validation data
--gzip backup compression
--oplog use oplog for taking a point- in-time snapshot
when --drop recover before the drop off collection

3.2 using the full backup to restore the library:

Tip: Use the library to restore the full backup directly online will be prompted to key in the conflict, to adopt a set of parameters to restore --drop drop out before


[root@localhost ~]# mongorestore -h 127.0.0.1:6068 -u root -p TdLLQ6689 --authenticationDatabase admin   ./full/
2020-01-04T18:55:43.409+0800    preparing collections to restore from
2020-01-04T18:55:43.414+0800    reading metadata for dbtest001.chenji from full/dbtest001/chenji.metadata.json
2020-01-04T18:55:43.414+0800    restoring dbtest001.chenji from full/dbtest001/chenji.bson
2020-01-04T18:55:43.415+0800    reading metadata for dbtest002.xiangmu from full/dbtest002/xiangmu.metadata.json
2020-01-04T18:55:43.415+0800    reading metadata for dbtest002.mumu from full/dbtest002/mumu.metadata.json
2020-01-04T18:55:43.415+0800    restoring dbtest002.xiangmu from full/dbtest002/xiangmu.bson
2020-01-04T18:55:43.416+0800    restoring dbtest002.mumu from full/dbtest002/mumu.bson
2020-01-04T18:55:43.418+0800    error: multiple errors in bulk operation:
  - E11000 duplicate key error collection: dbtest002.xiangmu index: _id_ dup key: { : ObjectId('5e0f16191083b09e85237cb2') }
  - E11000 duplicate key error collection: dbtest002.xiangmu index: _id_ dup key: { : ObjectId('5e0f161d1083b09e85237cb3') }

2020-01-04T18:55:43.418+0800    no indexes to restore
2020-01-04T18:55:43.418+0800    finished restoring dbtest002.xiangmu (2 documents)
2020-01-04T18:55:43.436+0800    error: multiple errors in bulk operation:
  - E11000 duplicate key error collection: dbtest001.chenji index: _id_ dup key: { : ObjectId('5e0f150150fe973d9e9051f4') }
  - E11000 duplicate key error collection: dbtest001.chenji index: _id_ dup key: { : ObjectId('5e0f150750fe973d9e9051f5') }

2020-01-04T18:55:43.436+0800    no indexes to restore
2020-01-04T18:55:43.436+0800    finished restoring dbtest001.chenji (2 documents)
2020-01-04T18:55:43.436+0800    error: E11000 duplicate key error collection: dbtest002.mumu index: _id_ dup key: { : ObjectId('5e0f162d1083b09e85237cb4') }
2020-01-04T18:55:43.436+0800    no indexes to restore
2020-01-04T18:55:43.436+0800    finished restoring dbtest002.mumu (1 document)
2020-01-04T18:55:43.436+0800    restoring users from full/admin/system.users.bson
2020-01-04T18:55:43.447+0800    done

Then delete the database recovery:

> use dbtest001
switched to db dbtest001
> db.dropDatabase()
{ "dropped" : "dbtest001", "ok" : 1 }
> use dbtest002
switched to db dbtest002
> db.dropDatabase()
{ "dropped" : "dbtest002", "ok" : 1 }

[root@localhost ~]# mongorestore -h 127.0.0.1:6068 -u root -p TdLLQ6689 --authenticationDatabase admin  ./full/
2020-01-04T18:59:29.633+0800    preparing collections to restore from
2020-01-04T18:59:29.639+0800    reading metadata for dbtest001.chenji from full/dbtest001/chenji.metadata.json
2020-01-04T18:59:29.639+0800    reading metadata for dbtest002.mumu from full/dbtest002/mumu.metadata.json
2020-01-04T18:59:29.640+0800    reading metadata for dbtest002.xiangmu from full/dbtest002/xiangmu.metadata.json
2020-01-04T18:59:29.646+0800    restoring dbtest002.xiangmu from full/dbtest002/xiangmu.bson
2020-01-04T18:59:29.648+0800    no indexes to restore
2020-01-04T18:59:29.648+0800    finished restoring dbtest002.xiangmu (2 documents)
2020-01-04T18:59:29.664+0800    restoring dbtest001.chenji from full/dbtest001/chenji.bson
2020-01-04T18:59:29.677+0800    restoring dbtest002.mumu from full/dbtest002/mumu.bson
2020-01-04T18:59:29.690+0800    no indexes to restore
2020-01-04T18:59:29.690+0800    finished restoring dbtest001.chenji (2 documents)
2020-01-04T18:59:29.690+0800    no indexes to restore
2020-01-04T18:59:29.690+0800    finished restoring dbtest002.mumu (1 document)
2020-01-04T18:59:29.690+0800    restoring users from full/admin/system.users.bson
2020-01-04T18:59:29.701+0800    done

Add parameters --drop recovery:

[root@localhost ~]# mongorestore -h 127.0.0.1:6068 -u root -p TdLLQ6689 --authenticationDatabase admin --drop ./full/
2020-01-04T19:03:04.854+0800    preparing collections to restore from
2020-01-04T19:03:04.859+0800    reading metadata for dbtest001.chenji from full/dbtest001/chenji.metadata.json
2020-01-04T19:03:04.864+0800    restoring dbtest001.chenji from full/dbtest001/chenji.bson
2020-01-04T19:03:04.866+0800    no indexes to restore
2020-01-04T19:03:04.866+0800    finished restoring dbtest001.chenji (2 documents)
2020-01-04T19:03:04.879+0800    reading metadata for dbtest002.xiangmu from full/dbtest002/xiangmu.metadata.json
2020-01-04T19:03:04.880+0800    reading metadata for dbtest002.mumu from full/dbtest002/mumu.metadata.json
2020-01-04T19:03:04.884+0800    restoring dbtest002.xiangmu from full/dbtest002/xiangmu.bson
2020-01-04T19:03:04.898+0800    restoring dbtest002.mumu from full/dbtest002/mumu.bson
2020-01-04T19:03:04.899+0800    no indexes to restore
2020-01-04T19:03:04.899+0800    finished restoring dbtest002.xiangmu (2 documents)
2020-01-04T19:03:04.915+0800    no indexes to restore
2020-01-04T19:03:04.915+0800    finished restoring dbtest002.mumu (1 document)
2020-01-04T19:03:04.915+0800    restoring users from full/admin/system.users.bson
2020-01-04T19:03:04.928+0800    done

3.3 database file backup table restored to the specified database tables:

-D database data file name specified in the database and backup file format must be BSON

[root@localhost ~]# mongorestore -h 127.0.0.1:6068 -u root -p TdLLQ6689 --authenticationDatabase admin -d dbtest002 ./full/dbtest002/
2020-01-05T07:36:24.293+0800    the --db and --collection args should only be used when restoring from a BSON file. Other uses are deprecated and will not exist in the future; use --nsInclude instead
2020-01-05T07:36:24.293+0800    building a list of collections to restore from full/dbtest002 dir
2020-01-05T07:36:24.294+0800    reading metadata for dbtest002.xiangmu from full/dbtest002/xiangmu.metadata.json
2020-01-05T07:36:24.295+0800    reading metadata for dbtest002.mumu from full/dbtest002/mumu.metadata.json
2020-01-05T07:36:24.299+0800    restoring dbtest002.mumu from full/dbtest002/mumu.bson
2020-01-05T07:36:24.303+0800    no indexes to restore
2020-01-05T07:36:24.303+0800    finished restoring dbtest002.mumu (1 document)
2020-01-05T07:36:24.319+0800    restoring dbtest002.xiangmu from full/dbtest002/xiangmu.bson
2020-01-05T07:36:24.321+0800    no indexes to restore
2020-01-05T07:36:24.321+0800    finished restoring dbtest002.xiangmu (2 documents)
2020-01-05T07:36:24.321+0800    done

A collection of database data files -c specifies the name of a collection of backup and file format must be BSON

[root@localhost ~]# mongorestore -h 127.0.0.1:6068 -u root -p TdLLQ6689 --authenticationDatabase admin -d dbtest002 -c mumu  ./full/dbtest002/mumu.bson 
2020-01-05T07:45:53.367+0800    checking for collection data in full/dbtest002/mumu.bson
2020-01-05T07:45:53.368+0800    reading metadata for dbtest002.mumu from full/dbtest002/mumu.metadata.json
2020-01-05T07:45:53.373+0800    restoring dbtest002.mumu from full/dbtest002/mumu.bson
2020-01-05T07:45:53.436+0800    no indexes to restore
2020-01-05T07:45:53.436+0800    finished restoring dbtest002.mumu (1 document)
2020-01-05T07:45:53.436+0800    done
[root@localhost ~]# 
[root@localhost ~]# mongorestore -h 127.0.0.1:6068 -u root -p TdLLQ6689 --authenticationDatabase admin -d dbtest002 -c mumu  ./full/dbtest002/xiangmu.bson 
2020-01-05T07:46:35.517+0800    checking for collection data in full/dbtest002/xiangmu.bson
2020-01-05T07:46:35.519+0800    reading metadata for dbtest002.mumu from full/dbtest002/xiangmu.metadata.json
2020-01-05T07:46:35.519+0800    restoring dbtest002.mumu from full/dbtest002/xiangmu.bson
2020-01-05T07:46:35.582+0800    no indexes to restore
2020-01-05T07:46:35.582+0800    finished restoring dbtest002.mumu (2 documents)
2020-01-05T07:46:35.582+0800    done

Guess you like

Origin blog.51cto.com/wujianwei/2464417