• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

使用KeepAlived筹建MySQL高可用环境_mysql

mysql 搞代码 7年前 (2018-06-07) 255次浏览 已收录 0个评论

使用KeepAlived搭建mysql高可用环境

 

 

使用KeepAlived筹建MySQL高可用环境_mysql

使用KeepAlived搭建MySQL的高可用环境。
首先搭建MySQL的主从复制
在Master开启binlog,创建复制帐号,
然后在Slave输入命令


  1. change master to
  2. master_host=’192.168.1.70′,
  3. master_port=3306,
  4. master_user=’xx’,
  5. master_password=’xx’;

然后使用start slave开启复制。

然后编译安装KeepAlived
进入keepalived-1.2.12目录
然后使用
./configure
make && make install

然后在Master服务器编辑KeepAlived的配置文件
vim /etc/keepalived/keepalived.conf

  1. ! Configuration File for keepalived
  2. global_defs {
  3.     router_id HA_MySQL
  4. }
  5. vrrp_instance VI_1 {
  6.      state BACKUP
  7.      interface eth0
  8.      virtual_router_id 51
  9.      priority 100
  10.      advert_int 1
  11.      nopreempt
  12.      authentication {
  13.          auth_type PASS
  14.          auth_pass 1111
  15.      }
  16.      virtual_ipaddress {
  17.          192.168.1.199
  18.      }
  19. }
  20.  
  21. virtual_server 192.168.1.199 3306 {
  22.      delay_loop 2
  23.      lb_algo wrr
  24.      lb_kind DR
  25.      persistence_timeout 60
  26.      protocol tcp
  27.      real_server 192.168.1.70 3306 {
  28.          weight 3
  29.          notify_down /root/shutdown.sh
  30.          TCP_CHECK {
  31.              connect_timeout 10
  32.              nb_get_retry 3
  33.              delay_before_retry 3
  34.              connect_port 3306
  35.          } 
  36.      }
  37. }

然后编辑Slave的配置文件
vim /etc/keepalived/keepalived.conf

  1. ! Configuration File for keepalived
  2. global_defs {
  3.      router_id HA_MySQL
  4. }
  5.  
  6. vrrp_instance VI_1 {
  7.      state BACKUP
  8.      interface eth0
  9.      virtual_router_id 51
  10.      priority 90
  11.      advert_int 1
  12.      nopreempt
  13.      authentication {
  14.          auth_type PASS
  15.          auth_pass 1111
  16.      }
  17.      virtual_ipaddress {
  18.          192.168.1.199
  19.      }
  20. }
  21.  
  22. virtual_server 192.168.1.199 3306 {
  23.      delay_loop 2
  24.      lb_algo wrr
  25.      lb_kind DR
  26.      persistence_timeout 60
  27.      protocol TCP
  28.      real_server 192.168.1.80 3306 {
  29.          weight 3
  30.          notify_down /root/shutdown.sh
  31.          TCP_CHECK {
  32.              connect_timeout 10
  33.              nb_get_retry 3
  34.              delay_before_retry 3
  35.              connect_port 3306
  36.          }
  37.      }
  38. }

其中
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 可以考虑加入邮件告警的功能。

  1. #!/bin/bash
  2. 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高可用环境_mysql

如果kill掉Master的MySQL,KeepAlived会自动转移到Slave

在Master服务器上执行
killall mysqld

然后再次查看server_id,
短暂的失去连接之后,再次连接上VIP,server_id已经变为2,说明VIP已经指向了Slave

使用KeepAlived筹建MySQL高可用环境_mysql


nopreempt参数表示Master恢复正常之后,是否将VIP继续指向Master
这样的话,会再次引发切换。

两台服务器的KeepAlived会有心跳检测,
如果Master的MySQL服务挂了(3306端口挂了),那么他会选择自杀.
Slave的KeepAlived通过心跳检测发现这个情况,就会将VIP的请求接管。


KeepAlived还有很多参数没有明白是什么意思
生产环境的切换脚本,在Slave提升为Master之后,应该等待所有的中继日志应用完毕,否则可能丢失数据

欢迎大家阅读《使用KeepAlived筹建MySQL高可用环境_mysql》,跪求各位点评,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:使用KeepAlived筹建MySQL高可用环境_mysql
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址