当前位置:网站首页>mysql主主复制+keepalived高可用

mysql主主复制+keepalived高可用

2022-08-10 16:59:00 51CTO

背景

在给客户搭建主从复制的时候客户要求故障能自动切换,就搜了一下相关的方案,Mysql主主复制+keepalived高可用,以下是搭建过程

1、mysql节点1作为主节点,节点2作为从节点的配置

1.1 在节点1创建主从复制用户及授权

mysql> CREATE USER 'repl'@'%' IDENTIFIED WITH 'mysql_native_password' BY ' WLW05WuVlm';
mysql> grant replication slave on *.* to 'rep'@'%';
mysql>flush privileges;

     
  • 1.
  • 2.
  • 3.

1.2 查看节点1的日志位置

mysql>show master status \G;

     
  • 1.

mysql主主复制+keepalived高可用_高可用
记住以上日志位置,节点二配置需要使用

1.3 节点二配置主从复制

mysql>CHANGE MASTER TO MASTER_HOST='10.73.96.163',MASTER_USER='repl',MASTER_PASSWORD='WLW05WuVlm',MASTER_LOG_FILE='binlog.000015',MASTER_LOG_POS=6954335;
mysql>start slave;

     
  • 1.
  • 2.

1.4 查看主从复制状态

mysql>show slave status\G;

     
  • 1.

mysql主主复制+keepalived高可用_高可用_02
此时已经同步。

2、mysql节点1作为从节点节点2作为主节点配置

2.1 在节点2创建复制用户并授权

mysql> CREATE USER 'repl'@'%' IDENTIFIED WITH 'mysql_native_password' BY ' WLW05WuVlm';
mysql> grant replication slave on *.* to 'rep'@'%';
mysql>flush privileges;

     
  • 1.
  • 2.
  • 3.

2.2 查看节点2日志位置

mysql>show master status \G;

     
  • 1.

mysql主主复制+keepalived高可用_keepalived_03

2.3 在节点1作主从复制配置

mysql>CHANGE MASTER TO MASTER_HOST='10.73.96.164',MASTER_USER='repl',MASTER_PASSWORD='WLW05WuVlm',MASTER_LOG_FILE='binlog.000037',MASTER_LOG_POS= 32421495;
mysql>start slave;

     
  • 1.
  • 2.

2.4 验证主从是否同步

在节点1上

mysql>show slave status\G;

     
  • 1.

mysql主主复制+keepalived高可用_高可用_04

可以看到已经同步。

3、安装keepalived服务

yum install -y keepalvied

     
  • 1.

如果是离线环境则安装以下几个离线包
mysql主主复制+keepalived高可用_主从复制_05

3.1 2个节点配置keepalived

编辑keepalived.conf配置文件,两个节点上的配置都差不多,只是router_id,priority的值不一样,还有unicast_src_ipunicast_peer值不一样需要对调。

vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id mya       #路由id,不能重复
}

vrrp_script check_port {
    script "/etc/keepalived/check_port.sh"
    interval 2
    weight -100
}

vrrp_instance lvs_inst {           #定义vrrp实例名
              state MASTER          #定义vrrp角色,分为MASTER/BACKUP两种
              interface ens192         #指定网络接口名
              virtual_router_id 50         #同一组的vrrp成员,该id需要一致
              priority 100                       #优先级,范围(0-255)
              #nopreempt                        #不抢占(只针对BACKUP生效)
              advert_int 1                       #发送hello的时间间隔
              authentication {                 #通过密码身份验证
              auth_type PASS
              auth_pass dWeGNyUv
         }
              unicast_src_ip 10.73.96.163
              unicast_peer {
              10.73.96.164
         }
virtual_ipaddress {   #定义虚拟IP(VIP)
            10.73.96.175
          }
             track_script {
               check_port
}

}


     
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.

编辑端口检测脚本,因为keepalived的原理是通过执行端口检测脚本上面的返回值来进行相应的关闭keepalived应用以将流量转发到对应的正常的后端端口上

vi /etc/keepalived/check_port.sh
#!/bin/bash
NUM=`ss -lnp|egrep ":3306" |wc -l`
if  [ $NUM -lt 2 ]
then
    systemctl stop keepalived
fi

     
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

分别启动keepalived

systemctl enable keepalibed
systemctl start keepaliived

     
  • 1.
  • 2.

3.2 查看是否成功

在其中一个节点,查看/var/log/message,显示以下内容,表示节点1已经是主节点
节点2是备份节点
mysql主主复制+keepalived高可用_高可用_06

mysql主主复制+keepalived高可用_主主复制_07

原网站

版权声明
本文为[51CTO]所创,转载请带上原文链接,感谢
https://blog.51cto.com/riverxyz/5564328