温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

MongoDB中怎么实现备份与恢复

发布时间:2021-07-19 11:33:37 来源:亿速云 阅读:139 作者:Leah 栏目:关系型数据库

今天就跟大家聊聊有关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中怎么实现备份与恢复有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI