mysql 5.7.23 集群服务停止后重启

安装过程省。。。

官方文档连接:https://dev.mysql.com/doc/refman/5.7/en/mysql-innodb-cluster-production-deployment.html

推荐参考文章:https://blog.csdn.net/onlycool_me/article/details/78614400, http://blog.51cto.com/hequan/2059436

检测集群环境 dba.checkInstanceConfiguration('[email protected]:3306'); 每台一次检测

配置正正确的情况下 一次执行

#  mysqlsh  进入mysqlshell

方法一

mysql-js>shell.connect('[email protected]:6446'); 

mysql-js>var cluster = dba.getcluster('mycluster'); 获取集群簇

mysql-js> cluster.status(); 查看集群状态 如果没有报‘TypeError: Cannot read property 'status' of undefined’错的话继续,如果报错请直接跳到方法二

mysql-js>cluster.rejoinInstance('r[email protected]:3306');  手动重新加入实例

将实例添加回群集后,您可以验证该实例是否为ONLINE:

mysql-js> cluster.status(); 查看状态
从仲裁丢失中恢复群集mysql 5.7.23 集群服务停止后重启

当副本集中的大多数实例变为时UNREACHABLE,副本集将不再具有执行任何成员身份更改或执行R / W用户事务的仲裁。在此期间,您只能执行只读查询,以保持系统一致性和数据安全。

在以下屏幕截图中,您可以看到丢失其仲裁的群集:

mysql 5.7.23 集群服务停止后重启

由于缺少仲裁,执行以下函数来添加实例会产生错误:

mysql 5.7.23 集群服务停止后重启

要处理这种情况,您可以使用  cluster.forceQuorumUsingPartitionOf()API调用,但在使用它之前,请确保所有UNREACHABLE实例都是OFFLINE为了避免创建一个裂脑情景,在该情景中您将有两个分别接收更新的组。

1    mysql-js> cluster.forceQuorumUsingPartitionOf('[email protected]:3310');
强制仲裁功能完成后,您可以检查群集的状态:mysql 5.7.23 集群服务停止后重启

mysql-js> cluster.status();
如您所见,实例将其状态从更改
UNREACHABLEMISSING,现在群集可以执行写入操作。您现在可以添加新实例,例如:mysql 5.7.23 集群服务停止后重启

mysql-js> cluster.addInstance('[email protected]:3313');
再次检查群集状态,您会注意到新实例已添加到群集中:mysql 5.7.23 集群服务停止后重启

mysql 5.7.23 集群服务停止后重启

一旦您知道(MISSING) 实例又回来了  ONLINE,如果实例没有自动重新加入群集的持久配置,您可以手动将它们重新加入群集:
mysql-js> cluster.rejoinInstance('[email protected]:3312');

mysql-js> cluster.status();

现在,群集中的所有实例都处于联机状态:mysql 5.7.23 集群服务停止后重启

方法二

以上都不行的话执行以下命令

mysql-js>  dba.rebootClusterFromCompleteOutage('mycluster');

mysql-js> var cluster = dba.getCluster("mycluster")

mysql-js> cluster.status(); 查看状态 ,添加集群实例同上; 如果还不成功 请查看方法三

方法三

dba.dropMetadataSchema()当无法恢复群集时, 该方法应仅用作最后的手段。它无法撤消。

风险大 且用且珍惜 如果重来还是有问题 只能使用最后杀手锏了 请看  方法四

方法四

备份好原来数据,一定要备份原来数据啊 数据库卸了重装(卸载教程在下面,自己看着办吧,当心一失手成千古恨!)

https://www.cnblogs.com/Lenbrother/articles/6203620.html