通过不稳定的连接传输MongoDB数据库

时间:2016-08-23 01:37:23

标签: mongodb

我在我的本地计算机上运行了一个相当小的MongoDB实例(15GB),但我需要将其推送到远程服务器以便我的合作伙伴处理它。问题是双重的,

  1. 服务器只有30GB的可用空间
  2. 我的本地互联网连接非常不稳定
  3. 我尝试copyDatabase直接转移它,但是大约需要连续两天才能完成,其中连接几乎可以保证在某些时候失败。我也尝试了mongoexportmongodump,但两者都产生了大约40GB的文件,这些文件不适合服务器,并且忽略了传输40GB的困难。第一名。

    还有其他更稳定的方法我不知道吗?

1 个答案:

答案 0 :(得分:3)

由于您的mongodump输出比您的数据大得多,我假设您将MongoDB 3.0+与WiredTiger存储引擎一起使用并且您的数据已被压缩,但您的mongodump输出不是

与MongoDB 3.2一样,mongodumpmongorestore工具现在支持压缩(请参阅:Archiving and Compression in MongoDB Tools)。默认情况下不使用压缩。

对于您所描述的用例,我建议:

  • 使用mongodump --gzip创建一个dump目录,其中包含所有馆藏的压缩备份。

  • 使用rsync --partial SRC .... DEST或类似内容通过不稳定的互联网连接进行(可恢复)文件传输。

    注意:您可以告诉某些目录rsync忽略--exclude;例如,可能会跳过localtest数据库。或者,您可能希望使用mongodump --gzip --db dbname指定要备份的数据库。

  • 您的合作伙伴可以使用类似的rsync命令行转移到他们的环境,并使用mongorestore --gzip /path/to/backup这样的命令行来填充他们的本地MongoDB实例。

  • 如果您要持续转移转储,您可能会发现rsync的{​​{1}}选项非常有用。通常--checksum转移"更新"基于文件大小和修改时间的快速比较的文件。校验和涉及更多计算,但允许跳过与先前备份具有相同数据的集合(除了修改时间)。

如果您需要持续同步数据更改,您也可以更好地将数据库移动到云服务(例如,像MongoDB Atlas这样的数据库即服务提供商或您自己的MongoDB实例)。