MongoDB备份恢复(介绍):
1、备份恢复工具介绍:
(1) mongoexport/mongoimport
(2) * mongodump/mongorestore
2、备份工具区别在哪里?
2.1. mongoexport/mongoimport 导入/导出的是JSON格式或者CSV格式,
mongodump/mongorestore导入/导出的是BSON格式。
2.2. JSON可读性强但体积较大,BSON则是二进制文件,体积小但对人类几乎没有可读性。
2.3. 在一些mongodb版本之间,BSON格式可能会随版本不同而有所不同,所以不同版本之间用mongodump/mongorestore可能不会成功,
具体要看版本之间的兼容性。当无法使用BSON进行跨版本的数据迁移的时候,
使用JSON格式即mongoexport/mongoimport是一个可选项。
跨版本的mongodump/mongorestore个人并不推荐,实在要做请先检查文档看两个版本是否兼容(大部分时候是的)。
2.4. JSON虽然具有较好的跨版本通用性,但其只保留了数据部分,不保留索引,账户等其他基础信息。使用时应该注意。
mongoexport/mongoimport工具
1、异构平台迁移 mysql <—> mongodb
2、同平台,跨大版本:mongodb 2 —-> mongodb 3
mongodump和mongorestore介绍:
mongodump能够在Mongodb运行时进行备份,它的工作原理是对运行的Mongodb做查询,然后将所有查到的文档写入磁盘。
但是存在的问题时使用mongodump产生的备份不一定是数据库的实时快照,如果我们在备份时对数据库进行了写入操作,则备份出来的文件可能不完全和Mongodb实时数据相等。另外在备份时可能会对其它客户端性能产生不利的影响。
mongoexport具体用法如下所示:
集群数据备份与单节点配置一样
mongoexport –help
-h:指明数据库宿主机的IP
-u:指明数据库的用户名
-p:指明数据库的密码
-d:指明数据库的名字
-c:指明collection的名字
-f:指明要导出那些列
-o:指明到要导出的文件名
-q:指明导出数据的过滤条件
–authenticationDatabase admin
mongoimport具体用法如下所示:
mongoimport –help
-h:指明数据库宿主机的IP
-u:指明数据库的用户名
-p:指明数据库的密码
-d:指明数据库的名字
-c:指明collection的名字
-f:指明要导入那些列
-j:–numInsertionWorkers= number of insert operations to run concurrently
MongoDB备份恢复(export命令):
备份olda库下的student表数据:
(默认json格式)(mongos节点)
#退出mongos连接,到命令行界面执行备份
mongoexport -h 10.0.0.40 –port 28017 -d olda -c student -o /tmp/mongodb_backup.json
备份oldb库下的student表数据:
(mongos节点)
#退出mongos连接,到命令行界面执行备份(要指定数据列的键)
#注意:想要备份哪一列,那就指定哪一列
mongoexport -h 10.0.0.40 –port 28017 -d oldb -c student –type=csv -f id,name,age,date -o /tmp/mongodb_backup.csv
恢复olda库的student表数据:
(mongos节点)
mongodb恢复不会覆盖原有的数据,当前测试环境会产生数据冲突。
所以恢复数据到其他的表中(也可以直接恢复到其他 “库” )
mongoimport -h 10.0.0.40 –port 28017 -d olda -c student_source /tmp/mongodb_backup.json
恢复oldb库下的student表数据:
(mongos节点)
要指定第一列的id,name,age,date不为数据,mongodb没有数据格式束缚
本次恢复数据到wsp与wll库
#csv格式的文件第一行,没有数据对应列的名字(导入wsp库)
mongoimport -h 10.0.0.40 –port 28017 -d wsp -c student –type=csv -f id,name,age,date –file /tmp/mongodb_backup.csv
#csv格式的文件第一行,有数据对应列的名字(导入wll库)
#–headerline:指明第一行是列名,不需要导入。
mongoimport -h 10.0.0.40 –port 28017 -d wll -c student –type=csv –headerline –file /tmp/mongodb_backup.csv
MongoDB备份恢复(dump命令):
mongodump全量备份:
(mongos节点)
mkdir /tmp/backup
mongodump -h 10.0.0.40 –port 28017 -o /tmp/backup/
备份指定world库:
(mongos节点)
mongodump -h 10.0.0.40 –port 28017 -d world -o /tmp/backup/
备份指定city表:
(mongos节点)
mongodump -h 10.0.0.40 –port 28017 -d world -c city -o /tmp/backup/
备份city表并压缩:
(mongos节点)
mongodump -h 10.0.0.40 –port 28017 -d world -c city -o /tmp/backup/ –gzip
恢复world库:
(mongos节点)
#先删除world库
use world
db.dropDatabase()
#直接指定库的目录就可以
mongorestore -h 10.0.0.40 –port 28017 -d world /tmp/backup/world/
恢复world库city表:
(mongos节点)
#先删除world库
use world
db.dropDatabase()
mongorestore -h 10.0.0.40 –port 28017 -d world -c city /tmp/backup/world/city.bson
自动覆盖原有数据恢复city表:
(mongos节点)
#加了–drop参数会自动覆盖原有数据,不需要删除原有数据
mongorestore -h 10.0.0.40 –port 28017 -d world -c city –drop /tmp/backup/world/city.bson