我必须替换仅包含 1 个分片的集群中的 mongodb 配置服务器。
错误地,我在没有任何数据的情况下启动了新的配置服务器,并在日志中收到以下消息:
[CheckConfigServers] 错误:无法验证配置服务器是否同步::原因是::配置服务器 configserver1.mydomain.com:27019 和 configserver2.mydomain.com:27019 不同
按照'的程序http://docs.mongodb.org/manual/tutorial/replace-config-server/',我尝试从 mongos 停止平衡器。但我收到一条错误消息。我只能在重新启动空配置服务器后停止平衡器。
我将 dbpath 内容从 configserver2 复制到 configserver1,一切看起来都很好。
我想确保在这些操作期间没有数据被放错或丢失。集群中只有 1 个分片,数据会放错吗?
谢谢,
格雷格。
答案1
您在启动时收到的警告消息CheckConfigServers
是一种健全性检查,以防止在配置服务器处于不一致状态时发生任何元数据更改(例如,由于平衡回合而导致的块迁移)。
停止具有空 dbpath 的配置服务器并从已知良好的配置服务器重新复制数据是正确的操作。MongoDB配置服务器是不是副本集,并通过分片集群中的 mongod/mongos 服务器协调的两阶段提交保持同步。
如果您只有一个分片,那么数据就不会放错;它无处可迁移。
此外,如果您已启用分片但尚未对任何集合进行分片,则所有数据将存储在主分片上。
答案2
我认为你应该可以运行打印分片状态()命令 。