MYSQL Group Replication的搭建过程

数据库   2024年05月11日 0:52  

这篇文章主要介绍“ Replication的搭建过程”,在日常操作中,相信很多人在MYSQL Replication的搭建过程问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MYSQL Replication的搭建过程”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1. 环境准备操作系统redhat linux 6.8虚拟机3台一台用于primary, 另外两台用于做secondary注意:请先设置好各个主机的hostname与/etc/hostsmysql版本: mysql-5.7.20  主名        ip地址      在mgr中的角色

mgrhost01 192.168.43.143      primary

mgrhost02    192.168.43.144      seconde

mgrhost03    192.168.43.145      seconde

2. 安装mysql数据服务cd /tmp/wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.20-linux-glibc2.12-x86_64.tar.gztar -xvfmysql-5.7.20-linux-glibc2.12-x86_64.tar.gz -C /usr/local/cd /usr/local/ln -smysql-5.7.20-linux-glibc2.12-x86_64 mysql注意:三个环境都需要安装在三台主机上执行以下命令:mkdir -p /database/mysql/data/3306useradd mysqlchown -R mysql:mysql /database/mysql/data/3306chown -R mysql:mysql /usr/local/mysql*

3.配置mysql服务三台主机都增加配置文件: /etc/my.cnf其中143的配置文件内容:basedir=/usr/local/mysql/

datadir=/database/mysql/data/3306

port=3306

socket=/tmp/mysql.sock

server_id=143

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=mysql-bin

binlog_format=row

relay-log-recovery=1

transaction_write_set_extraction=XXHASH64

loose-group__group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"

loose-group_replication_start_on_boot=off

loose-group_replication_local_address="192.168.43.143:33060"

loose-group_replication_group_seeds="192.168.43.143:33060,192.168.43.144:33060,192.168.43.145:33060"

loose-group_replication_bootstrap_group=off192.168.43.144的/etc/my.cnf[mysqld]

basedir=/usr/local/mysql/

datadir=/database/mysql/data/3306

port=3306

socket=/tmp/mysql.sock

server_id=144

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=mysql-bin

binlog_format=row

relay-log-recovery=1

transaction_write_set_extraction=XXHASH64

loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"

loose-group_replication_start_on_boot=off

loose-group_replication_local_address="192.168.43.144:33060"

loose-group_replication_group_seeds="192.168.43.143:33060,192.168.43.144:33060,192.168.43.145:3306"

loose-group_replication_bootstrap_group=off192.168.43.145的/etc/my.cnf[mysqld]

basedir=/usr/local/mysql/

datadir=/database/mysql/data/3306

port=3306

socket=/tmp/mysql.sock

server_id=145

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=mysql-bin

binlog_format=row

relay-log-recovery=1

transaction_write_set_extraction=XXHASH64

loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"

loose-group_replication_start_on_boot=off

loose-group_replication_local_address="192.168.43.145:33060"

loose-group_replication_group_seeds="192.168.43.143:33060,192.168.43.144:33060,192.168.43.145:3306"

loose-group_replication_bootstrap_group=off在这里有一些技术细节要说明一下:

    上面的三个配置文件省略了所有不必要的配置项、但是看起来还是有点多、这些都是mgr环境要求的。

    server_id 每个实例都要不要样

    loose-group_replication_group_name:为mgr高可用组起一个名字,这个名字一定要是uuid格式的。

    loose-group_replication_local_address:mgr各实例之前都是要进行通信的、这个配置项设置的就是本实例所监听的ip:端口

    loose-group_replication_group_seeds:各mgr实例所监听的ip:端口信息三个环境初始化mysql(注意,此处mysql的root用户密码会被设置为空值): /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf--datadir=/database/mysql/data/3306/ --user=mysql --initialize-insecure三个环境将mysql加入系统服务cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqldchmod +x /etc/rc.d/init.d/mysqldchkconfig mysqld on修改环境变量:echo 'PATH=/usr/local/mysql/bin/:$PATH' >>/etc/profile启动mysql服务:service mysqld start停止mysql服务:service mysqld stop

4.配置MGR 4.1 创建mgr所需的用户(第一个节点) setsql_log_bin=0;

createuser mgruser@'%' identified by 'mtls@352';

grantreplication slave,replication client on *.* to mgruser@'%';

createuser mgruser@'127.0.0.1' identified by 'mtls@352';

grantreplication slave,replication client on *.* to mgruser@'127.0.0.1';

createuser mgruser@'localhost' identified by 'mtls@352';

grantreplication slave,replication client on *.* to mgruser@'localhost';

setsql_log_bin=1;

4.2 配置复制所使用的用户 change master to

master_user='mgruser',

master_password='123456'

for channel 'group_replication_recovery';

4.3安装MGR插件installplugingroup_replicationsoname'group_replication.so';

4.4. 初始化一个复制组 set globalgroup_replication_bootstrap_group=on;

startgroup_replication;

setglobal group_replication_bootstrap_group=off;

4.5. 配置MGR的第二个节点set sql_log_bin=0;

create user mgruser@'%' identified by'123456';

grant replication slave,replication clienton *.* to mgruser@'%';

create user mgruser@'127.0.0.1' identifiedby '123456';

grant replication slave,replication clienton *.* to mgruser@'127.0.0.1';

create user mgruser@'localhost' identifiedby '123456';

grant replication slave,replication clienton *.* to mgruser@'localhost';

setsql_log_bin=1;change masterto

master_user='mgruser',

master_password='123456'

for channel 'group_replication_recovery';

installplugingroup_replicationsoname'group_replication.so';startgroup_replication;

使用以上脚本依次处理剩余节点。

验证:至此,配置完成

mgr中所有的结点都属于一个逻辑上的组、这个组就像是QQ群一样、是由群主建起来的、有了这个上组之后、其它的结点就可以加入到这个组中来了。

搭建中的注意项:

1.安装虚拟机操作系统时,因hostname安装时未能设置好,修改了hostname, 重启了操作系统之后,group_replication不能正常启动mysql> start group_replication;

set global group_replication_bootstrap_group=off;

ERROR 3094(HY000): The START GROUP_REPLICATION command failed as the applier modulefailed to start.

在参数文件/etc/my.cnf中加入了relay-log-recovery=1之后,才正常启动复制2. 安装mysql服务前,最好先设置好hostname与/etc/hosts

本案例中/etc/hosts的内容为:

192.168.43.143mgrhost01

192.168.43.144mgrhost02

192.168.43.145 mgrhost03

3.select*fromperformance_schema.replication_group_members;这个SQL查询的列的member_state字段应都为state才是正常的

到此,关于“MYSQL Group Replication的搭建过程”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

域名注册
购买VPS主机

您或许对下面这些文章有兴趣:                    本月吐槽辛苦排行榜

看贴要回贴有N种理由!看帖不回贴的后果你懂得的!


评论内容 (*必填):
(Ctrl + Enter提交)   

部落快速搜索栏

各类专题梳理

网站导航栏

X
返回顶部