我的电脑上有一个mongodb数据库数据。我想将其上传到 amazon.com 服务器。
瓶颈是互联网连接。
一种方法是压缩文件,然后将其上传到服务器。但是如果在那之后我想将服务器数据与当前数据同步怎么办?
另一种是将服务器中的mongo设置为我计算机中数据的从属。但是,我的电脑是通过路由器连接到互联网的家用电脑。那么amazon服务器怎么知道我电脑的IP呢?IP 是 fe80::6df8:c5f9:bdb5:b9e2%15
好像是IPv6 IP。我不知道IP4的IP。
那么如何将我电脑中的一个服务器变成master呢?如何设置路由器传递连接?
然后是mongodump。快吗?
你通常使用哪一种?
首先,让我说我永远不建议这样做。我建议您在 EC2 上运行您的数据库,并只将其保存在那里。为了方便起见,在本地机器上有一个测试数据库,但是保持两者同步会很痛苦,正如您将从下面的答案中看到的那样。
您需要将基于 EC2 的服务器添加为辅助服务器,以便它从您的家用计算机同步(可能不可靠)并且需要您进行适当的设置来路由流量),或者您需要手动重播 oplog从 EC2 机器上的家用机器(基本上是复制功能)。您可以编写自己的程序来执行此操作,或者在 2.2 中您可以选择mongooplog 工具
它可能无法路由到您的计算机,您可能只有一个 IPV6 地址,但我对此表示怀疑。到这里:
http://www.whatsmyip.org/
这将告诉您可公开查看的 IP 地址是什么,然后您可以尝试从 EC2 连接到它,看看它是否有效。它可能不会 - ISP 通常会阻止侦听端口并使用其他有效的防火墙来防止这种情况发生。至于如何通过 rotuer 等传递连接,这个话题很大,实际上超出了 DBA 站点的范围。您应该尝试使用SuperUser来获得这方面的详细答案,并确保在询问时包括您的路由器型号。
Mongodump 基本上和你的数据库一样快——它必须遍历一个索引(通常是 _id),将它找到的每个文档写成 BSON。因此,这将受到您的机器执行此操作的速度的限制。它不太可能像基于简单文件的副本那样快。
我怀疑有人会以这种方式运行很长时间——它太容易失败了。我想大多数人会一次(或至少很少)执行上述方法之一,将他们的数据库移动到 EC2 或云上的其他地方,然后在那里使用它,而不是试图将两者作为一部分保持同步的副本集。