[MongoDB]:当平衡器进行迁移时,保存在哪里的传入写入操作?

时间:2012-08-28 07:38:37

标签: mongodb

请参阅http://docs.mongodb.org/manual/core/sharding-internals/#balancing-internals

它有以下短语:

“当MongoDB开始迁移一个块时,数据库开始将数据复制到新服务器并跟踪传入的写入操作。”

我的问题是这些传入的写入操作保存在哪里?如果它在内存中,那么我需要如何调用getLastError并确保数据已经与磁盘同步。谢谢!

1 个答案:

答案 0 :(得分:1)

首先,如果你想保证写入,无论你是否使用分片,你都应该调用getLastError(或使用你的驱动程序的等价物进行安全写入)。

就迁移期间的操作会发生什么。您可以在常见问题解答中查看这两个问题的答案,找到有关飞行中写入数据的答案:

http://docs.mongodb.org/manual/faq/sharding/#what-happens-if-a-client-updates-a-document-in-a-chunk-during-a-migration

http://docs.mongodb.org/manual/faq/sharding/#what-does-writebacklisten-in-the-log-mean

这两种机制描述了发生的情况,具体取决于操作的性质。迁移的原始分片确保将写入“发送”到目标分片,或者写回机制将它们发送回mongos进程(它们将自动重试)。