MySQL 使用 Heartbeat + NFS 实现高可用部署
目录
使用 Heartbeat + NFS 实现 MySQL 高可用集群的部署步骤。
0. 初始化主机名
确保所有节点的主机名已配置:
uname -n # 检查主机名
1. 配置 NFS 共享存储
编辑 NFS 导出配置,注意所有 MySQL 节点的 mysql 用户 UID 必须一致:
vi /etc/exports
/share_mysql_data *(rw,sync,anonuid=501,anongid=501)
2. 配置所有 MySQL 服务器
将所有 MySQL 节点的数据目录指向挂载的 NFS 共享存储。
3. 测试 MySQL 启动
测试各节点 MySQL 启动是否正常。注意:在共享存储情况下,同一时刻只能单独启动一个 MySQL 实例(避免数据冲突)。
4. 安装 Heartbeat
4.1 创建 HA 用户
groupadd haclient
useradd -g haclient hacluster
4.2 安装依赖和 Heartbeat
# 安装依赖
yum -y install bison bison-devel docbook-style-xsl flex \
gettext gettext-devel gnutls gnutls-devel intltool \
OpenIPMI OpenIPMI-devel
yum install cluster-glue
yum install resource-agents
yum install pacemaker # 可选
# 安装 Heartbeat
rpm -ivh PyXML-0.8.4-19.el6.x86_64.rpm
rpm -ivh heartbeat-libs-3.0.4-1.el6.x86_64.rpm --nodeps
rpm -ivh heartbeat-3.0.4-1.el6.x86_64.rpm
rpm -ivh heartbeat-devel-3.0.4-1.el6.x86_64.rpm
5. 配置 Heartbeat
编辑 haresource 配置文件,定义虚拟 IP、NFS 挂载和 MySQL 服务的管理:
vi haresource
host003 IPaddr::192.168.9.85/24/eth0:1 Filesystem::192.168.9.82:/share_mysql_data::/var/mysql/data::nfs mysql
配置说明:
host003:主节点主机名IPaddr::192.168.9.85/24/eth0:1:虚拟 IP 和网卡Filesystem::...::nfs:NFS 挂载资源mysql:MySQL 服务资源
6. 启动和测试
启动 Heartbeat 服务:
service heartbeat start
测试故障转移:
- 模拟主节点故障,观察从节点是否接管虚拟 IP 和 MySQL 服务
- 验证数据库连接是否正常切换到从节点
工作原理
- NFS 共享存储:所有 MySQL 数据保存在共享存储中,任何节点都能访问
- 虚拟 IP:应用连接到虚拟 IP,不依赖于具体的物理节点
- Heartbeat 监控:持续监控主节点健康状态,故障时自动转移虚拟 IP 和服务到从节点
- 自动故障转移:无需人工干预,实现透明的高可用转移