mongo 数据同步
介绍
- 使用导出导入(备份恢复)
mongodump
和mongorestore
来将生产的数据同步到测试库中 mongorestore
加上--drop
参数来保证数据完全一致- 因本地没有安装
mongo 客户端
,所以是通过docker/mongo
来使用mongo*
相关命令的
代码
bash
#!/bin/bash
# mongo 同步生产数据库数据到本地
# 同步时会先删除,所以同步后会完全一致
prod_mongo_host="dds-xxx.mongodb.rds.aliyuncs.com"
prod_mongo_port=3717
prod_mongo_username="root"
prod_mongo_password="xxx"
test_mongo_host="127.0.0.1"
test_mongo_port=27017
test_mongo_username="root"
test_mongo_password="123456"
# 要同步的库
sync_dbname="popams"
# 获取 mongo 容器 id
cid=`/usr/bin/docker ps | grep mongo | awk '{print $1}'`
echo $cid
cmd="mongodump \
-h $prod_mongo_host \
--port $prod_mongo_port \
-u $prod_mongo_username \
-p $prod_mongo_password \
--authenticationDatabase=admin \
-d $sync_dbname; \
mongorestore \
--drop \
-h $test_mongo_host \
--port $test_mongo_port \
-u $test_mongo_username \
-p $test_mongo_password \
--authenticationDatabase=admin \
--dir=dump; \
"
echo $cmd
# mongo 备份导出文件;因需要在容器中运行,docker exec 不能加 -it 参数
/usr/bin/docker exec $cid /bin/bash -c "$cmd"