组复制安装部署 | 全方位认识 MySQL 8

作者 罗小波 · 数据库技术专家
出品 沃趣科技

组复制安装部署 | 全方位认识 MySQL 8

文章插图
组复制以插件的形式提供给MySQL 使用,组中的每个都需要配置和安装MGR插件 。本节将以三节点的组复制为例,详细介绍组复制的搭建步骤 。
PS:部署多个MySQL 的另一种方法是使用集群,它基于组复制实现,并将一些搭建步骤封装在程序中,使您能够轻松地使用MySQL Shell 8.0 (MySQL 8.0的一部分)来搭建组复制 。此外,集群与MySQL 无缝衔接,简化了部署MySQL的高可用集群的步骤 。
2.1 部署单主模式的组复制
组复制中的组成员(MySQL )可以都部署在同一台主机上(通常用于测试目的),也可以将每个组成员分别部署在单独的主机中(这也是推荐的部署方式) 。本节将以在3台不同的主机上分别部署3个节点为例介绍组复制的搭建步骤(有关在同一主机上部署多个组复制节点的步骤,请参阅“本地部署组复制”部分) 。
一个三节点的组复制架构图如下,三个节点分别以S1、S2、S3表示,3个客户端分别与三个节点进行通信 。
组复制安装部署 | 全方位认识 MySQL 8

文章插图
2.1.1. 组复制的实例初始化安装 第一步是部署至少三个MySQL (这里与组复制无关,只是先对三个数据库实例进行初始化安装),在3台主机中,分别部署名为为s1、s2、s3的数据库实例(数据库实例的初始化安装步骤省略) 。MGR 是MySQL8.0提供的内置MySQL插件,因此不需要额外安装(注意,虽然不需要额外的安装操作,但是需要额外的加载操作) 。2.1.2. 组复制的实例配置 本节将对配置组复制所要求的系统变量进行介绍,更多有关组复制的要求和限制,详情可参考"9、组复制要求和限制" 。2.1.2.1. 组复制实例配置的基本要求 存储引擎配置
【组复制安装部署 | 全方位认识 MySQL 8】# 注意:在禁用MyISAM存储引擎之后,如果你使用的是MySQL 8.0.16之前的版本,那么,在使用mysql_upgrade命令进行版本升级时,可能会出现错误 。要处理这个问题,可以在运行mysql_upgrade命令之前启用MyISAM引擎,在版本升级完成之后再禁用该引擎disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
主从复制框架配置
# Server 实例级别的唯一标志server_id=1# 启用GTIDgtid_mode=ON# 只允许执行GTID模式下被认为安全的语句enforce_gtid_consistency=ON# 禁用二进制日志中的事件数据校验binlog_checksum=NONE# 启用二进制日志记录功能log_bin=binlog# 启用SQL线程回放之后将二进制写入自身的binlog中,在组复制中,依赖于每个成员持久化的binlog来实现一些数据自动平衡的特性log_slave_updates=ON# 启用ROW格式复制,增强数据一致性binlog_format=ROW# 启用双TABLE,使用InnoDB引擎表来保存IO和SQL线程的位置信息(复制元数据),以增强复制状态的安全性master_info_repository=TABLErelay_log_info_repository=TABLE
2.1.2.2. 组复制参数配置
以下仅列出一些组复制最基本的系统变量的配置,需要注意的是,在配置这些系统变量之前,需要确保组中所有的成员数据库实例都已经初始化安装完成,且组复制所要求的主从复制框架的配置已经在f配置文件中已设置好 。
plugin_load_add='group_replication.so'group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"group_replication_start_on_boot=offgroup_replication_local_address= "s1:33061"group_replication_group_seeds= "s1:33061,s2:33061,s3:33061"group_replication_bootstrap_group=off