千家信息网

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

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容介绍了"怎么用KeepAlived搭建MySQL高可用环境"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能
千家信息网最后更新 2026年11月02日怎么用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高可用环境"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

服务 服务器 环境 再次 检测 内容 参数 情况 指向 文件 时间 更多 知识 端口 脚本 切换 检查 配置 实用 学有所成 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网金融科技 亿人帮互联网科技有限公司 互联网核心科技是什么 工业互联网科技新基建 美国互联网科技 奇酷互联网科技公司 互联网金融科技创新 汉立互联网科技有限公司联系电话 互联网金融中的现代科技 深圳市优智互联网科技有限公司 国大互联网教育科技有限公司薪资 江苏苏星互联网科技有限公司 21世纪互联网科技成就 半导体是互联网高科技吗 全球科技与互联网公司市值变化 唯美互联网科技 杭州融税互联网科技有限公司 杭州科技互联网公司有哪些 华人运通互联网科技公司 高科技和互联网的现代国家 科技互联网企业 互联网科技会 天扬科技互联网广告 深圳前海聚择互联网科技有限公司 科技与互联网哪个更好 栖莱科技互联网股份有限公司 互联网媒体平台算高科技产业 为客找房互联网科技公司怎么样 扫呗互联网科技有限公司 互联网公司属于科技吗
0