面试题答案
一键面试- 确认分片状态
- 操作:使用
sh.status()
命令查看分片集群的当前状态,包括各个分片的分布、数据块的分配等情况。 - 重点关注:确保清楚了解每个分片上的数据分布情况,为后续迁移数据做准备。确认是否有正在进行的后台操作,如数据块迁移等,若有需等待其完成或合理处理。
- 操作:使用
- 迁移数据
- 操作:使用
moveChunk
命令将待删除分片上的数据块迁移到其他分片。例如,db.adminCommand({moveChunk: "<database>.<collection>", find: {<shard key condition>}, to: "<target shard>"})
。 - 重点关注:迁移过程中密切监控数据迁移进度,可通过
sh.status()
查看。确保迁移条件设置准确,避免误迁移数据。同时,要关注目标分片的负载情况,避免因数据大量涌入导致性能问题。
- 操作:使用
- 从集群中移除分片
- 操作:使用
sh.removeShard("<shard name>")
命令将分片从集群中移除。 - 重点关注:确认分片上的数据已全部迁移完毕,移除操作不可逆,若数据未迁移完将导致数据丢失。移除过程中观察集群的响应,若出现异常中断,需及时排查原因并处理。
- 操作:使用
- 清理相关配置
- 操作:检查并清理与被删除分片相关的配置信息,如配置服务器中残留的分片元数据等。
- 重点关注:小心操作,避免误删其他重要配置数据。确保配置信息清理干净,防止对后续集群操作产生干扰。