请参阅http://docs.mongodb.org/manual/core/sharding-internals/#balancing-internals。
它有以下短语:
“当MongoDB开始迁移一个块时,数据库开始将数据复制到新服务器并跟踪传入的写入操作。”
我的问题是这些传入的写入操作保存在哪里?如果它在内存中,那么我需要如何调用getLastError并确保数据已经与磁盘同步。谢谢!
答案 0 :(得分:1)
首先,如果你想保证写入,无论你是否使用分片,你都应该调用getLastError(或使用你的驱动程序的等价物进行安全写入)。
就迁移期间的操作会发生什么。您可以在常见问题解答中查看这两个问题的答案,找到有关飞行中写入数据的答案:
http://docs.mongodb.org/manual/faq/sharding/#what-does-writebacklisten-in-the-log-mean
这两种机制描述了发生的情况,具体取决于操作的性质。迁移的原始分片确保将写入“发送”到目标分片,或者写回机制将它们发送回mongos进程(它们将自动重试)。