Innodb Cluster upgradeMetadata on broken cluster

Innodb Cluster upgradeMetadata on broken cluster

我们有一个由 3 个节点组成的集群,其中 2 个处于离线状态(丢失),我无法让它们自动重新加入集群,只有主节点处于在线状态。

通常,您可以使用innodb admin:

var 集群 = dba.getCluster();

但我无法使用集群实例,因为元数据不是最新的。但是我无法升级元数据,因为缺少的成员需要在线才能使用 dba.upgradeMetadata()。 (第 22 条军规)

我尝试使用以下方法解散集群:

var 集群 = dba.rebootClusterFromCompleteOutage();

cluster.dissolve({force:true});

但这也需要更新元数据。

问题是,如何完全解散集群或升级元数据,以便我可以使用集群。方法。

如果您有一个集群,其中每个节点都升级到最新版本的 mysql 并且该集群未完全运行并且您需要更新 mysqlsh 的元数据,您将需要使用旧版本的 mysqlsh,例如 https://downloads.mysql.com/archives/shell/ 来备份集群和 运行。一旦启动并且 运行 您可以在 R/W 节点上使用 dba.upgrademetadata - 确保更新所有路由器,否则它们将失去连接。

这个“先有鸡还是先有蛋”的问题已在 MySQL Shell 8.0.20 中修复。 dba.rebootClusterFromCompleteOutage() 现在允许在这种情况下使用:

BUG#30661129 – DBA.UPGRADEMETADATA() 和 DBA.REBOOTCLUSTERFROMCOMPLETEOUTAGE() 相互阻塞

更多信息位于:https://mysqlserverteam.com/mysql-shell-adminapi-whats-new-in-8-0-20/