您的位置:

MySQL Keepalived:实现双主双活的高可用性方案

MySQL 是广泛使用的关系型数据库管理系统,保证其高可用性对于许多企业是必不可少的。为了保证 MySQL 的高可用性,通常需要实现双主双活的架构。MySQL Keepalived 是一种常用的实现双主双活的高可用性方案。在本文中,我们将从以下几个方面详细阐述 MySQL Keepalived 的特点和用法:

一、Keepalived 简介

Keepalived 是一个类似于 Linux HA(High Availability)的软件,常用于实现 TCP/IP 服务的高可用性。Keepalived 的核心是实现了 VRRP(虚拟路由冗余协议),实现了 IP 地址自动切换功能,可以帮助管理员实现高可用性的配置。

二、MySQL 双主双活

MySQL 双主双活是指将多个 MySQL 实例配置成主从复制,然后将多个主实例连接在一起,使得任意一个主实例都可以处理客户端的读写请求。这种架构可以保证主从切换时客户端不需要做任何动作,实现高可用性。

三、MySQL Keepalived 的特点

MySQL Keepalived 的特点如下: 1、自动检测是否故障 MySQL Keepalived 可以检测 MySQL 相关的系统进程,实时监控 MySQL 系统状态,自动检测是否存在故障。 2、快速切换 IP 地址 MySQL Keepalived 能够快速切换 IP 地址,确保服务不间断,提高 MySQL 系统的可用性。 3、实现双主双活 MySQL Keepalived 集成 VRRP 协议,可以将多个 MySQL 实例配置成双主双活的模式,同时支持负载均衡。

四、使用 MySQL Keepalived 进行双主双活架构

接下来我们以 CentOS 7.4 系统为例,演示如何使用 MySQL Keepalived 实现双主双活的高可用性架构。 1、环境准备 首先需要安装 MySQL 和 Keepalived:
yum install -y mariadb-server
yum install -y keepalived  
2、配置 MySQL 双主双活 可以在两台 Linux 服务器上配置 MySQL 主从复制,然后将两个主服务器设置为双主双活模式。相关代码如下:
# 在服务器 server1 上执行:
stop mysql
cd /var/lib/mysql
rm -rf *
systemctl start mariadb
mysql_secure_installation
systemctl stop mariadb

# 在服务器 server2 上执行对应操作
3、配置 Keepalived 编辑配置文件 /etc/keepalived/keepalived.conf,示例如下:
vrrp_script chk_mysql {
    script "/etc/keepalived/chk_mysql.sh"
    interval 1
    weight 2
}

vrrp_instance mysqlvip {
    state MASTER              // 必须使用 MASTER MODE
    interface eth0            // 使用你的网卡
    virtual_router_id 1
    priority 100              // server1 优先级为 100, server2 为 90
    advert_int 1
    virtual_ipaddress {
        192.168.200.100/24    // 虚拟 IP 地址
    }
    track_script {
        chk_mysql
    }
}

# cat /etc/keepalived/chk_mysql.sh
#!/bin/bash
mysqld_status=`systemctl status mariadb | grep running | wc -l`
if [ $mysqld_status -eq 0 ]
then
    exit 1
else
    exit 0
fi
说明:Keepalived 配置文件指定使用虚拟路由 ID 是 1,主机名为 mysqlvip,使用网卡 eth0,虚拟 IP 地址为 192.168.200.100。 4、运行 Keepalived 和 MySQL 在两个服务器上分别运行如下命令来启动 Keepalived 和 MySQL:
# 启动 Keepalived 和 MySQL
systemctl start keepalived
systemctl start mariadb

# 检查 Keepalived 和 MySQL 是否正常运行
systemctl status keepalived
systemctl status mariadb
5、测试 在客户端上安装 MySQL 客户端,使用刚才配置的虚拟 IP 测试连接。相关命令如下:
# 在客户端连接数据库
mysql -u root -h 192.168.200.100 -p

# 创建表并写入数据
create database testdb;
use testdb;
create table users(id INT, name VARCHAR(20));
insert into users(id, name) values(1,"Tom");
select * from users;

五、总结

MySQL Keepalived 是一种实现 MySQL 双主双活的高可用性方案,许多企业在实践中也广泛应用。通过本文的介绍,我们可以了解到 MySQL Keepalived 的特点和使用方法。使用 MySQL Keepalived 构建双主双活架构可以有效提高 MySQL 系统的可用性,建议有需要的企业可以尝试使用。