mongodb 如何把生产环境的数据库的数据克隆到dev环境的服务器,做测试用?

调试的时候经常测试服务器正常,而生产环境有bug,有时候不得不本地检查,然后每次更新代码后发布到生产环境,然后就服务经常短时间下线,有没有办法把生产环境的数据克隆到dev环境,这样就不用总是下线了

阅读 3.8k
3 个回答

mongodb本身就支持备份还原,你可以在nodejs服务中增加备份还原接口,从生产环境的服务上下载备份文件,在dev环境的服务上上传备份文件执行还原操作。

bin目录下执行导出和导入

$ ./mongoexport -u <username> -p <password> -h <host> -d <db> -c <collection> -o <output-path-with-name.dat>

$ ./mongoimport -u <username> -p <password> -h <host> -d <db> -c <collection> --file=<output-path-with-name.dat>

取决于你的需求,有不同的做法。举个例子,如果是一次性的工作,可以考虑复制一份线上库的数据文件下来恢复成新的集群:

  1. 停止一个线上的secondary
  2. 复制dbpath下所有文件到dev环境
  3. 以standalone模式启动dev(不带replSetName)
  4. 删除local数据库:use local; db.dropDatabase();

此时这就是一个全新的库了。如果你想再构建复制集,可以加上replSetName并重启,然后执行复制集初始化的操作。
如果你想从线上持续复制数据到dev,那会更麻烦一些。如果有需要再另行讨论。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题