在企业级应用中,数据库的稳定性与高可用性至关重要。一旦数据库宕机,可能导致业务中断、数据丢失等严重后果。本文将手把手教你如何在 CentOS 系统上搭建一套高可用的数据库架构,结合 MySQL主从复制 与 Keepalived 技术,构建一个稳定可靠的 Linux数据库集群。即使你是 Linux 新手,也能轻松上手!
数据库高可用(High Availability, HA)是指通过技术手段,确保数据库服务在出现硬件故障、网络中断或软件崩溃时,仍能持续对外提供服务,最大限度减少停机时间。
常见的高可用方案包括:主从复制、双主架构、MHA(Master High Availability)、Pacemaker + Corosync、以及本文重点介绍的 Keepalived + MySQL 主从复制。
我们需要两台 CentOS 7 服务器(最小化安装即可):
确保两台服务器之间网络互通,并关闭防火墙或开放必要端口(3306、22、vrrp 协议等)。
首先,在两台服务器上安装 MySQL(以 MySQL 5.7 为例):
# 在两台服务器上执行sudo yum install -y wgetwget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpmsudo rpm -ivh mysql57-community-release-el7-11.noarch.rpmsudo yum install -y mysql-server# 启动并设置开机自启sudo systemctl start mysqldsudo systemctl enable mysqld 编辑 MySQL 配置文件 /etc/my.cnf,在 [mysqld] 段落下添加:
[mysqld]server-id=1log-bin=mysql-binbinlog-format=rowbind-address=0.0.0.0 重启 MySQL 并创建用于复制的用户:
sudo systemctl restart mysqld# 获取临时密码sudo grep 'temporary password' /var/log/mysqld.log# 登录 MySQL(替换 your_temp_password)mysql -u root -p-- 在 MySQL 中执行ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrong!Pass123';CREATE USER 'repl'@'%' IDENTIFIED BY 'ReplPass123!';GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';FLUSH PRIVILEGES;SHOW MASTER STATUS; 记下 File 和 Position 的值,稍后从节点配置会用到。
同样编辑 /etc/my.cnf:
[mysqld]server-id=2relay-log=relay-logread_only=1 重启 MySQL 并配置主从同步:
sudo systemctl restart mysqldmysql -u root -p-- 执行(替换为主节点的 File 和 Position)CHANGE MASTER TO MASTER_HOST='192.168.1.10', MASTER_USER='repl', MASTER_PASSWORD='ReplPass123!', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;START SLAVE;SHOW SLAVE STATUS\G 检查 Slave_IO_Running 和 Slave_SQL_Running 是否均为 Yes,表示主从复制已成功启动。
Keepalived 通过 VRRP 协议实现虚拟 IP 的故障转移。当主节点宕机,VIP 会自动漂移到从节点。
# 两台服务器均执行sudo yum install -y keepalived 编辑 /etc/keepalived/keepalived.conf:
global_defs { router_id MYSQL_HA_MASTER}vrrp_script chk_mysql { script "/etc/keepalived/check_mysql.sh" interval 2 weight -5 fall 2 rise 1}vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.100/24 } track_script { chk_mysql }} 创建健康检查脚本 /etc/keepalived/check_mysql.sh:
#!/bin/bashif ! pgrep mysqld &>/dev/null; then systemctl stop keepalivedfi 赋予执行权限:
chmod +x /etc/keepalived/check_mysql.sh 配置类似,只需修改以下几处:
global_defs { router_id MYSQL_HA_SLAVE}...(其余相同)vrrp_instance VI_1 { state BACKUP priority 90 # 必须低于主节点 ...} sudo systemctl start keepalivedsudo systemctl enable keepalived 此时,VIP 192.168.1.100 应绑定在主节点上。你可以用 ip addr show 查看。
1. 从客户端连接 VIP:
mysql -h 192.168.1.100 -u root -p
2. 在主节点上执行:
sudo systemctl stop mysqld
3. 观察 VIP 是否自动漂移到从节点(约 2~5 秒内)。
4. 恢复主节点后,VIP 不会自动切回(除非配置抢占模式),但数据会通过主从复制保持一致。
通过本文,你已经成功搭建了一套基于 CentOS数据库高可用 的解决方案。该方案结合了 MySQL主从复制 的数据冗余能力与 Keepalived高可用方案 的快速故障切换机制,构成了一个低成本、高可靠性的 Linux数据库集群。
虽然此方案不能实现自动主从切换(需配合 MHA 或 Orchestrator),但对于大多数中小型企业来说,已能满足基本的高可用需求。
建议定期测试故障切换流程,并做好监控告警,确保系统长期稳定运行。
本文由主机测评网于2025-12-22发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/20251211418.html