MongoDB备份恢复
1.备份恢复工具介绍
(1)mongoexport/mongoimport (2)mongodump/mongorestore
2.备份工具区别在哪里?
应用场景总结: 异构平台迁移 :mysql------mongodb 同平台跨大版本:MongoDB2------MongoDB3 mongoexport/mongoimport:json csv 日常备份恢复时使用 mongodump/mongorestore
3.导出工具【mongoexport】
mongoexport具体用法如下所示:
$ mongoexport --help
参数说明:
-h:指明数据库宿主机的IP
-u:指明数据库的用户名
-p:指明数据库的密码
-d:指明数据库的名字
-c:指明collection的名字,就是表名
-f:指明要导出哪些列
-o:指明要导出的文件名
-q:指明要导出的数据的过滤条件
--authenticationDatabase admin
举例:
###导出一个库下的某一个集合 mongoexport --port 27017 -d xxx -c xxx -o /backup/log.json
###导出csv格式
mongoexport --port 27017 -d xxx -c xxx --type=csv -f field1,field2,field3,field4 -o /backup/log.json
4.导入数据【mongoimport】
###普通数据导入
mongoimport --port 27017 -d dba -c dba /backup/log.json
-d:恢复到哪个库就写哪个库
###csv文件导入
mongoimport --port 27017 -d dba -c dba -type csv -f xxx,xxx,xxx,xxx --file /backup/log.csv
--headerline:csv类型的文件第一列是列名,不需要导入到库里,需要加上这个参数
5.异构平台迁移案例
###从mysql数据库中以CSV类型将其导出
select * from mysql.user into outfile '/tmp/city1.csv' fields terminated by ',';
###让后以CSV类型导入到MongoDB mongoimport --port 27017 -d mysql -c user --type=csv -f ip,user,passwd --file /tmp/city1.csv
6.备份【mongodump】
###全备 mongodump -port 27017 -o /backup/
###备份xxx库
mongodump -port 27017 -d xxx -o /backup/
###压缩备份
mongodump -port 27017 -o /backup/ --gzip
7.恢复数据【mongorestore】
mongorestore --port 27017 -d world1 /data/backup/world ###恢复之前先删掉 mongorestore --port 27017 -d world1 /data/backup/world --drop
8.日志中数据恢复
1.模拟故障环境 [mongo@db01 backup]$ mongo db01:28017 dba58:PRIMARY> use wo dba58:PRIMARY> for(var i = 1 ;i < 20; i++) {db.ci.insert({a:i});} 2.全备 [mongo@db01 backup]$ rm -rf /backup/* [mongo@db01 backup]$ mongodump --port 28017 --oplog -o /backup/ 3.再次模拟数据 [mongo@db01 backup]$ mongo db01:28017 dba58:PRIMARY> use wo dba58:PRIMARY> db.ci1.insert({"aaaa":"bbbb"}) dba58:PRIMARY> db.ci2.insert({"aaaa":"bbbb"}) dba58:PRIMARY> show tables; ci ci1 ci2 4.删除wo下面的ci表 dba58:PRIMARY> use wo dba58:PRIMARY> db.ci.drop() dba58:PRIMARY> show tables ci1 ci2 5.备份现有的oplog.rs表 [mongo@db01 backup]$ mongodump --port 28017 -d local -c oplog.rs -o /backup/ 6.截取oplog并恢复到drop之前的位置 [mongo@db01 backup]$ mongo db01:28017 dba58:PRIMARY> use local dba58:PRIMARY> db.oplog.rs.find({ns:"wo.$cmd"}).pretty(); { "ts" : Timestamp(1609427636, 1), "t" : NumberLong(2), "h" : NumberLong("6321033622495857543"), "v" : 2, "op" : "c", "ns" : "wo.$cmd", "ui" : UUID("5a5ba2a5-5646-4140-bad8-225a3f468e51"), "wall" : ISODate("2020-12-31T15:13:56.600Z"), "o" : { "drop" : "ci" } } 7.local下面的oplog是最新的,copy出来,删除local目录进行恢复数据 [mongo@db01 local]$ cp /backup/local/oplog.rs.bson /backup/oplog.bson [mongo@db01 local]$ mongorestore --port 28017 --oplogReplay --oplogLimit "1609427636:1" --drop /backup/ [mongo@db01 backup]$ mongo db01:28017 [mongo@db01 backup]$ use wo [mongo@db01 backup]$ show tables
ci
ci1
ci2
学海无涯,不进则退,日积跬步,以至千里。本博客所写内容仅为个人在学习和研究过程中的一些心得体会及总结笔记,仅代表个人观点。一切以官方为准,版本差异请自行甄别

浙公网安备 33010602011771号