今天就跟大家聊聊有关MongoDB中怎么实现备份与恢复,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
一 mongoexport/mongoimport
[root@svnhost bin]# pwd
/usr/local/mongodb/bin
[root@svnhost bin]# ./mongoexport --help
导出chendb下test01表
[root@svnhost bin]# ./mongoexport -d chendb -c test01 -o /mongobak/chendb_test01.bak
[root@svnhost bin]# ./mongoexport -d chendb -c test02 -o /mongobak/chendb_test02.bak
查看备份内容
[root@svnhost bin]# cat /mongobak/chendb_test01.bak
{"_id":{"$oid":"5b8f418f1c1560b2bb03cb7b"},"url":"www.sina.com"}
{"_id":{"$oid":"5b8f41c51c1560b2bb03cb7c"},"url":"ccc - 10"}
.....
{"_id":{"$oid":"5b8f41d81c1560b2bb03cb90"},"url":19.0}
{"_id":{"$oid":"5b8f41d81c1560b2bb03cb91"},"url":20.0}
{"_id":{"$oid":"5b8f74e51c1560b2bb03cb92"},"url":"www.baidu.com"}
恢复单表
将test01表恢复并重命名为test01aaa
[root@svnhost ~]# cd /usr/local/mongodb/bin/
[root@svnhost bin]# ./mongoimport -d chendb -c test01aaa /mongobak/chendb_test01.bak
2018-09-05T17:39:09.592+0800 connected to: localhost
2018-09-05T17:39:09.807+0800 imported 24 documents
MongoDB Enterprise > show collections
test01
test01aaa
test02
查看数据
MongoDB Enterprise > db.test01aaa.find()
{ "_id" : ObjectId("5b8f41c51c1560b2bb03cb7c"), "url" : "ccc - 10" }
{ "_id" : ObjectId("5b8f41c51c1560b2bb03cb7d"), "url" : "ccc - 11" }
{ "_id" : ObjectId("5b8f41c51c1560b2bb03cb7e"), "url" : "ccc - 12" }
.....
{ "_id" : ObjectId("5b8f41d81c1560b2bb03cb90"), "url" : 19 }
{ "_id" : ObjectId("5b8f41d81c1560b2bb03cb91"), "url" : 20 }
{ "_id" : ObjectId("5b8f74e51c1560b2bb03cb92"), "url" : "www.baidu.com" }
删除表,模拟故障
MongoDB Enterprise > show collections
test01
test01aaa
test02
MongoDB Enterprise > db.test02.drop()
true
MongoDB Enterprise > db.test02.find()
恢复表test02
[root@svnhost bin]# ./mongoimport -d chendb -c test02 /mongobak/chendb_test02.bak
2018-09-05T17:49:47.912+0800 connected to: localhost
2018-09-05T17:49:48.089+0800 imported 1 document
查看数据
MongoDB Enterprise > db.test02.find()
{ "_id" : ObjectId("5b8f752f943b3cbaa33a5518"), "url" : "www.baidu.com" }
二 mongodump/mongorestore
[root@svnhost bin]# ./mongodump --help
备份chendb全库
root@svnhost bin]# ./mongodump -d chendb -o /mongobak/db_backup/
2018-09-06T10:24:19.545+0800 writing chendb.test01 to
2018-09-06T10:24:19.545+0800 writing chendb.test02 to
2018-09-06T10:24:19.546+0800 writing chendb.test01aaa to
2018-09-06T10:24:19.547+0800 done dumping chendb.test01 (24 documents)
2018-09-06T10:24:19.563+0800 done dumping chendb.test02 (1 document)
2018-09-06T10:24:19.579+0800 done dumping chendb.test01aaa (24 documents)
查看备份文件
[root@svnhost bin]# unset LANG
[root@svnhost bin]# ll -rth /mongobak/db_backup/chendb/
total 24K
-rw-r--r-- 1 root root 127 Sep 6 10:24 test01.metadata.json
-rw-r--r-- 1 root root 127 Sep 6 10:24 test02.metadata.json
-rw-r--r-- 1 root root 130 Sep 6 10:24 test01aaa.metadata.json
-rw-r--r-- 1 root root 914 Sep 6 10:24 test01.bson
-rw-r--r-- 1 root root 45 Sep 6 10:24 test02.bson
-rw-r--r-- 1 root root 914 Sep 6 10:24 test01aaa.bson
备份MongoDB下全部数据库
[root@svnhost bin]# ./mongodump -o /mongobak/db_fullbackup/
2018-09-06T10:28:35.465+0800 writing admin.system.version to
2018-09-06T10:28:35.465+0800 done dumping admin.system.version (1 document)
2018-09-06T10:28:35.465+0800 writing chendb.test01 to
2018-09-06T10:28:35.465+0800 writing chendb.test01aaa to
2018-09-06T10:28:35.465+0800 writing chendb.test02 to
2018-09-06T10:28:35.466+0800 done dumping chendb.test01 (24 documents)
2018-09-06T10:28:35.466+0800 done dumping chendb.test02 (1 document)
2018-09-06T10:28:35.482+0800 done dumping chendb.test01aaa (24 documents)
指定用户名密码和端口进行备份
[root@svnhost bin]# ./mongodump -d chendb -o /mongobak/newdbbackup -u cjc -p cjc --port 27017
2018-09-06T16:37:45.209+0800 writing chendb.test01aaa to
2018-09-06T16:37:45.209+0800 writing chendb.test01bbb to
2018-09-06T16:37:45.209+0800 writing chendb.test01 to
2018-09-06T16:37:45.209+0800 writing chendb.test02 to
2018-09-06T16:37:45.250+0800 done dumping chendb.test02 (1 document)
2018-09-06T16:37:45.252+0800 done dumping chendb.test01bbb (24 documents)
2018-09-06T16:37:45.252+0800 done dumping chendb.test01aaa (24 documents)
2018-09-06T16:37:45.277+0800 done dumping chendb.test01 (24 documents)
备份chendb库中test01表
[root@svnhost bin]# ./mongodump -d chendb -c test01 -o /mongobak/chendb_test01/
2018-09-06T10:42:39.354+0800 writing chendb.test01 to
2018-09-06T10:42:39.354+0800 done dumping chendb.test01 (24 documents)
查看备份
[root@svnhost bin]# ll -rth /mongobak/chendb_test01/chendb/
total 8.0K
-rw-r--r-- 1 root root 127 Sep 6 10:42 test01.metadata.json
-rw-r--r-- 1 root root 914 Sep 6 10:42 test01.bson
恢复单表
[root@svnhost bin]# pwd
/usr/local/mongodb/bin
[root@svnhost bin]# mongorestore -d chendb -c test01bbb /mongobak/chendb_test01/chendb/test01.bson
2018-09-06T15:43:22.572+0800 checking for collection data in /mongobak/chendb_test01/chendb/test01.bson
2018-09-06T15:43:22.572+0800 reading metadata for chendb.test01bbb from /mongobak/chendb_test01/chendb/test01.metadata.json
2018-09-06T15:43:22.755+0800 restoring chendb.test01bbb from /mongobak/chendb_test01/chendb/test01.bson
2018-09-06T15:43:22.816+0800 no indexes to restore
2018-09-06T15:43:22.816+0800 finished restoring chendb.test01bbb (24 documents)
2018-09-06T15:43:22.816+0800 done
查看数据
MongoDB Enterprise > db.test01bbb.find()
{ "_id" : ObjectId("5b8f41d81c1560b2bb03cb87"), "url" : 10 }
{ "_id" : ObjectId("5b8f41d81c1560b2bb03cb88"), "url" : 11 }
......
{ "_id" : ObjectId("5b8f41d81c1560b2bb03cb90"), "url" : 19 }
{ "_id" : ObjectId("5b8f74e51c1560b2bb03cb92"), "url" : "www.baidu.com" }
恢复单个数据库并重命名为chendbaaa
[root@svnhost bin]# mongorestore -d chendbaaa /mongobak/db_backup/chendb
2018-09-06T15:52:04.586+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
2018-09-06T15:52:04.586+0800 building a list of collections to restore from /mongobak/db_backup/chendb dir
2018-09-06T15:52:04.587+0800 reading metadata for chendbaaa.test01 from /mongobak/db_backup/chendb/test01.metadata.json
2018-09-06T15:52:04.587+0800 reading metadata for chendbaaa.test01aaa from /mongobak/db_backup/chendb/test01aaa.metadata.json
2018-09-06T15:52:04.756+0800 restoring chendbaaa.test01aaa from /mongobak/db_backup/chendb/test01aaa.bson
2018-09-06T15:52:04.940+0800 restoring chendbaaa.test01 from /mongobak/db_backup/chendb/test01.bson
2018-09-06T15:52:04.944+0800 no indexes to restore
2018-09-06T15:52:04.944+0800 finished restoring chendbaaa.test01aaa (24 documents)
2018-09-06T15:52:04.944+0800 no indexes to restore
2018-09-06T15:52:04.944+0800 finished restoring chendbaaa.test01 (24 documents)
2018-09-06T15:52:04.944+0800 reading metadata for chendbaaa.test02 from /mongobak/db_backup/chendb/test02.metadata.json
2018-09-06T15:52:05.098+0800 restoring chendbaaa.test02 from /mongobak/db_backup/chendb/test02.bson
2018-09-06T15:52:05.102+0800 no indexes to restore
2018-09-06T15:52:05.102+0800 finished restoring chendbaaa.test02 (1 document)
2018-09-06T15:52:05.102+0800 done
查看数据库
MongoDB Enterprise > show dbs
admin 0.000GB
chendb 0.000GB
chendbaaa 0.000GB
config 0.000GB
local 0.000GB
MongoDB Enterprise > use chendbaaa
switched to db chendbaaa
MongoDB Enterprise > show collections
test01
test01aaa
test02
MongoDB Enterprise > db.test02.find()
{ "_id" : ObjectId("5b8f752f943b3cbaa33a5518"), "url" : "www.baidu.com" }
三 自动备份
备份计划任务
[root@cjcos ~]# crontab -l
01 03 * * * /dbbackup/mongodb/mongo_bak.sh
备份脚本
备份实例27017、27018、27019下所有数据库
并自动删除2020开头,3天前的所有备份文件
[root@cloud3 ~]# cat /dbbackup/mongodb/mongo_bak.sh
#!/bin/bash
DATE=`date +%Y_%m_%d`
mkdir -p /dbbackup/mongodb/$DATE/{27017,27018,27019}
/kingdee/mongodb/bin/mongodump -o /dbbackup/mongodb/$DATE/27017 --port 27017
/kingdee/mongodb/bin/mongodump -o /dbbackup/mongodb/$DATE/27018 --port 27018
/kingdee/mongodb/bin/mongodump -o /dbbackup/mongodb/$DATE/27019 --port 27019
find /dbbackup/mongodb -mtime +3 -name "2020*" -exec rm -rf {} \;
查看备份文件
[root@cjcos ~]# cd /dbbackup/mongodb/
[root@cjcos mongodb]# du -sh *
32G 2020_03_21
32G 2020_03_22
32G 2020_03_23
4.0K mongo_bak.sh
通过备份文件进行恢复
恢复chendb
[root@svnhost bin]# pwd
/usr/local/mongodb/bin
[root@cjcos bin]# mongorestore -d chendbccc /dbbackup/mongodb/2020_03_23/27017/chendb
看完上述内容,你们对MongoDB中怎么实现备份与恢复有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。