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;"
记录下输出结果中的 File
和 Position
的值,用于配置从服务器。
在从服务器上配置复制:
$ sudo mysql -uro