将Sharded Cluster从3.2升级到3.4时的读取关注度为多数错误级别
我已经升级了MongodDB sharded集群,其中有两个副本集,从3.2到3.4。当前的存储引擎是MMAPv1。成功升级所有辅助,主要,配置服务器和mongos到3.4后,当我使用以下命令运行配置服务器时。将Sharded Cluster从3.2升级到3.4时的读取关注度为多数错误级别
sudo mongod --configsvr
我不断收到以下错误。
SHARDING [碎片注册表重装]碎片注册表的定期重装失败::由:: 115导致无法从配置服务器获取更新碎片列表,因为当前存储引擎不支持多数readConcerns;将在30秒后重试
而且我也无法将mongos与配置服务器连接。当我尝试使用连接它下面的命令
须藤mongos --configdb [IP-的-MY-配置服务器]:27019
它给了我下面的错误。
BADVALUE:configdb只支持副本集的连接字符串
我想mongos是无法连接到配置服务器由于配置服务器上的大多数readConcerns错误。
MongoDB手册中说 “当从副本集配置服务器读取时,MongoDB 3.4使用”多数“读取关注级别。”
,并使用“多数”的读的关注程度,WiredTiger must be used as storage engine.
因此,似乎我已经改用WiredTiger存储引擎,使其工作。但是,当我要切换到第二个副本集成员的WiredTiger存储引擎,根据手册
"This procedure completely removes a secondary replica set member’s data"
所以我坚持半途而废。情况是
- 配置服务器给出关于大多数readConcerns的错误。
- 我必须切换到WiredTiger才能摆脱它。
- 切换到WiredTiger将从辅助成员中删除数据。
- 由于配置服务器错误,在切换到WiredTiger过程期间,数据不会被复制回次要成员,并最终导致丢失所有数据(如果我错了,请更正)。
的问题是:
- 我可以做的MongoDB 3.4使用的“本地”读关怀水平从副本集中配置服务器读取时?
- 如何在不丢失数据的情况下切换到WiredTiger引擎?
你可以迁移副本中的每个节点设置as if it was a standalone,通过使用mongodump备份数据,与WiredTiger和空白数据目录重新启动,然后使用mongorestore来填充新的数据库。
这通常不推荐用于副本集节点,但仅仅是因为它更容易擦除辅助节点上的数据并让它与其他节点重新同步。这样做可以很好地工作,但涉及转储和恢复工具的一些更复杂的工作。
是否可以选择降级到v3.2,迁移到WiredTiger,然后升级? –
是的,如果找不到其他解决方案,可以这样做。 – umarxe