千家信息网

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

发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,本篇内容介绍了"怎么用KeepAlived搭建MySQL高可用环境"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能
千家信息网最后更新 2024年11月30日怎么用KeepAlived搭建MySQL高可用环境

本篇内容介绍了"怎么用KeepAlived搭建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. virtual_server 192.168.1.199 3306 {

  21. delay_loop 2

  22. lb_algo wrr

  23. lb_kind DR

  24. persistence_timeout 60

  25. protocol TCP

  26. real_server 192.168.1.70 3306 {

  27. weight 3

  28. notify_down /root/shutdown.sh

  29. TCP_CHECK {

  30. connect_timeout 10

  31. nb_get_retry 3

  32. delay_before_retry 3

  33. connect_port 3306

  34. }

  35. }

  36. }

然后编辑Slave的配置文件
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 90

  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. virtual_server 192.168.1.199 3306 {

  21. delay_loop 2

  22. lb_algo wrr

  23. lb_kind DR

  24. persistence_timeout 60

  25. protocol TCP

  26. real_server 192.168.1.80 3306 {

  27. weight 3

  28. notify_down /root/shutdown.sh

  29. TCP_CHECK {

  30. connect_timeout 10

  31. nb_get_retry 3

  32. delay_before_retry 3

  33. connect_port 3306

  34. }

  35. }

  36. }

其中
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)



如果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之后,应该等待所有的中继日志应用完毕,否则可能丢失数据

参考:
http://blog.csdn.net/wzy0623/article/details/38587839

"怎么用KeepAlived搭建MySQL高可用环境"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

0