前言:
眼前兄弟们对“mysql半同步”都比较关注,各位老铁们都想要剖析一些“mysql半同步”的相关文章。那么小编在网上收集了一些对于“mysql半同步””的相关内容,希望小伙伴们能喜欢,咱们一起来学习一下吧!1、环境准备
Linux版本:Centos7
Mysql版本:5.7.28
Mha-mysql: mha4mysql-*-0.58-el7-centos
节点说明
服务器
说明
192.168.227.141
Mysql-Master节点, Mha Node, 可读写
192.168.227.142
从节点(备用主节点), Mha Node, 可读写
192.168.227.143
从节点, Mha Node, 可读
192.168.227.144
Mha manager监控节点,MHa node节点
1.1、关闭防火墙
首先关闭所有机器的防火墙并禁用
systemctl stop firewalldsystemctl disable firewalld1.2、安装Mysql基础环境
注意:基础的Mysql安装是针对所有的Mysql节点,也就是192.168.227.141,192.168.227.142,192.168.227.143。
在Mysql的Master节点和Slave节点分别安装Mysql
上传Mysql相关安装包上传如下tar包:
-rw-r--r-- 1 root root 609556480 8月 13 23:16 mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar解压tar包后又一下安装包
mysql-community-client-5.7.28-1.el7.x86_64.rpmmysql-community-common-5.7.28-1.el7.x86_64.rpmmysql-community-devel-5.7.28-1.el7.x86_64.rpmmysql-community-embedded-5.7.28-1.el7.x86_64.rpmmysql-community-embedded-compat-5.7.28-1.el7.x86_64.rpmmysql-community-embedded-devel-5.7.28-1.el7.x86_64.rpmmysql-community-libs-5.7.28-1.el7.x86_64.rpmmysql-community-libs-compat-5.7.28-1.el7.x86_64.rpmmysql-community-server-5.7.28-1.el7.x86_64.rpmmysql-community-test-5.7.28-1.el7.x86_64.rpm依次如下执行mysql安装包
清理旧环境
首先先卸载掉机器原来的Mysql或者Mariadb
rpm -qa|grep mariadbrpm -qa|grep mysql如果有的话删除对应的安装包
rpm -e --nodeps 安装包名称如果已安装了绿色版,需要先停止服务,并且删除相关的目录
依次执行Mysql安装包
rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpmrpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpmrpm -ivh mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpmrpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpmrpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpmrpm -ivh mysql-community-devel-5.7.28-1.el7.x86_64.rpm初始化Mysq并记录下初始化密码
初始化Mysql
mysqld --initialize --user=mysql记录初始化密码
cat /var/log/mysqld.log
可以看到最后生成的随机密码
启动Mysql服务
systemctl start mysqld.service使用初始密码登录并修改密码
mysql -uroot -p输入刚刚上面记录的随机密码进行登陆登陆成功,然后修改密码重新登陆
set password = password('root');
然后重新登陆即可。
2、Mysql实现主从复制2.1、修改配置my.cnf
修改三台Mysql节点的配置文件vim /etc/my.cnf。
Master节点:192.168.227.141
[mysqld]user=mysql# 服务IDserver-id=1# mysql二进制日志名称log-bin=mysql-binlog-slave-updates=1# mysql中继日志名称relay-log=relay-bin
Slave节点:192.168.227.142
[mysqld]user=mysql# 服务IDserver-id=2# mysql二进制日志名称log-bin=mysql-binlog-slave-updates=1# mysql中继日志名称relay-log=relay-bin
Slave节点:192.168.227.143
[mysqld]user=mysql# 服务IDserver-id=3# mysql二进制日志名称log-bin=mysql-binlog-slave-updates=1# mysql中继日志名称relay-log=relay-bin# 只读read_only=1
注意:主要区别是server-id, 必须唯一
2.2、授权
注意:授权针对每一台Mysql节点,因为每一个节点都可能会在故障切换后成为主节点
grant replication slave on *.* to 'repl_user'@'%' identified by 'repl_user';grant all privileges on *.* to 'root'@'%' identified by 'root';
repl_user专门用来做主从复制的用户,root这里作用是Mha Manager的监控用户。
2.3、开启主从模式
在两台从节点上分别开启主从模式。
查看主节点日志文件和需要同步的位置(在192.168.227.141上执行)。
show master status;
使用change master to 设置同步的主节点。
change master to master_host='192.168.227.141',master_port=3306,master_user='repl_user',master_password='repl_user',master_log_file='mysql-bin.000003',master_log_pos=154;
这里的master_log_file和master_log_pos就是上面show master status查询出来的
开启主从
start slave;2.4、测试主从
在主节点创建数据库并和表并插入数据,可以查看到从节点已经同步了。
3、Mysql实现半同步复制3.1、修改配置
使用命令方式
install plugin rpl_semi_sync_master soname 'semisync_master.so';install plugin rpl_semi_sync_slave soname 'semisync_slave.so';set global rpl_semi_sync_master_enabled=1;set global rpl_semi_sync_slave_enabled=1;
使用配置文件方式(推荐)
在每一台的配置文件加入半同步复制参数,并重启Mysql。
plugin-load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"rpl-semi-sync-master-enabled = 1rpl-semi-sync-slave-enabled = 13.2、重启并测试
systemctl restart mysql
测试方式与主从测试一致。
4、Mysql实现Mha4.1、环境准备
上传rpm包如下:
mha4mysql-manager-0.58-0.el7.centos.noarch.rpmmha4mysql-node-0.58-0.el7.centos.noarch.rpm
依赖安装
安装node和Manager是需要先安装一些依赖,这里同意安装
yum -y install epel-release-7-11.noarchyum -y install perl-DBD-MySQL perl-DBI perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes
epel-release-7-11.noarch我这个linux版本看安装这个版本,如果没有,这安装最新的即可。
4.2、Mha安装
在四台机器 都安装Node节点
rpm -ivh mha4mysql-node-0.58-0.el7.centos.noarch.rpm
在监控节点192.168.227.144安装mha manager
rpm -ivh mha4mysql-manager-0.58-0.el7.centos.noarch.rpm4.3、免密登陆
因为Mha需要连接各自的高可用的其他服务器,所以需要做免密登陆。
在每一台机器上分别执行如下操作
ssh-keygenssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.227.141ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.227.142ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.227.143ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.227.144
然后在每一台机器上进行免密登陆测试
ssh root@192.168.227.141ssh root@192.168.227.142ssh root@192.168.227.143ssh root@192.168.227.1444.4、Mha Manager配置文件
创建配置文件目录和日志(这里提前创建好)目录
mkdir /etc/masterhamkdir -p /var/log/masterha
编写配置文件vim /etc/masterha/node.cnf
[server default]#manager 工作目录manager_workdir=/var/log/masterha#manager 工作时的日志文件manager_log=/var/log/masterha/manager.log#指定 master(192.168.227.141) 主机的 binlog二进制日志的文件位置,master_binlog_dir=/var/lib/mysql#自动故障切换时master服务器IP地址切换脚本,如果没有则不写此项#master_ip_failover_script=/usr/local/bin/master_ip_failover#手动切换时master服务器IP地址切换脚本,如果没有则不写此项(一般安装MHA时自带)#master_ip_online_change_script=/usr/local/bin/master_ip_online_change#监控用户user=root#监控用户密码password=root#监控主库发送 ping 包的时间间隔,默认3秒,如果3秒内没有回应将自动进行故障切换ping_interval=1#Mysql 在发生切换时,二进制日志文件的保存位置remote_workdir=/var/log/masterha/logbin#复制用户repl_user=repl_user#复制用户的密码repl_password=repl_user#发生切换后发送的报警脚本#report_script=/usr/local/bin/send_report#故障发生后关闭故障主机的脚本,主要作用是关闭主机防止发生脑裂#shutdown_script="/usr/local/bin/master_stop"#ssh 登录用户ssh_user=root[server1]hostname=192.168.227.141port=3306ssh_port=22[server2]hostname=192.168.227.142port=3306ssh_port=22#候选 master主机,即使这个主库不是集群中事件最新的,当主宕机之后 仍会优先选择此主机作为主Mysql。#应用场景:keepelived+MHAcandidate_master=1#默认情况下,如果一个slave的中转日志落后master二进制日志100M,那么MHA就不会选择该slave作为新的master。#但设置此项后MHA会忽略复制延迟,对候选master非常有用。check_repl_delay=0[server3]hostname=192.168.227.143port=3306ssh_port=22# 不可能成为主节点no_master=14.5、Mha ssh免密环境校验
masterha_check_ssh --conf=/etc/masterha/node.cnf
最终显示OK即可,免密登陆成功这里就会通过
4.6、Mha 同步复制校验
masterha_check_repl --conf=/etc/masterha/node.cnf
最终显示OK即可,免密登陆成功这里就会通过
4.7、Mha Manager启动
启动后manager监控
masterha_manager --conf=/etc/masterha/node.cnf --ignore_last_failover
测试主节点是谁
masterha_check_status --conf=/etc/masterha/node.cnf
如果显示例如OK,并显示处Master的IP就成功了
4.8、故障转移测试
回到Master节点,使用systemctl stop mysqld停止服务。
停止服务后masterha_manager进程也将会停止。回到Slave节点192.168.227.143查看slave状态,它的主节点已经变成了142。
4.9、新集群主从测试
跟最初的主从复制测试方法一致。
标签: #mysql半同步