movePrimary¶在分片集群中,movePrimary重新分配主分片,该
主分片将所有未分片的集合保存在数据库中。 movePrimary第一变化在群集元数据中的主碎片,然后迁移所有未分片的集合到指定的碎片。使用以下格式的命令:
例如,以下命令将主分片从test移至
shard0001:
命令返回时,数据库的主要分片位置已切换到指定的分片。要完全停用一个碎片,请使用removeShard命令。
movePrimary是仅适用于mongos实例的管理命令。
警告
启动后movePrimary,千万不能在该数据库中对任何unsharded集合执行任何读取或写入操作,直到命令完成。在迁移期间针对这些集合发出的读取或写入操作可能导致意外行为,包括迁移操作的潜在失败或数据丢失。
mongos对...使用"majority"关注
movePrimary。
movePrimary维护窗口期间的问题¶movePrimary根据数据库的大小以及诸如网络运行状况或计算机资源之类的因素,可能需要花费大量时间才能完成。迁移期间针对数据库发出的读取或写入操作可能导致意外行为,包括迁移操作的潜在失败或数据丢失。
考虑安排一个维护时段,在此期间应用程序停止对集群的所有读取和写入。movePrimary
在计划内的停机期间发出可减轻由于交错读取或写入数据库中未分片集合而导致遇到未定义行为的风险。
movePrimary移动未分片的集合¶警告
如果使用movePrimary命令移动
未分片的集合,则必须:
mongos实例和所有分片
mongod成员(包括辅助成员);flushRouterConfig在所有mongos实例和所有分片mongod成员(包括辅助成员)上使用命令
。否则,您可能会丢失读取数据,并且可能不会将数据写入正确的分片。要恢复,您必须手动进行干预。
如果使用movePrimary命令移动
未分片的集合,则必须:
mongos实例;flushRouterConfig在所有mongos实例上使用该命令
。否则,您可能会丢失读取数据,并且可能不会将数据写入正确的分片。要恢复,您必须手动进行干预。
movePrimary如果目标分片包含有冲突的集合名称空间,则失败。例如:
movePrimary需要更改hr数据库的主分片。hr时movePrimary会对其执行写操作。写操作在原始主分片中创建集合。movePrimary以恢复hr数据库的原始主分片。movePrimary 由于交织写操作留下的命名空间冲突而失败。有关完整过程,请参阅从现有分片群集中删除分片。