Skip to content

mongo 数据同步

介绍

  • 使用导出导入(备份恢复)mongodumpmongorestore 来将生产的数据同步到测试库中
  • 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"