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
由于交织写操作留下的命名空间冲突而失败。有关完整过程,请参阅从现有分片群集中删除分片。