在将Sharded Cluster从3.2升级到3.4

时间:2017-03-01 09:51:59

标签: mongodb upgrade sharding replicaset wiredtiger

我升级了MongodDB分片群集,其中包含两个3.2到3.4的副本集。当前的存储引擎是MMAPv1。成功将所有secondary,primary,config服务器和mongos升级到3.4后,当我使用以下命令运行config server时。

sudo mongod --configsvr

我一直在关注错误。

SHARDING [shard registry reload]定期重新加载shard注册表失败::由:: 115引起无法从配置服务器获取更新的分片列表,因为当前存储引擎不支持多数readConcerns;将在30年后重试

而且我也无法将mongos与配置服务器连接起来。当我尝试使用以下命令连接它时

sudo mongos --configdb [ip-of-my-config-server]:27019

它给了我以下错误。

BadValue:configdb仅支持副本集连接字符串

我认为由于配置服务器上的多数readConcerns错误,mongos无法连接到配置服务器。

MongoDB手册说 "从副本集配置服务器读取时,MongoDB 3.4使用的读取关注级别为"多数"。"

并使用"多数",WiredTiger must be used as storage engine.

的阅读关注度

所以我似乎必须切换到WiredTiger存储引擎才能使其正常工作。但是当我打算转换到辅助副本集成员的WiredTiger存储引擎时,根据手册

"This procedure completely removes a secondary replica set member’s data"

所以我被困了一半。情况是

  1. 配置服务器提供有关多数readConcer的错误。
  2. 我必须切换到WiredTiger才能摆脱它。
  3. 切换到WiredTiger将从辅助成员中删除数据。
  4. 由于配置服务器错误,在切换到WiredTiger程序期间,数据不会被复制回辅助成员,最终我将丢失所有数据(如果我错了,请更正)。
  5. 问题是:

    1. 我可以使MongoDB 3.4使用"本地"的读取关注级别从副本集中读取配置服务器?
    2. 如何切换到WiredTiger引擎而不会丢失我的方案中的数据?

1 个答案:

答案 0 :(得分:0)

您可以迁移副本集as if it was a standalone中的每个节点,方法是使用mongodump备份数据,使用WiredTiger和空白数据目录重新启动,然后使用mongorestore填充新数据库。

这通常不建议用于副本集节点,但这只是因为它更容易擦除辅助节点上的数据并让它从其他节点重新同步。这样做可以很好地工作,但是使用转储和恢复工具可以为你做一些繁琐的工作。