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是两码事)相关推荐

  1. 从mysql高可用架构看高可用架构设计

    高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间. 假设系统一直能够提供服务,我们说系统的可用性是100%.如果 ...

  2. MySQL高可用方案-PXC(Percona XtraDB Cluster)环境部署详解

    MySQL高可用方案-PXC(Percona XtraDB Cluster)环境部署详解 Percona XtraDB Cluster简称PXC.Percona Xtradb Cluster的实现是在 ...

  3. 第5章 MySQL高可用架构设计

    第5章 MySQL高可用架构设计 数据库复制 复制解决了什么问题????? 非共享架构 二进制日志 binlog工具 查看日志格式 show variables like "binlog_f ...

  4. 探索MySQL高可用架构之MHA(6)

    探索MySQL高可用架构之MHA(6) -----构建mysql高可用系列(共9篇) 上一篇文章介绍了本次架构的Atlas读写分离! 本篇文章主要介绍本次架构中的keepalive部分! 什么是Kee ...

  5. MySQL 高可用架构在业务层面的应用分析

    MySQL 高可用架构在业务层面的应用分析 http://mp.weixin.qq.com/s?__biz=MzAxNjAzMTQyMA==&mid=208312443&idx=1&a ...

  6. 搭建MySQL高可用架构MHA

    搭建MySQL高可用架构MHA v1.0 MHA简介 MHA的主要目的是自动化master故障转移和slave自动提升为master,在较短时间(一般为10-30秒)的停机时间,可以避免复制和一致性问 ...

  7. Heartbeat+DRBD+MySQL高可用架构方案与实施过程细节 【转】

    文章出处:Heartbeat+DRBD+MySQL高可用架构方案与实施过程细节 [转]             mysql数据库高可用高扩展性架构方案实施[原] Heartbeat+DRBD+MySQ ...

  8. mysql高可用架构介绍_介绍详细的MySQL高可用方案

    概述 MySQL高可用,顾名思义就是当MySQL主机或服务发生任何故障时能够立马有其他主机顶替其工作,并且最低要求是要保证数据一致性.因此,对于一个MySQL高可用系统需要达到的目标有以下几点: 数据 ...

  9. MySQL高可用架构知识整理

    文章目录 (1)MySQL 复制架构 (2)MySQL复制类型 (3)主库大事务处理 (4)主从复制延迟优化 (5)数据库高可用架构设计 (6)容灾级别 (7)数据核对 (8)高可用套件--VIP ( ...

最新文章

  1. java 获取java文件路径_Java怎么获取相对路径下所有的.java文件的信息
  2. 操作系统复习--OS的运行机制和体系结构
  3. Excel2019(Office 2019)导入数据网页(文本txt)无法显示以前样式的问题(终极解决方案)
  4. Win10 owerShell Get命令大全
  5. DotNet 资源大全
  6. 基于tutk方案的p2p源码_以太坊源码分析--p2p节点发现
  7. Jmeter系列之接口自动化实战
  8. 烂泥:学习ssh之ssh密钥随身携带
  9. JavaScript 学习计划
  10. 企业如何利用工业大数据实现价值,这5个真实案例告诉你!
  11. JS编程:查找数组元素位置
  12. GO PDF资源 汇总!
  13. 蓝桥杯省赛JavaB组真题
  14. 如何用万用表检测电路
  15. CMMI4级——几个直接与项目管理相关的PA(PP、PMC、IPM、RSKM、QPM、CAR)
  16. linux内核无法识别声卡,伪输出,检测不到集成声卡
  17. 无线网络通信技术完全介绍
  18. 移动定位业务之“OTDOA(观察到达时间差)”
  19. 轻健身餐的市场前景如何?如何选择一个投资小、美食和健身餐清淡的品牌?
  20. 淋巴细胞转化中PHP的作用,淋巴细胞转化试验介绍|意义

热门文章

  1. 自己的JS 监听器。用于选择文字
  2. POJ - 3279 Fliptile(状态压缩+位运算+暴力)
  3. python制作gif动画_实用的Python(2)利用Python制作gif动图
  4. navicat创建数据库后显示图标灰色,右键后无法新建数据库
  5. 整数域上的多项式辗转相除
  6. HDU1403(后缀数组--最长公共子串)
  7. 双机调试和windbg的命令
  8. (十)boost库之多线程
  9. cocos2d-x游戏实例(1)-视角跟随主角
  10. STL 之count,count_if,max,max_element,min,min_element和random_shuffle