MySQL Group Replication搭建

1、概述

Group replication是MySQL官方开发的一个开源插件,是实现MySQL高可用集群的一个工具。它的代码包含在MySQL的源码中,二进制插件库也在MySQL的安装包中。2016年12月12日Group replication的第一个版本正式发布。想要使用必须安装MySQL 5.7.17及以后的版本即可。

group replication大量异步复制了原有的框架和技术。事务仍然会产生BinlogEvent,Group Replication会将BinlogEvent发送到其他MySQL服务器上。这些binlogevent也是通过一个内部自建的slave通道(channel)执行,执行过程和异步复制过程大致相同。

创建组:当组的第一个成员启动时,需要对组进行初始化。
加入组:将MySQL服务器加入到一个存在的group replication组内。

离开组:从group replication组内移除一台MySQL服务器。

服务模式:
1、单主模式
2、多主模式

set global group_replication_single_primary_mode=off #设定单主还是多主模式

2、搭建复制环境

以单主为例。
数据库参数设置
开启binlog和relaylog
server_id=1
log_bin=binlog # 打开binlog
log_slave_updates=on # 决定slave从master接收到的更新且执行完之后,执行的Binlog是否记录到slave的                                                         # binlog中,建议开启。
relay_log=relay-log # 中继日志

开启GTID功能
gtid_mode=on # 打开gtid,必须的。
enforce_gtid_consistency=on # 使用GTID模式复制时,需要开启此参数,用来保证GTID的一致性
binlog_format=row #    binlog格式  其他可能会造成数据的不一致

禁用binlog_checksum
binlog_checksum=none # 暂时不支持这个。

系统表存储slave信息
master_info_repository=table
relay_log_info_repository=table

主键信息采集
transaction_write_set_extraction=xxhash64 # 默认为OFF
# 目前算法有两种 xxhash64 murmur32
# 注意一个组成员内算法必须一样

其他参数
datadir=/data/mysql/
basedir=/usr/local/mysql/
port=3306
socket=/tmp/mysql.sock
以上参数写在[mysqld]中

数据库初始化
bin/mysqld --defaults-file=/usr/local/mysql/my.cnf --datadir=/data/mysql --user=mysql --initialize-insecure
bin/mysqld_safe --user=mysql # 启动MySQL


创建用户(所有成员)
grant replication slave,replication client on *.* to mgruser@'%' identified by 'redhat';
grant replication slave,replication client on *.* to mgruser@'127.0.0.1' identified by 'redhat';

grant replication slave,replication client on *.* to mgruser@'localhost' identified by 'redhat';

加载模块
mysql> install plugin group_replication soname 'group_replication.so';

创建组
set global group_replication_group_name='12345678-1234-1234-1234-1234567890ab';
set global group_replication_local_address="192.168.56.16:30001";
set global group_replication_bootstrap_group=on;
start group_replication;
set global group_replication_bootstrap_group=off;
change master to master_user='rpl_user',master_password='rpl_passwd' for channel 'group_replication_recovery';

添加新成员
install plugin group_replication soname 'group_replication.so';
set global group_replication_group_name='12345678-1234-1234-1234-1234567890ab';
set global group_replication_local_address="192.168.56.15:30001";


set global group_replication_group_seeds="192.168.56.16:30001,192.168.56.15:30001";
# 设置种子成员

change master to master_user='mgruser',master_password='redhat' for channel 'group_replication_recovery';
# 需要在每个成员上存在,包括主

start group_replication;

检测
select * from performance_schema.replication_group_members ;
# 所有在线代表成功了

注意
一定要配置hosts文件
表必须有主键

如果开启了主键信息采集功能

数据库备份和恢复
innobackupex --defaults-file="/usr/local/mysql/my.cnf" -S /tmp/mysql.sock  --user=root  --password="redhat"  /backup
# 主上执行
innobackupex --apply-log /backup/2018-06-02_15-49-40/
innobackupex --defaults-file="/usr/local/mysql/my.cnf" --copy-back /backup/2018-06-02_15-49-40/

# 从上执行

最后注意
    以上使用set的变量都会数据库重启失效,想要永久生效写在配置文件中,在变量前面加上"loose-"即可
例如:loose-group_replication_local_address='127.0.0.1:12345'
为什么要这样添加?
因为这些参数不是数据库的,是插件的,插件的参数必须在插件加载之后设置,所以

至此完成!




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值