一、前言
mysql mgr集群是为了实现mysql高可用,分为单主集群和多主集群,单主集群只有一个主节点可写,节点发生故障时,自动进行主从的故障切换,多主集群所有节点都可写,当节点发生故障时,将故障节点剔除出集群
主机信息
name | ip | port |
mysql01 | 10.1.60.121 | 3306、33061 |
mysql02 | 10.1.60.122 | 3306、33061 |
mysql03 | 10.1.60.123 | 3306、33061 |
二、部署(单主节点)
每个节点部署mysql服务
mysql官网找到mysql5.7版本yum包,使用wget命令下载
wget -i -c
http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
安装mysql yum源
yum -y install mysql57-community-release-el7-10.noarch.rpm
更改mysql yum源配置,将需要安装得5.7版本的gpgchenck项改为0
执行yum安装mysql
yum -y install mysql-community-server
启动mysql服务
systemctl start mysqld && systemctl enable mysqld
通过mysql日志文件查看初始登录密码
cat /var/log/mysqld.log |grep password
使用从日志中得到得密码登录数据库
mysql -u root -p
修改默认密码
alter user 'root'@'localhost' identified by '新密码';
flush privileges;
编辑配置文件
vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
server-id=1 #每个节点配置的id不能相同
gtid_mode=ON #开启gtid
enforce_gtid_consistency=ON #开启gtid的强一致性,mgr集群配置必须开启,用以保证事务的一致性
binlog_checksum=NONE #禁用二进制事件校验
log_bin=binlog #开启binlog日志
log_slave_updates=ON #开启级联复制
binlog_format=ROW #以行的形式记录,mgr集群必须配置以行的形式记录
master_info_repository=TABLE
relay_log_info_repository=TABLE
transaction_write_set_extraction=XXHASH64 #server必须为每个事务收集写集合,使用XXHASH64哈希算法将其编码为散列
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" #创建组名UUID,自定义编辑
loose-group_replication_start_on_boot=off #server启动时不自启组复制,为了避免每次启动自动引导具有相同名称的第二个组,所以设置为OFF
loose-group_replication_local_address="10.1.60.121:33061" #配置当前节点mgr服务地址和端口,该端口为自定义的端口
loose-group_replication_group_seeds="10.1.60.121:33061,10.1.60.122:33061,10.1.60.123:33061"
#配置mgr集群所有节点
loose-group_replication_bootstrap_group=off
report_host=10.1.60.121 #配置当前节点地址
report_port=3306 #配置mysql服务端口
重启mysql服务使配置生效
systemctl restart mysqld
各节点配置mgr插件,并设置同步账号
mysql -u root -p
安装mgr插件
INSTALL PLUGIN group_replication SONAME 'group_replication.so';
关闭binlog日志记录
set SQL_LOG_BIN=0;
创建mgr集群同步账号
create user mgr@'%' identified by '12345678';
设置账号权限
grant replication slave on *.* to mgr@'%';
flush privileges;
开启binlog日志记录
set SQL_LOG_BIN=1;
设置同步账号
CHANGE MASTER TO MASTER_USER='mgr', MASTER_PASSWORD='12345678' FOR CHANNEL 'group_replication_recovery';
创建mgr集群
选一个主节点创建mgr集群,这里选用10.1.60.121为主节点
mysql -u root -p
配置后面加入集群的节点以该主节点为基准
SET GLOBAL group_replication_bootstrap_group=ON;
作为首个节点启动mgr集群
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;
查看mgr集群信息
SELECT * FROM performance_schema.replication_group_members;
其余两个节点执行以下命令加入mgr集群
START GROUP_REPLICATION;
查看mgr集群信息
SELECT * FROM performance_schema.replication_group_members;
状态为online即正常
查询mgr集群中,哪个节点为主节点
select variable_value from performance_schema.global_status where variable_name='group_replication_primary_member';
也可以通过查看是否为read_only确定主节点
show variables like '%read_only%';
至此mgr单主集群搭建完成,主节点可写,从节点可读,主节点发生故障后,会自动在从节点中选主
mgr集群节点发生故障,恢复后需要手动启动组复制功能才会从新加入集群中
mysql -u root -p
START GROUP_REPLICATION;
SELECT * FROM performance_schema.replication_group_members;