一、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.cnf
log_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 TO
MASTER_HOST=192.168.56.12,
MASTER_USER=sync,
MASTER_PASSWORD=sync,
MASTER_PORT=3306,
MASTER_AUTO_POSITION=1;
start slave;
show slave statusG
二、192.168.56.12:
CHANGE MASTER TO
MASTER_HOST=192.168.56.11,
MASTER_USER=sync,
MASTER_PASSWORD=sync,
MASTER_PORT=3306,
MASTER_AUTO_POSITION=1;
start slave;
show slave statusG
三、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.gz
cd keepalived-2.1.5/
./configure --prefix=/usr/local/keepalived
make
make 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.sh
chmod 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 keepalived
global_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 keepalived
global_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_profile
count=1
while true
do
mysql -uroot -p"xxxxx" -e "show status;">/dev/null 2>&1
i=$?
ps aux | grep mysqld | grep -v grep >/dev/null 2>&1
j=$?
if [ $i = 0 ]&&[ $j = 0 ]
then
exit 0
else
if [ $i = 1 ]&&[ $j = 0 ]
then
exit 0
else
if [ $count -gt 5 ]
then
break
fi
let count++
continue
fi
fi
done
/etc/init.d/keepalived stop
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/129631.html
MySQL高可用方案测试 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; margin...
摘要:双主是一个比较简单的高可用架构,适用于中小集群,今天就说说怎么用做的高可用。缺点也比较明显,就是增加从节点的情况下,从节点不会主动切换同步对象,而且脚本需要自己实现,有一定风险。 双主 + keepalived 是一个比较简单的 MySQL 高可用架构,适用于中小 MySQL 集群,今天就说说怎么用 keepalived 做 MySQL 的高可用。 1 概述 1.1 keepalive...
摘要:双主是一个比较简单的高可用架构,适用于中小集群,今天就说说怎么用做的高可用。缺点也比较明显,就是增加从节点的情况下,从节点不会主动切换同步对象,而且脚本需要自己实现,有一定风险。 双主 + keepalived 是一个比较简单的 MySQL 高可用架构,适用于中小 MySQL 集群,今天就说说怎么用 keepalived 做 MySQL 的高可用。 1 概述 1.1 keepalive...
阅读 1346·2023-01-11 13:20
阅读 1684·2023-01-11 13:20
阅读 1132·2023-01-11 13:20
阅读 1858·2023-01-11 13:20
阅读 4100·2023-01-11 13:20
阅读 2704·2023-01-11 13:20
阅读 1385·2023-01-11 13:20
阅读 3597·2023-01-11 13:20