资讯

展开

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

作者:快盘下载 人气:

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

//

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

//

01

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集群的架构图如下:

SQL Server

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

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

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

02

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原生高可用方案之InnoDB ReplicaSet(二)

MySQL Router搭建:

MySQL原生高可用方案之InnoDB ReplicaSet(三)

MGR搭建:

MGR搭建以及性能测试

加载全部内容

相关教程
猜你喜欢
用户评论
快盘暂不提供评论功能!