Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过不稳定的连接传输MongoDB数据库_Mongodb - Fatal编程技术网

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

通过不稳定的连接传输MongoDB数据库,mongodb,Mongodb,我有一个相当小的MongoDB实例(15GB)在本地机器上运行,但我需要将其推送到远程服务器,以便我的合作伙伴处理它。问题是双重的 服务器只有30GB的可用空间 我的本地互联网连接非常不稳定 我尝试了copyDatabase直接传输它,但需要连续两天才能完成,在这段时间内,连接几乎肯定会在某个点失败。我还尝试了mongoexport和mongodump两种方法,但这两种方法都会生成约40GB的文件,无法安装在服务器上,这就忽略了首先传输40GB的困难 有没有我不知道的另一种更稳定的方法 由于您的

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

  • 服务器只有30GB的可用空间
  • 我的本地互联网连接非常不稳定
  • 我尝试了
    copyDatabase
    直接传输它,但需要连续两天才能完成,在这段时间内,连接几乎肯定会在某个点失败。我还尝试了
    mongoexport
    mongodump
    两种方法,但这两种方法都会生成约40GB的文件,无法安装在服务器上,这就忽略了首先传输40GB的困难


    有没有我不知道的另一种更稳定的方法

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

    与MongoDB 3.2一样,
    mongodump
    mongorestore
    工具现在支持压缩(请参阅:)。默认情况下不使用压缩

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

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

    • 通过不稳定的internet连接进行(可恢复的)文件传输时,请使用或类似工具

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

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

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


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

    因为您的
    mongodump
    输出比您的数据大得多,我假设您将MongoDB 3.0+与WiredTiger存储引擎一起使用,并且您的数据被压缩,但您的
    mongodump
    输出没有压缩

    与MongoDB 3.2一样,
    mongodump
    mongorestore
    工具现在支持压缩(请参阅:)。默认情况下不使用压缩

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

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

    • 通过不稳定的internet连接进行(可恢复的)文件传输时,请使用或类似工具

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

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

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


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

    这不是一个答案,而是一个选择,您可以将数据库拆分为小于1GB的数据片段并发送它。如果这很重要,您可以为磁盘创建快照,并将快照复制到新磁盘,然后将其发送到您的partner@JohnZeng我们都需要能够改变数据并看到变化,重复复制和删除整个数据库是一种选择,但是我不想用这个,但是分裂的想法并不坏,我想你可以在同一个数据库上工作。也许你可以把它们上传到云服务上?像AWS一样,您可以将硬盘发送给他们,他们将帮助您导入数据,然后您可以访问云端数据库。@JohnZeng这是一个出色的开箱即用的解决方案,但不幸的是,我们的预算和日程都很紧,无论如何,这不是一个答案,而是一个选择,您可以将数据库拆分为小于1GB的数据并发送。如果这很重要,您可以为磁盘创建快照,并将快照复制到新磁盘,然后将其发送到您的partner@JohnZeng我们都需要能够改变数据并看到变化,重复复制和删除整个数据库是一种选择,但是我不想用这个,但是分裂的想法并不坏,我想你可以在同一个数据库上工作。也许你可以把它们上传到云服务上?像AWS一样,您可以将硬盘发送给他们