MySQL Keepalived HA Umount 共享存储 CentOS 7

在构建高可用性 (High Availability, HA) 的 MySQL 数据库集群时,使用共享存储可以提供数据的冗余和可靠性。本文将介绍如何在 CentOS 7 上使用 Keepalived 和共享存储来实现 MySQL 的高可用性。

准备工作

首先,我们需要安装和配置 MySQL、Keepalived 和共享存储。

安装和配置 MySQL

首先,使用以下命令安装 MySQL:

$ sudo yum install mysql-server

安装完成后,需要进行基本的配置。编辑 /etc/my.cnf 文件,设置 MySQL 的监听地址和端口号,如下所示:

[mysqld]
...
bind-address = 0.0.0.0
port = 3306
...

保存并关闭文件后,启动 MySQL 服务:

$ sudo systemctl start mysqld

安装和配置 Keepalived

使用以下命令安装 Keepalived:

$ sudo yum install keepalived

安装完成后,编辑 /etc/keepalived/keepalived.conf 文件,配置 Keepalived 的虚拟 IP 地址和监控脚本。以下是一个示例配置:

global_defs {
    router_id mysql_ha
}

vrrp_script chk_mysql {
    script "/etc/keepalived/chk_mysql.sh"
    interval 2
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 101
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.0.10
    }
    track_script {
        chk_mysql
    }
}

在上述配置中,我们需要创建一个名为 chk_mysql.sh 的监控脚本,用于检测 MySQL 服务的运行状态。以下是一个示例脚本:

#!/bin/bash

if mysql -uroot -p'password' -e 'exit' >/dev/null 2>&1; then
    exit 0
else
    exit 1
fi

保存并关闭文件后,启动 Keepalived 服务:

$ sudo systemctl start keepalived

配置和挂载共享存储

在 CentOS 7 上,我们可以使用 NFS (Network File System) 来实现共享存储。首先,安装 NFS 服务器:

$ sudo yum install nfs-utils

然后,创建共享目录并设置访问权限:

$ sudo mkdir /data
$ sudo chmod 777 /data

编辑 /etc/exports 文件,配置共享目录的访问权限和客户端 IP 地址:

/data 192.168.0.0/24(rw,sync,no_root_squash)

保存并关闭文件后,启动 NFS 服务:

$ sudo systemctl start nfs-server

在每个节点上,使用以下命令挂载共享存储:

$ sudo mount -t nfs 192.168.0.1:/data /data

配置 MySQL 数据库

在共享存储上创建一个空的 MySQL 数据目录:

$ sudo mkdir /data/mysql

将 MySQL 数据目录的权限设置为 MySQL 用户:

$ sudo chown -R mysql:mysql /data/mysql

编辑 /etc/my.cnf 文件,将 MySQL 数据目录设置为共享存储的路径:

[mysqld]
...
datadir = /data/mysql
...

保存并关闭文件后,重启 MySQL 服务:

$ sudo systemctl restart mysqld

设置数据库复制

在主服务器上创建一个用于数据库复制的用户:

$ sudo mysql -uroot -p'password' -e "CREATE USER 'replication'@'%' IDENTIFIED BY 'password';"
$ sudo mysql -uroot -p'password' -e "GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';"
$ sudo mysql -uroot -p'password' -e "FLUSH PRIVILEGES;"

然后,获取主服务器的二进制日志和位置:

$ sudo mysql -uroot -p'password' -e "SHOW MASTER STATUS;"

记录下输出结果中的 FilePosition 的值,用于配置从服务器。

在从服务器上配置复制:

$ sudo mysql -uro