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