MongoDB 使用技巧记录(二)
一:备份恢复
# mongoimport/mongoexport方式
## 导入数据:
./mongoimport --port 27022 -d kas_code -c QCC_QUALITY_RECORD -uroot -p lww123 --authenticationDatabase admin --file /home/sanyuanse/kas/QCC_QUALITY_RECORD.json
## 导出数据:
./mongoexport --port 27022 -d kas_code -c QCC_CODE_LOG -uroot -p kas_2020_roo --authenticationDatabase admin -o /home/sanyuanse/kas/QCC_CODE_LOG.json
# mongodump/mongorestore方式
--备份单个表
mongodump -u superuser -p 123456 --port 27017 --authenticationDatabase admin -d myTest -c d -o /backup/mongodb/myTest_d_bak_201507021701.bak
--备份单个库
mongodump -u superuser -p 123456 --port 27017 --authenticationDatabase admin -d myTest -o /backup/mongodb/
--备份所有库
mongodump -u superuser -p 123456 --authenticationDatabase admin --port 27017 -o /root/bak
--备份所有库推荐使用添加--oplog参数的命令,这样的备份是基于某一时间点的快照,只能用于备份全部库时才可用,单库和单表不适用:
mongodump -h 127.0.0.1 --port 27017 --oplog -o /root/bak
--同时,恢复时也要加上--oplogReplay参数,具体命令如下(下面是恢复单库的命令):
mongorestore -d swrd --oplogReplay /home/mongo/swrdbak/swrd/
--恢复单个库:
mongorestore -u superuser -p 123456 --port 27017 --authenticationDatabase admin -d myTest /backup/mongodb/
--恢复所有库:
mongorestore -u superuser -p 123456 --port 27017 --authenticationDatabase admin /root/bak
--恢复单表
mongorestore -u superuser -p 123456 --authenticationDatabase admin -d myTest -c d /backup/mongodb/myTest_d_bak_201507021701.bak/myTest/d.bson
二:备份恢复-docker
备份:
#ubuntu下默认为dash,注意bash路径
#!/usr/bin/bash
for i in admin player rmdb services
#for i in "admin"
do
echo $i
mkdir -p /data/mongodb/backup/`date +%Y-%m-%d`
docker exec -it 7d42f5a6d07c mongodump -h 192.168.102.51:27017 -d ${i} -o /data/backup/`date +%Y-%m-%d` -u=root -p=Aa123456 --authenticationDat
abase=admin
done
#tar
tar zcvf mongodb-`date +%Y-%m-%d`.tar.gz /data/mongodb/backup/`date +%Y-%m-%d`
#del
cd /data/mongodb/backup && /bin/rm -rf `date +%Y-%m-%d`
恢复:
确认主master节点
docker exec -it mongodb02 mongo admin
#!/bin/bash
for i in `ls 2023-08-14`
#for i in "admin"
do
echo $i
docker exec -it mongodb02 mongorestore -h 192.168.10.14:27019 -d ${i} /data/backup/`date +%Y-%m-%d`/${i} --drop -u=root -p=root --authenticationDatabase=admin
done
###
数据备份 mongodump
./mongodump -h localhost:27022 -d lison -o /usr/local/mongodb/mongodb-linux-x86_64-3.4.18/backup
-h :指定ip和端口; -d :备份的数据库名称 ; -o:指定备份的路径
其本质为:执行查询,然后写入文件;
数据恢复 mongorestore
./mongorestore -h localhost:27022 -d lison /usr/local/mongodb/mongodb-linux-x86_64-3.4.18/backup/lison --drop
--drop 已存在lison库则删除原数据库,去掉--drop则是合并
数据导出 mongoexport(针对集合)
./mongoexport -h localhost:27022 -d lison -c users -f id,username,age,salary --type=csv -o /usr/local/mongodb/mongodb-linux-x86_64-3.4.18/backup/users.csv
-c :指定导出的集合; -f :要导出的字段; --type:导出的文件格式类型[csv,json]
数据导入 mongoimport(针对集合)
./mongoimport -h localhost:27022 -d lison -c users /usr/local/mongodb/mongodb-linux-x86_64-3.4.18/backup/users.csv --upsert
--upsert 表示更新现有数据,如果不适用—upsert,则导入时已经存在的文档会报id重复,数据不再插入,也可以使用—drop删除原有数据