概述
MySQL的高可用架构无论是社区还是官方,一直在技术上进行探索,这么多年提出了多种解决方案,比如MMM, MHA, NDB Cluster, Galera Cluster, InnoDB Cluster, 腾讯的PhxSQL, MySQL Fabric. 本文主要介绍MySQL的高可用架构InnoDB Cluster。 MySQL InnoDB Cluster解决方案其实是由MySQL的几个不同产品和技术组成的,比如MySQL Shell, MySQL Router, Group Replication.
安装mysql, mysql shell, mysql router
略
部署多个实例
mysqlsh
mysql-js> dba.deployLocalInstance(3310)
mysql-js> dba.deployLocalInstance(3320)
mysql-js> dba.deployLocalInstance(3330)
3310作为master, 3320和3330作为slave
创建集群
mysql-js> c root@localhost:3310
mysql-js> cluster = dba.createCluster('mycluster')
向集群添加实例
mysql-js> cluster.addInstance("root@localhost:3320")
mysql-js> cluster.addInstance("root@localhost:3330")
查看集群状态
mysql-js> cluster.status()
{
"clusterName": "mycluster",
"defaultReplicaSet": {
"status": "Cluster tolerant to up to ONE failure.",
"topology": {
"localhost:3310": {
"address": "localhost:3310",
"status": "ONLINE",
"role": "HA",
"mode": "R/W",
"leaves": {
"localhost:3330": {
"address": "localhost:3330",
"status": "ONLINE",
"role": "HA",
"mode": "R/O",
"leaves": {}
},
"localhost:3320": {
"address": "localhost:3320",
"status": "ONLINE",
"role": "HA",
"mode": "R/O",
"leaves": {}
}
}
}
}
}
}
部署MySQL Router
mysqlrouter --bootstrap localhost:3310
返回信息
...
Please enter the administrative MASTER key for the MySQL InnoDB cluster:
MySQL Router has now been configured for the InnoDB cluster 'mycluster'.
The following connection information can be used to connect to the cluster.
Classic MySQL protocol connections to cluster 'mycluster':
- Read/Write Connections: localhost:6446
- Read/Only Connections: localhost:6447
启动Mysql Router
mysqlrouter&
客户端连接Router
mysqlsh --uri root@localhost:6446
mysql-js> sql
Switching to SQL mode... Commands end with ;
mysql-sql> select @@port;
+--------+
| @@port |
+--------+
| 3310 |
+--------+
1 row in set (0.00 sec)
故障模拟
mysql-js> dba.killLocalInstance(3310)
切换到sql模式,执行sql语句Select @@port
mysql-js> sql
Switching to SQL mode... Commands end with ;
mysql-sql> SELECT @@port;
ERROR: 2013 (HY000): Lost connection to MySQL server during query
The global session got disconnected.
Attempting to reconnect to 'root@localhost:6446'...
The global session was successfully reconnected.
mysql-sql> SELECT @@port;
+--------+
| @@port |
+--------+
| 3330 |
+--------+
1 row in set (0.00 sec)
可以看到,故障被检查到了,并自动重连,转到了 3330 实例
参考资料
https://dev.mysql.com/doc/refman/5.7/en/mysql-innodb-cluster-userguide.html
http://mysqlserverteam.com/mysql-innodb-cluster-setting-up-a-real-world-cluster/
最后
以上就是激动画笔为你收集整理的MySQL高可用架构InnoDB Cluster (和NDB Cluster是两码事)的全部内容,希望文章能够帮你解决MySQL高可用架构InnoDB Cluster (和NDB Cluster是两码事)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复