[MGR-Mysql的组复制集群]详细搭建部署过程

本文详述了MySQL Group Replication的搭建过程,包括安装、配置my.cnf、安装插件、配置参数及启动集群。重点介绍了配置参数如gtid_mode、transaction_write_set_extraction等,并提醒注意限制,如只支持InnoDB表和有主键的表。通过这个教程,读者可以了解如何建立和维护一个高可用的MySQL MGR集群。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[MGR-Mysql]的组复制集群]详细搭建部署过程

 author:石鲁坤

1,关于MySQL Group Replication
 
基于组的复制(Group-basedReplication)是一种被使用在容错系统中的技术。Replication-group(复制组)是由能够相互通信的多个服务器(节点)组成的。
 
在通信层,Groupreplication实现了一系列的机制:比如原子消息(atomicmessage delivery)和全序化消息(totalorderingof messages)。
 
这些原子化,抽象化的机制,为实现更先进的数据库复制方案提供了强有力的支持。
  
MySQL Group Replication正是基于这些技术和概念,实现了一种多主全更新的复制协议。

简而言之,一个Replication-group就是一组节点,每个节点都可以独立执行事务,而读写事务则会在于group内的其他节点进行协调之后再commit。
 
因此,当一个事务准备提交时,会自动在group内进行原子性的广播,告知其他节点变更了什么内容/执行了什么事务。
 
这种原子广播的方式,使得这个事务在每一个节点上都保持着同样顺序。
 
这意味着每一个节点都以同样的顺序,接收到了同样的事务日志,所以每一个节点以同样的顺序重演了这些事务日志,最终整个group保持了完全一致的状态。
 
然而,不同的节点上执行的事务之间有可能存在资源争用。这种现象容易出现在两个不同的并发事务上。
 
假设在不同的节点上有两个并发事务,更新了同一行数据,那么就会发生资源争用。
 
面对这种情况,GroupReplication判定先提交的事务为有效事务,会在整个group里面重演,后提交的事务会直接中断,或者回滚,最后丢弃掉。
 
因此,这也是一个无共享的复制方案,每一个节点都保存了完整的数据副本。这个复制方案,在某种程度上,和数据库状态机(DBSM)的Replication方法比较类似。
 
 MGR的限制
仅支持InnoDB表,并且每张表一定要有一个主键,用于做write set的冲突检测;
必须打开GTID特性,二进制日志格式必须设置为ROW,用于选主与write set
COMMIT可能会导致失败,类似于快照事务隔离级别的失败场景
目前一个MGR集群最多支持9个节点
不支持外键于save point特性,无法做全局间的约束检测与部分部分回滚
二进制日志不支持binlog event checksum
 

2,安装mysql 5.7.18
 
在三台db服务器上面设置/etc/hosts映射,如下:
 
192.168.117.129  mgr1
192.168.117.130  mgr2
192.168.117.131  mgr3
 
安装的数据库服务器:

在每个节点上执行安装:

1、下载二进制软件包:
  mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz

2、添加MySQL用户和组:
  [root@localhost ~]# userdel mysql  (因为是新系统,所以就把现有的MySQL用户给删除了)
  [root@localhost ~]# groupadd mysql
  [root@localhost ~]# useradd -g mysql mysql
  [root@localhost ~]# passwd mysql     (MySQL密码要设置的复杂一点,或者在创建用户的时候设置不让登陆系统)

3、创建安装MySQL目标,并解压软件到指定目录
  [root@localhost ~]# mkdir -p /data/mysql/db_file  在mysql 下创建bin_log  relay_log(从节点) log 目录
  [root@localhost ~]# chown -R mysql:mysql /data
  [root@localhost ~]# tar -xvf  mysql-5.7.18-linux-glibc2.5-x86_64 
  [root@localhost ~]# mv mysql-5.7.18-linux-glibc2.5-x86_64/ /usr/local/mysql
  [root@localhost ~]# chown -R mysql:mysql /usr/local/mysql

4、切换MySQL用户,并初始化数据库
  [root@localhost ~]# su - mysql
  [mysql@localhost ~]$/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql/db_file/

my.cnf的详细配置:

[root@localhost ~]# cat /etc/my.cnf 
[client]
port = 3306
socket = /tmp/mysql.sock
 
[mysqld]
port = 3306
socket = /tmp/mysql.sock
back_log = 80
basedir = /usr/local/mysql
datadir = /data/mysql/db_file
#skip-grant-tables
#-------------------gobal variables------------#
gtid_mode = ON
enforce_gtid_consistency = ON
master_info_repository = TABLE
relay_log_info_repository = TABLE
binlog_checksum = NONE
log_slave_updates = ON
log-bin = /usr/local/mysql/log/mysql-bin
transaction_write_set_extraction = XXHASH64
loose-group_replication_group_name = 'ce9be252-2b71-11e6-b8f4-00212844f856'
loose-group_replication_start_on_boot = off
loose-group_replication_local_address = '192.168.117.129:33061'
loose-group_replication_group_seeds ='192.168.117.129:33061,192.168.117.130:33061,192.168.117.131:33061'
loose-group_replication_bootstrap_group

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值