MySQL Shell无法拉起MGR集群解决办法

Posted 老叶茶馆_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL Shell无法拉起MGR集群解决办法相关的知识,希望对你有一定的参考价值。

* GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。

mysql Shell要重新拉起一个MGR集群时,可能会提示下面的错误信息:

Dba.rebootClusterFromCompleteOutage: Unable to get an InnoDB cluster handle. The instance '172.16.130.197:3306' may belong to a different cluster from the one registered in the Metadata since the value of 'group_replication_group_name' does not match the one registered in the Metadata: possible split-brain scenario. Please retry while connected to another member of the cluster. (RuntimeError)

意思是该节点属于其他MGR集群(从元数据读取到的 group_replication_group_name 值判断的),因此不能直接拉起。

这种错误常见于MySQL  5.7版本构建的MGR集群环境下,如果是运行MySQL 8.0的话则一般很少见。

之所以会这样,是因为MySQL 5.7中还不支持 SET PERSIST 功能。

在MySQL 8.0中,用MySQL Shell构建MGR集群时,会随机生成一个UUID作为 group_replication_group_name,并以 SET PERSIST 的方式持久化(保存到 mysqld-auto.cnf 文件中),实例重启时还能继续读取。

而在MySQL 5.7中,因为没有这个功能,实例重启时还会从原来的 my.cnf 中读取旧的 group_replication_group_name 值,导致被判断为该节点属于另一个集群。

现在已经知道问题的原因了,解决办法也简单。

  1. 获取正确的 group_replication_group_name。实例重启完成后,读取 mysql_innodb_cluster_metadata.clusters 这个元数据表,获取正确的 group name。

mysql> select attributes->'$.group_replication_group_name' from clusters;
+----------------------------------------------+
| attributes->'$.group_replication_group_name' |
+----------------------------------------------+
| "bc664a9b-9b5b-11ec-8a73-525400c5601a"       |
+----------------------------------------------+
  1. 在每个节点上手动修改 group_replication_group_name

mysql> set global group_replication_group_name = "bc664a9b...";
  1. 再次执行 dba.rebootClusterFromCompleteOutage() 就行了。

MySQL  172.16.130.197:3306 ssl  JS > dba.rebootClusterFromCompleteOutage()
Restoring the default cluster from complete outage...
...

Enjoy GreatSQL :)


《深入浅出MGR》视频课程

戳此小程序即可直达B站

https://www.bilibili.com/medialist/play/1363850082?business=space_collection&business_id=343928&desc=0



文章推荐:


想看更多技术好文,点个“在看”吧!

以上是关于MySQL Shell无法拉起MGR集群解决办法的主要内容,如果未能解决你的问题,请参考以下文章

FAQ应用内支付服务无法拉起支付页面常见原因分析和解决方法

vm虚拟机Centos7中设置了静态IP后,docker无法拉取镜像

Android 微信H5支付,无法拉起微信支付页面

Android 微信H5支付,无法拉起微信支付页面

Android 微信H5支付,无法拉起微信支付页面

MGR集群搭建