加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

怎么用KeepAlived搭建MySQL高可用环境

发布时间:2022-01-21 09:23:33 所属栏目:MySql教程 来源:互联网
导读:本篇内容介绍了怎么用KeepAlived搭建MySQL高可用环境的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 首先搭建MySQL的主从复制 在Master开启binlog,
       本篇内容介绍了“怎么用KeepAlived搭建MySQL高可用环境”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
  
首先搭建MySQL的主从复制
在Master开启binlog,创建复制帐号,
然后在Slave输入命令
 
 
change master to
master_host='192.168.1.70',
master_port=3306,
master_user='xx',
master_password='xx';
然后使用start slave开启复制。
 
然后编译安装KeepAlived
进入keepalived-1.2.12目录
然后使用
./configure
make && make install
 
然后在Master服务器编辑KeepAlived的配置文件
vim /etc/keepalived/keepalived.conf
 
 
! Configuration File for keepalived
global_defs {
    router_id HA_MySQL
}
vrrp_instance VI_1 {
        state BACKUP
        interface eth0
        virtual_router_id 51
        priority 100
        advert_int 1
     nopreempt
        authentication {
                auth_type PASS
                auth_pass 1111
        }
        virtual_ipaddress {
         192.168.1.199
        }
}
virtual_server 192.168.1.199 3306 {
            delay_loop 2
            lb_algo wrr
            lb_kind DR
            persistence_timeout 60
            protocol TCP
            real_server 192.168.1.70 3306 {
                weight 3
                notify_down /root/shutdown.sh
                TCP_CHECK {
                    connect_timeout 10
                    nb_get_retry 3
                    delay_before_retry 3
                    connect_port 3306
                }
            }
}
然后编辑Slave的配置文件
vim /etc/keepalived/keepalived.conf
 
! Configuration File for keepalived
global_defs {
     router_id HA_MySQL
}
vrrp_instance VI_1 {
     state BACKUP
     interface eth0
     virtual_router_id 51
     priority 90
     advert_int 1
     nopreempt
     authentication {
         auth_type PASS
         auth_pass 1111
     }
     virtual_ipaddress {
         192.168.1.199
     }
}
virtual_server 192.168.1.199 3306 {
     delay_loop 2
     lb_algo wrr
     lb_kind DR
     persistence_timeout 60
     protocol TCP
     real_server 192.168.1.80 3306 {
         weight 3
         notify_down /root/shutdown.sh
         TCP_CHECK {
             connect_timeout 10
             nb_get_retry 3
             delay_before_retry 3
             connect_port 3306
         }
     }
}
其中
priority                      表示优先级
virtual_ipaddress      虚拟的IP地址(VIP)
delay_loop                每个2秒检查一次real_server状态
notify_down              检测到服务down后执行的脚本
connect_timeout      连接超时时间
nb_get_retry             重连次数
delay_before_retry   重连间隔时间
connect_port            健康检查端口
 
shutdown.sh 可以考虑加入邮件告警的功能。
 
 
#!/bin/bash
pkill keepalived
 
在两个服务器上启动MySQL和KeepAlived服务
service mysql start
service keepalived start
 
Master的server_id为1
Slave的server_id为2
 
然后 连接VIP的MySQL,可以看到已经连接到了Master服务器(server_id为1)
 
怎么用KeepAlived搭建MySQL高可用环境
 
如果kill掉Master的MySQL,KeepAlived会自动转移到Slave
 
在Master服务器上执行
killall mysqld
 
然后再次查看server_id,
短暂的失去连接之后,再次连接上VIP,server_id已经变为2,说明VIP已经指向了Slave
  
nopreempt参数表示Master恢复正常之后,是否将VIP继续指向Master
这样的话,会再次引发切换。
 
两台服务器的KeepAlived会有心跳检测,
如果Master的MySQL服务挂了(3306端口挂了),那么他会选择自杀.
Slave的KeepAlived通过心跳检测发现这个情况,就会将VIP的请求接管。
 
KeepAlived还有很多参数没有明白是什么意思
生产环境的切换脚本,在Slave提升为Master之后,应该等待所有的中继日志应用完毕,否则可能丢失数据
  
“怎么用KeepAlived搭建MySQL高可用环境”的内容就介绍到这里了,感谢大家的阅读。

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读