千家信息网

MongoDB中怎么实现备份与恢复

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,今天就跟大家聊聊有关MongoDB中怎么实现备份与恢复,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一 mongoexport/mongoim
千家信息网最后更新 2025年11月07日MongoDB中怎么实现备份与恢复

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

备份 数据 内容 数据库 文件 任务 单个 实例 密码 开头 故障 更多 用户 用户名 知识 端口 篇文章 脚本 行业 资讯 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 罗克韦尔服务器失败怎么办 东方大陆服务器ip 当今信息技术和网络技术的理解 服务器检测报告 南京无线网络技术创新服务 国家网络安全手抄报的图片 数据库关系运算代数表达 闪银超好贷服务器异常 网页打不开提示找不到服务器 网络安全之我见作文400字 铜陵安卓软件开发多少钱 使用数据库写登陆和注册 浪潮塔式服务器销售中心 杭州计算机网络技术排名 打开并使用数据库的命令是 为什么体验区总是断开服务器 购买图书数据库是无形资产 节气海报设计软件开发 携程数据库技术员 对芯片和软件开发免税 教师信息网络技术培训总结 网络技术和数字媒体哪个就业率高 网络安全之我见作文400字 三级网络技术是题库原题吗 魔兽世界能进所有服务器吗 使用cmd命令操作数据库 悉尼租房软件开发 数据库系统的数据控制功能 web数据库的访问方式 常州基础网络技术推荐咨询
0