我已将具有两个副本集的 MongodDB 分片集群从 3.2 升级到 3.4。当前的存储引擎是 MMAPv1。在成功将所有辅助服务器、主服务器、配置服务器和 mongos 升级到 3.4 后,当我使用以下命令运行配置服务器时。
sudo mongod --configsvr
我不断收到以下错误。
SHARDING [shard registry reload] Periodic reload of shard registry failed :: 由于 :: 115 由于当前存储引擎不支持多数 readConcerns 无法从配置服务器获取更新的分片列表;将在 30 秒后重试
而且我无法将 mongos 与配置服务器连接。当我尝试使用以下命令连接它时
sudo mongos --configdb [ip-of-my-config-server]:27019
它给了我以下错误。
BadValue:configdb 仅支持副本集连接字符串
我想由于配置服务器上的大多数 readConcerns 错误,mongos 无法连接到配置服务器。
MongoDB 手册说“从副本集配置服务器读取时,MongoDB 3.4 使用“多数”的读取关注级别。
并且要使用“多数”的读取关注级别,必须使用 WiredTiger 作为存储引擎。
所以看来我必须切换到 WiredTiger 存储引擎才能使其工作。但是当我打算切换到一个辅助副本集成员的WiredTiger存储引擎时,根据手册
所以我被卡在了一半。情况是
- 配置服务器给出关于多数 readConcerns 的错误。
- 我必须切换到 WiredTiger 才能摆脱它。
- 切换到 WiredTiger 将从次要成员中删除数据。
- 由于配置服务器错误,在切换到 WiredTiger 过程期间,数据不会被复制回辅助成员,最终我将丢失所有数据(如果我错了,请更正)。
问题是:
- 从副本集配置服务器读取时,我可以让 MongoDB 3.4 使用“本地”的读取关注级别吗?
- 如何在我的场景中切换到 WiredTiger 引擎而不丢失数据?