我不得不在一个只包含1个分片的集群中replace一个mongodbconfiguration服务器。
错误地,我没有任何数据启动新的configuration服务器,并在日志中得到以下消息:
[CheckConfigServers]错误:无法validationconfiguration服务器是否同步::由::configuration服务器configserver1.mydomain.com:27019和configserver2.mydomain.com:27019不同
按照http://docs.mongodb.org/manual/tutorial/replace-config-server/上的程序,我试图阻止mongos的平衡器。 但是我收到了错误信息。 我只能在重新启动空configuration服务器后停止平衡器。
我从configserver2复制dbpath内容到configserver1,一切都很好。
我想确保在这些操作过程中没有任何数据被错放或丢失。 在集群中只有1个分片,数据是否可以放错位置?
谢谢,
格雷格。
您在启动时收到的CheckConfigServers警告消息是一个完整性检查,以防止在configuration服务器处于不一致状态时发生任何元数据更改(例如,由于轮循平衡导致的块迁移)。
使用空的dbpath停止configuration服务器,并从已知的良好configuration服务器重新复制数据是正确的操作。 MongoDB configuration服务器 不是副本集,并且通过分片群集中的mongod / mongos服务器协调的两阶段提交保持同步。
如果你只有一个碎片而不是数据不会错位; 它没有地方迁移到。
此外,如果启用了分片但未分割任何集合,则数据将全部位于主分片上。
我认为你应该可以正常运行printShardingStatus()命令。