当前位置:首页 > Centos > 正文

CentOS数据库高可用实战指南(基于MySQL主从复制与Keepalived实现Linux数据库集群)

在企业级应用中,数据库的稳定性与高可用性至关重要。一旦数据库宕机,可能导致业务中断、数据丢失等严重后果。本文将手把手教你如何在 CentOS 系统上搭建一套高可用的数据库架构,结合 MySQL主从复制Keepalived 技术,构建一个稳定可靠的 Linux数据库集群。即使你是 Linux 新手,也能轻松上手!

CentOS数据库高可用实战指南(基于MySQL主从复制与Keepalived实现Linux数据库集群) CentOS数据库高可用 MySQL主从复制 Keepalived高可用方案 Linux数据库集群 第1张

一、什么是数据库高可用?

数据库高可用(High Availability, HA)是指通过技术手段,确保数据库服务在出现硬件故障、网络中断或软件崩溃时,仍能持续对外提供服务,最大限度减少停机时间。

常见的高可用方案包括:主从复制、双主架构、MHA(Master High Availability)、Pacemaker + Corosync、以及本文重点介绍的 Keepalived + MySQL 主从复制

二、环境准备

我们需要两台 CentOS 7 服务器(最小化安装即可):

  • 主节点(Master):IP 192.168.1.10
  • 从节点(Slave):IP 192.168.1.11
  • 虚拟IP(VIP):192.168.1.100(用于客户端连接)

确保两台服务器之间网络互通,并关闭防火墙或开放必要端口(3306、22、vrrp 协议等)。

三、部署MySQL主从复制

首先,在两台服务器上安装 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

1. 配置主节点(Master)

编辑 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;

记下 FilePosition 的值,稍后从节点配置会用到。

2. 配置从节点(Slave)

同样编辑 /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_RunningSlave_SQL_Running 是否均为 Yes,表示主从复制已成功启动。

四、配置 Keepalived 实现 VIP 自动切换

Keepalived 通过 VRRP 协议实现虚拟 IP 的故障转移。当主节点宕机,VIP 会自动漂移到从节点。

1. 安装 Keepalived

# 两台服务器均执行sudo yum install -y keepalived

2. 配置主节点 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

3. 配置从节点 Keepalived

配置类似,只需修改以下几处:

global_defs {   router_id MYSQL_HA_SLAVE}...(其余相同)vrrp_instance VI_1 {    state BACKUP    priority 90   # 必须低于主节点    ...}

4. 启动 Keepalived

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),但对于大多数中小型企业来说,已能满足基本的高可用需求。

建议定期测试故障切换流程,并做好监控告警,确保系统长期稳定运行。