点击上方“IT那活儿”,关注后了解更多内容,不管IT什么活儿,干就完了!!!

一、192.168.56.11:
install plugin rpl_semi_sync_master SONAME 'semisync_master.so';
上:加载半同步的插件。
install plugin rpl_semi_sync_slave SONAME 'semisync_slave.so';
上:因为我们要做双主,所以要将主从角色的插件都加载。
注意:一定要先加载插件,如果先添加参数是会报错的。
vi /etc/my.cnflog_bin
#上:开启binlog用于数据同步。
server_id=1001
#上:主从必须配置不一样的server_id。配置一样的话同步机制会启动失败。
rpl_semi_sync_master_enabled=1
#上:开启半同步机制,角色为主。
rpl_semi_sync_master_timeout=1000
#上:主角色的等待从返回ack的超时时间,超过这个时间就会退化成异步复制。
rpl_semi_sync_slave_enabled=1
#上:开启半同步机制,角色为从,因为我们要配置双主所以这两种角色的控制要都打开。
master_info_repository='TABLE';
#将master_info信息记录到表上。
relay_log_info_repository='TABLE';
#将relay_log_info信息记录到表上。
gtid_mode=ON
#开启gtid。
enforce_gtid_consistency=ON
#开启严格模式,不允许执行可能导致数据不一致的sql语句。比如create table as select。
(以上:添加如上配置到my.cnf文件当中)
systemctl restart mysqld
重启Mysql让这些配置生效。
show variables like '%rpl%';
上:可以看到主从角色的半同步控制都已经激活。
select * from mysql.plugin;
上:可以看到两个角色的半同步插件都已经加载。
create user sync@'%' identified by 'sync';grant replication slave on *.* to sync@'%';
上:创建同步账号。
二、192.168.56.12:
12的配置步骤完全重复11的。
server_id=1002
注:唯一不一样的地方就是这个server_id。剩下的都是按照11的配置再来一次。
一、192.168.56.11:
CHANGE MASTER TOMASTER_HOST='192.168.56.12',MASTER_USER='sync',MASTER_PASSWORD='sync',MASTER_PORT=3306,MASTER_AUTO_POSITION=1;start slave;show slave status\G
二、192.168.56.12:
CHANGE MASTER TOMASTER_HOST='192.168.56.11',MASTER_USER='sync',MASTER_PASSWORD='sync',MASTER_PORT=3306,MASTER_AUTO_POSITION=1;start slave;show slave status\G
三、192.168.56.11,192.168.56.12:
show status like '%rpl%';
注:查看Rpl_semi_sync_master_clients的值是不是1,Rpl_semi_sync_master_status和Rpl_semi_sync_slave_status的值是不是都为ON,如果不是就说明有问题。
192.168.56.11以及192.168.56.12:
yum -y install e2fsprogs-devel keyutils-libs-devel libsepol-devel libselinux-devel krb5-devel zlib-devel openssl-devel popt-devel
上:安装依赖包。
tar zxvf keepalived-2.1.5.tar.gzcd keepalived-2.1.5/./configure --prefix=/usr/local/keepalivedmakemake install
上:编译安装。
cd /software/keepalived-2.1.5/keepalived/etc/init.d/cp keepalived etc/init.d/
上:方便启动keepalived服务。
cd /etc/keepalived/vi keepalived.conf
上:编辑keepalived的配置文件。
vi /etc/keepalived/bin/mysql_check.shchmod 755 /etc/keepalived/bin/mysql_check.sh
上:添加监控mysql是否存活的脚本。
systemctl start k
eepalived
上:因为VIP要绑定192.168.56.11所以先启动11。
VIP为192.168.56.13
一、192.168.56.11的keepalived.conf
! Configuration File for keepalivedglobal_defs { router_id KeepAlive_MySQL}vrrp_script check_run { script "/etc/keepalived/bin/mysql_check.sh" interval 30}vrrp_sync_group VG1 {group { VI_1 }}vrrp_instance VI_1 { state BACKUP interface eth0 mcast_src_ip 192.168.56.11 virtual_router_id 51 priority 100 advert_int 1 nopreempt authentication { auth_type PASS auth_pass 1111 } track_script { check_run } virtual_ipaddress { 192.168.56.13 }}
二、192.168.56.12的keepalived.conf
! Configuration File for keepalivedglobal_defs { router_id KeepAlive_MySQL}vrrp_script check_run { script "/etc/keepalived/bin/mysql_check.sh" interval 30}vrrp_sync_group VG1 {group { VI_1 }}vrrp_instance VI_1 { state BACKUP interface eth0 mcast_src_ip 192.168.56.12 ---本机IP地址 virtual_router_id 51 priority 90 advert_int 1 nopreempt authentication { auth_type PASS auth_pass 1111 } track_script { check_run }
#视情况自行添加以下检测脚本:
# notify_master "/home/sh/master.sh"# notify_backup "/home/sh/backup.sh# notify_stop "/home/sh/stop.sh virtual_ipaddress { 192.168.56.13 }}
三、192.168.56.11以及192.168.56.12的mysql_check.sh
#!/bin/bash. /root/.bash_profilecount=1while truedomysql -uroot -p"xxxxx" -e "show status;">/dev/null 2>&1i=$?ps aux | grep mysqld | grep -v grep >/dev/null 2>&1j=$?if [ $i = 0 ]&&[ $j = 0 ]thenexit 0else if [ $i = 1 ]&&[ $j = 0 ] then exit 0 else if [ $count -gt 5 ] then break fi let count++ continue fifidone/etc/init.d/keepalived stop

本文作者:许智发
本文来源:IT那活儿(上海新炬王翦团队)





