Ubuntu搭建Mysql+Keepalived高可用如何实现
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章将为大家详细讲解有关Ubuntu搭建Mysql+Keepalived高可用如何实现,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Mysql5.5双机热备实现
千家信息网最后更新 2026年11月02日Ubuntu搭建Mysql+Keepalived高可用如何实现
这篇文章将为大家详细讲解有关Ubuntu搭建Mysql+Keepalived高可用如何实现,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
Mysql5.5双机热备
实现方案
安装两台Mysql
安装Mysql5.5
sudo apt-get updateapt-get install aptitudeaptitude install mysql-server-5.5或sudo apt-cache search mariadb-serverapt-get install -y mariadb-server-5.5
卸载
sudo apt-get remove mysql-*dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P配置权限
vim /etc/mysql/my.cnf#bind-address = 127.0.0.1mysql -u root -pgrant all on *.* to root@'%' identified by 'root' with grant option;flush privileges;
配置两台Mysql主主同步
配置节点1
vim /etc/mysql/my.cnf
server-id = 1 #节点IDlog_bin = mysql-bin.log #日志 binlog_format = "ROW" #日志格式auto_increment_increment = 2 #自增ID间隔(=节点数,防止ID冲突)auto_increment_offset = 1 #自增ID起始值(节点ID)binlog_ignore_db=mysql #不同步的数据库binlog_ignore_db=information_schemabinlog_ignore_db=performance_schema
重启mysql
service mysql restartmysql -u root -p
记录节点1的binlog日志位置
show master status;mysql-bin.000001 245 mysql,information_schema,performance_schema
配置节点2
vim /etc/mysql/my.cnf
server-id = 2log_bin = mysql-bin.log relay_log = mysql-relay-bin.log #中继日志log_slave_updates = ON #中继日志执行后,变化计入日志read_only = 0binlog_format = "ROW"auto_increment_increment = 2auto_increment_offset = 2binlog_ignore_db=mysqlbinlog_ignore_db=information_schemabinlog_ignore_db=performance_schemareplicate_ignore_db=mysqlreplicate_ignore_db=information_schemareplicate_ignore_db=performance_schema
配置主从
mysql -u root -pCHANGE MASTER TO MASTER_HOST='192.168.1.21', MASTER_USER='root', MASTER_PASSWORD='root', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=245;#开启同步start slave#查看同步状态 Slave_IO_Running和Slave_SQL_Running需要均为Yes show slave status;
记录节点2的binlog日志位置
show master status;mysql-bin.000001 1029 mysql,information_schema,performance_schema
配置主主(节点1)
vim /etc/mysql/my.cnf
relay_log = mysql-relay-bin.loglog_slave_updates = ONread_only = 0replicate_ignore_db=mysqlreplicate_ignore_db=information_schemareplicate_ignore_db=performance_schema
开启同步
mysql -u root -pCHANGE MASTER TO MASTER_HOST='192.168.1.20', MASTER_USER='root', MASTER_PASSWORD='root', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=1029;#开启同步start slave#查看同步状态 Slave_IO_Running和Slave_SQL_Running需要均为Yes show slave status;
异常处理
Could not initialize master info structure, more error messages can be found in the MySQL error log
解决:reset slave
安装配置Keepalived
安装Keepalived
#依赖sudo apt-get install -y libssl-devsudo apt-get install -y openssl sudo apt-get install -y libpopt-devsudo apt-get install -y libnl-dev libnl-3-dev libnl-genl-3.devapt-get install daemonapt-get install libc-devapt-get install libnfnetlink-devapt-get install libnl-genl-3.dev#安装apt-get install keepalived#编译安装cd /usr/localwget https://www.keepalived.org/software/keepalived-2.2.2.tar.gztar -zxvf keepalived-2.2.2.tar.gz mv keepalived-2.2.2 keepalived./configure --prefix=/usr/local/keepalivedsudo make && make install#开启日志sudo vim /etc/rsyslog.d/50-default.conf *.=info;*.=notice;*.=warn;\ auth,authpriv.none;\ cron,daemon.none;\ mail,news.none -/var/log/messages sudo service rsyslog restart tail -f /var/log/messagessudo mkdir /etc/sysconfigsudo cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/sudo cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/sudo cp /usr/local/keepalived/sbin/keepalived /sbin/sudo mkdir /etc/keepalivedsudo cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
配置节点信息
节点1 192.168.1.21
vim /etc/keepalived/keepalived.conf
global_defs { router_id MYSQL_HA #当前节点名}vrrp_instance VI_1 { state BACKUP #两台配置节点均为BACKUP interface eth0 #绑定虚拟IP的网络接口 virtual_router_id 51 #VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组 priority 101 #节点的优先级,另一台优先级改低一点 advert_int 1 #组播信息发送间隔,两个节点设置必须一样 nopreempt #不抢占,只在优先级高的机器上设置即可,优先级低的机器不设置 authentication { #设置验证信息,两个节点必须一致 auth_type PASS auth_pass 123456 } virtual_ipaddress { #指定虚拟IP,两个节点设置必须一样 192.168.1.111 }}virtual_server 192.168.1.111 3306 { #linux虚拟服务器(LVS)配置 delay_loop 2 #每个2秒检查一次real_server状态 lb_algo wrr #LVS调度算法,rr|wrr|lc|wlc|lblc|sh|dh lb_kind DR #LVS集群模式 ,NAT|DR|TUN persistence_timeout 60 #会话保持时间 protocol TCP #使用的协议是TCP还是UDP real_server 192.168.1.21 3306 { weight 3 #权重 notify_down /usr/local/bin/mysql.sh #检测到服务down后执行的脚本 TCP_CHECK { connect_timeout 10 #连接超时时间 nb_get_retry 3 #重连次数 delay_before_retry 3 #重连间隔时间 connect_port 3306 #健康检查端口 } } }节点2 192.168.1.20
vim /etc/keepalived/keepalived.conf
global_defs { router_id MYSQL_HA #当前节点名}vrrp_instance VI_1 { state BACKUP #两台配置节点均为BACKUP interface eth0 #绑定虚拟IP的网络接口 virtual_router_id 51 #VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组 priority 100 #节点的优先级,另一台优先级改低一点 advert_int 1 #组播信息发送间隔,两个节点设置必须一样 nopreempt #不抢占,只在优先级高的机器上设置即可,优先级低的机器不设置 authentication { #设置验证信息,两个节点必须一致 auth_type PASS auth_pass 123456 } virtual_ipaddress { #指定虚拟IP,两个节点设置必须一样 192.168.1.111 }}virtual_server 192.168.1.111 3306 { #linux虚拟服务器(LVS)配置 delay_loop 2 #每个2秒检查一次real_server状态 lb_algo wrr #LVS调度算法,rr|wrr|lc|wlc|lblc|sh|dh lb_kind DR #LVS集群模式 ,NAT|DR|TUN persistence_timeout 60 #会话保持时间 protocol TCP #使用的协议是TCP还是UDP real_server 192.168.1.20 3306 { weight 3 #权重 notify_down /usr/local/bin/mysql.sh #检测到服务down后执行的脚本 TCP_CHECK { connect_timeout 10 #连接超时时间 nb_get_retry 3 #重连次数 delay_before_retry 3 #重连间隔时间 connect_port 3306 #健康检查端口 } }}编写异常处理脚本
vim /usr/local/bin/mysql.sh
#!/bin/shkillall keepalived
分配权限
chmod +x /usr/local/bin/mysql.sh
###测试
重启keepalived
service keepalived restart
查看日志
tail -f /var/log/messages
查看虚拟IP
ip addr #或ip a 或ifconfig#主节点会有虚拟IPeth0:mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 52:54:9e:17:53:e5 brd ff:ff:ff:ff:ff:ff inet 192.168.1.21/24 brd 192.168.1.255 scope global eth0 valid_lft forever preferred_lft forever inet 192.168.1.111/32 scope global eth0 valid_lft forever preferred_lft forever
关闭主节点的mysql服务
service mysql stop
日志信息
#主节点Aug 10 15:00:30 i-7jaope92 Keepalived_healthcheckers[4949]: TCP connection to [192.168.1.20]:3306 failed !!!Aug 10 15:00:30 i-7jaope92 Keepalived_healthcheckers[4949]: Removing service [192.168.1.20]:3306 from VS [192.168.1.111]:3306Aug 10 15:00:30 i-7jaope92 Keepalived_healthcheckers[4949]: Executing [/usr/local/bin/mysql.sh] for service [192.168.1.20]:3306 in VS [192.168.1.111]:3306Aug 10 15:00:30 i-7jaope92 Keepalived_healthcheckers[4949]: Lost quorum 1-0=1 > 0 for VS [192.168.1.111]:3306Aug 10 15:00:30 i-7jaope92 Keepalived_vrrp[4950]: VRRP_Instance(VI_1) sending 0 priorityAug 10 15:00:30 i-7jaope92 kernel: [100918.976041] IPVS: __ip_vs_del_service: enter#从节点Aug 10 15:00:31 i-6gxo6kx7 Keepalived_vrrp[718]: VRRP_Instance(VI_1) Transition to MASTER STATEAug 10 15:00:32 i-6gxo6kx7 Keepalived_vrrp[718]: VRRP_Instance(VI_1) Entering MASTER STATE
虚拟IP从主节点漂移到从节点
ip aeth0:mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 52:54:9e:e7:26:5c brd ff:ff:ff:ff:ff:ff inet 192.168.1.20/24 brd 192.168.1.255 scope global eth0 valid_lft forever preferred_lft forever inet 192.168.1.111/32 scope global eth0 valid_lft forever preferred_lft forever
Mysql连接测试
mysql -h 192.168.1.111 -u root -p
关于"Ubuntu搭建Mysql+Keepalived高可用如何实现"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
节点
配置
日志
两个
优先级
同步
信息
时间
服务
机器
状态
检查
篇文章
脚本
一致
健康
位置
接口
更多
服务器
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
广州百单互联网科技有限公司
互联网科技会
金融科技还是互联网
互联网与科技金融数据
互联网科技公司发展
广州凡科互联网科技
互联网高科技企业
科技大学互联网专业好不好
上海电发互联网科技有限公司
江苏南京365互联网科技
栖莱科技互联网股份有限公司
未来五年的互联网科技
高科技互联网发展前景如何
科技互联网的核心竞争力
互联网金融科技公司的优势
伍佰万互联网科技怎么赚钱
互联网安防科技感
上海同邻互联网科技有限公司规模
长沙易易互联网科技有限公司
互联网科技自媒体灵感
保险科技 互联网保险
华服互联网科技怎么样
互联网科技的
蓝色互联网科技
互联网科技公司的市场部门
未来五年的互联网科技
翼展科技 首家互联网医院
互联网科技的前景
平安好医生打造互联网科技医疗
互联网企业和网络科技有限公司