MySQL原生高可用方案之InnoDB Cluster

Posted DBA随笔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL原生高可用方案之InnoDB Cluster相关的知识,希望对你有一定的参考价值。



MySQL原生高可用方案之InnoDB Cluster(一)
//

mysql原生高可用方案之InnoDB Cluster(一)

//


0 1
InnoDB Cluster(集群)介绍

       之前的文章中,我们针对Innodb Replicaset进行了介绍,它是MySQL中的一种高可用方案,它的硬伤是不能实现自主的故障自愈。今天我们来看另外一种功能更加健全的高可用方案,Innodb Cluster。

      InnoDB Cluster是MySQL官方推出的高可用方案,一个集群由至少3个MySQL Server组成,它提供了MySQL服务的高可用性和可伸缩性,InnoDB Cluster包含下面三个关键组件:

1、MySQL Shell,它是MySQL的高级管理客户端

2、MySQL Server和MGR,使得一组MySQL实例能够提供高可用性,对于MGR,Innodb Cluster提供了一种更加易于编程的方式来处理MGR

3、MySQL Router,一个轻量级的中间件


Innodb Cluster集群的架构图如下:

MySQL原生高可用方案之InnoDB Cluster(一)

    从图中不难看出,MySQL Server位于架构的最底层,每个Server之间借助MGR实现故障自愈和容错,通常情况下,InnoDB Cluster使用MGR的弹珠模式,高级用户还可以使用MGR的多主模式。

对于应用程序来说,直连的是MySQL Router;

对于DBA来说,使用更多的是MySQL Shell  


0 2
InnoDB ReplicaSet的限制

     在将InnoDB Cluster使用到生产环境之前,我们需要确保服务器满足以下要求:

1、InnoDB Cluster使用组复制,所以实例之间首先需要能够成功搭建MGR,dba.checkInstanceConfiguration方法可以用来验证实例是否满足组复制要求,并提供dba.configureInstance方法可以用来配置实例从而满足要求


2、MGR场景下可以使用MyISAM类型的表,这类表无法通过MGR写入,但是可以读取。在使用InnoDB Cluster的时候,为了能够写入这种类型的表,需要将其转换成为Innodb存储引擎的。


3、Performance schema特性必须在每个Innodb Cluster的成员中开启


4、MySQL Shell配置Innodb Cluster的时候需要使用到Python,需要确保我们的环境上有安装Python


5、从MySQL8.0.17开始,Innodb Cluster集群中的server id 必须唯一,相同Server id的MySQL Server在加入集群的时候,会报错。


6、从MySQL 8.0.23开始,应该将MySQL实例开启并行复制。


7、InnoDB Cluster配置过程中,会设置大多数常用的系统变量,但是不会设置transaction_isolation隔离级别变量,默认是RR隔离级别,如果使用底层的MGR使用的是单主模式,则不会影响集群,如果使用的是多主模式,则建议将隔离级别修改成RC级别。



    下一篇文章将详细描述InnoDB Cluster集群的搭建过程。搭建之前,需要拥有MySQL Shell、MySQL Router和MGR的环境,关于环境搭建部分,可以查看对应的文章内容:

MySQL Shell搭建:

MySQL Router搭建:

MGR搭建:



有帮助的话还希望点下再看哈



以上是关于MySQL原生高可用方案之InnoDB Cluster的主要内容,如果未能解决你的问题,请参考以下文章

云原生下,如何实现高可用的MySQL?

云原生时代必须具备的核心技能之Docker高级篇(Docker实战之MySQL高可用集群搭建)

Linux学习-MySQL之MGR实现集群

Linux学习-MySQL之MGR实现集群

MySQL高可用方案之多级复制

MySQL集群之五大常见的MySQL高可用方案(转)