安装过程省。。。
官方文档连接: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('root@db1:3306'); 每台一次检测
配置正正确的情况下 一次执行
# mysqlsh 进入mysqlshell
方法一
mysql-js>shell.connect('root@localhost:6446');
mysql-js>var cluster = dba.getcluster('mycluster'); 获取集群簇
mysql-js> cluster.status(); 查看集群状态 如果没有报‘TypeError: Cannot read property 'status' of undefined’错的话继续,如果报错请直接跳到方法二
mysql-js>cluster.rejoinInstance('root@ic01-mysql-1:3306'); 手动重新加入实例
将实例添加回群集后,您可以验证该实例是否为ONLINE:
mysql-js> cluster.status(); 查看状态
从仲裁丢失中恢复群集
当副本集中的大多数实例变为时UNREACHABLE
,副本集将不再具有执行任何成员身份更改或执行R / W用户事务的仲裁。在此期间,您只能执行只读查询,以保持系统一致性和数据安全。
在以下屏幕截图中,您可以看到丢失其仲裁的群集:
由于缺少仲裁,执行以下函数来添加实例会产生错误:
要处理这种情况,您可以使用 cluster.forceQuorumUsingPartitionOf()
API调用,但在使用它之前,请确保所有UNREACHABLE
实例都是OFFLINE
为了避免创建一个裂脑情景,在该情景中您将有两个分别接收更新的组。
1 mysql-js> cluster.forceQuorumUsingPartitionOf('root@localhost:3310');
强制仲裁功能完成后,您可以检查群集的状态:
mysql-js> cluster.status();
如您所见,实例将其状态从更改UNREACHABLE
为MISSING
,现在群集可以执行写入操作。您现在可以添加新实例,例如:
mysql-js> cluster.addInstance('root@localhost:3313');
再次检查群集状态,您会注意到新实例已添加到群集中:
一旦您知道(MISSING)
实例又回来了 ONLINE
,如果实例没有自动重新加入群集的持久配置,您可以手动将它们重新加入群集:
mysql-js> cluster.rejoinInstance('root@localhost:3312');
mysql-js> cluster.status();
方法二
以上都不行的话执行以下命令
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