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

Debian数据库高可用实战指南(基于MySQL + Keepalived实现高可用架构)

在现代IT基础设施中,Debian数据库高可用是保障业务连续性的关键。本文将手把手教你如何在Debian系统上搭建一套稳定、可靠的数据库高可用方案,即使你是个Linux小白也能轻松上手!

什么是数据库高可用?

数据库高可用(High Availability, HA)是指当一台数据库服务器发生故障时,系统能自动切换到备用服务器,从而保证服务不中断。常见的实现方式包括主从复制、双机热备、集群等。

Debian数据库高可用实战指南(基于MySQL + Keepalived实现高可用架构) Debian数据库高可用 MySQL主从复制 Keepalived高可用 Debian HA集群 第1张

本方案技术栈

  • 操作系统:Debian 11(Bullseye)
  • 数据库:MySQL 8.0
  • 高可用工具:Keepalived
  • 复制机制:MySQL 主从复制(Master-Slave Replication)

准备工作

你需要两台Debian服务器,配置如下:

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

确保两台服务器网络互通,并关闭防火墙或开放相应端口(3306、22、6443等)。

第一步:安装MySQL

在两台服务器上分别执行以下命令安装MySQL:

sudo apt updatesudo apt install -y mysql-server mysql-client# 启动并设置开机自启sudo systemctl enable mysqlsudo systemctl start mysql

第二步:配置MySQL主从复制

2.1 配置主服务器(Server A)

编辑MySQL配置文件:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

在 [mysqld] 段落下添加或修改以下内容:

[mysqld]server-id = 1log-bin = mysql-binbind-address = 0.0.0.0binlog-do-db = your_database_name  # 可选,指定同步的数据库

重启MySQL:

sudo systemctl restart mysql

创建用于复制的用户:

mysql -u root -p-- 在MySQL命令行中执行CREATE USER 'repl'@'%' IDENTIFIED BY 'StrongPassword123!';GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';FLUSH PRIVILEGES;

记录当前二进制日志位置:

SHOW MASTER STATUS;

记下 File 和 Position 的值,稍后在从服务器配置中使用。

2.2 配置从服务器(Server B)

同样编辑配置文件:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

修改 server-id 为唯一值(如2):

[mysqld]server-id = 2relay-log = mysql-relay-binread_only = 1

重启MySQL:

sudo systemctl restart mysql

配置主从关系(替换为你自己的主服务器IP和日志信息):

mysql -u root -p-- 在MySQL命令行中执行CHANGE MASTER TO  MASTER_HOST='192.168.1.10',  MASTER_USER='repl',  MASTER_PASSWORD='StrongPassword123!',  MASTER_LOG_FILE='mysql-bin.000001',  MASTER_LOG_POS=156;START SLAVE;

检查从服务器状态:

SHOW SLAVE STATUS\G

确保 Slave_IO_RunningSlave_SQL_Running 均为 Yes

第三步:安装并配置Keepalived

Keepalived用于实现虚拟IP(VIP)的故障转移。在两台服务器上都安装:

sudo apt install -y keepalived

3.1 配置主服务器(Server A)

sudo nano /etc/keepalived/keepalived.conf

写入以下内容:

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 yourpassword    }    virtual_ipaddress {        192.168.1.100/24    }    track_script {        chk_mysql    }}

3.2 配置从服务器(Server B)

配置几乎相同,只需修改 state 为 BACKUP,priority 为 90:

vrrp_instance VI_1 {    state BACKUP    interface eth0    virtual_router_id 51    priority 90    ...}

3.3 创建MySQL健康检查脚本

在两台服务器上创建检查脚本:

sudo nano /etc/keepalived/check_mysql.sh

内容如下:

#!/bin/bashif ! mysqladmin ping -h localhost --silent; then    exit 1else    exit 0fi

赋予执行权限:

sudo chmod +x /etc/keepalived/check_mysql.sh

启动Keepalived:

sudo systemctl enable keepalivedsudo systemctl start keepalived

第四步:测试高可用

现在,客户端应通过虚拟IP 192.168.1.100 连接数据库。你可以尝试以下操作验证高可用性:

  1. 在主服务器上执行 sudo systemctl stop mysql
  2. 观察VIP是否自动漂移到从服务器(使用 ip addr show 查看)
  3. 恢复主服务器MySQL后,VIP不会自动切回(除非配置了抢占模式)

总结

通过本教程,你已经成功搭建了一套基于Debian HA集群的数据库高可用环境。该方案结合了MySQL主从复制Keepalived高可用,具备自动故障转移能力,适用于中小型企业生产环境。

记住定期备份数据,并监控主从延迟。未来你还可以扩展为MHA(Master High Availability)或使用Galera Cluster实现多主架构。

希望这篇关于Debian数据库高可用的教程对你有帮助!如有疑问,欢迎在评论区留言交流。