基于MySQL 5.7+keepalived的双主搭建
需积分: 0 10 浏览量
更新于2024-03-25
收藏 450KB PDF 举报
### 基于MySQL 5.7 + Keepalived的双主搭建详解
#### 一、项目背景与目的
在高可用性和数据安全性的需求下,很多企业选择使用双主或多主架构来确保数据库服务的稳定运行。本文将详细介绍如何通过MySQL 5.7和Keepalived构建一个双主(Master-Master)加一个从库(Slave)的高可用集群,以实现故障自动转移(Failover)功能,并提高系统的整体稳定性和可靠性。
#### 二、环境准备
**硬件配置:**
- **节点1:** Node81, IP地址为192.168.11.81
- **节点2:** Node82, IP地址为192.168.11.11.82
- **虚拟IP:** W_IP为192.168.11.100
**软件安装:**
1. **Keepalived安装:**
- 首先安装EPEL仓库:
```
rpm -ivh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
```
- 安装Keepalived:
```
yum install keepalived
```
- 安装MySQL Python库以便Keepalived能够与MySQL进行交互:
```
yum install MySQL-python
```
2. **MySQL安装:**
- 使用MySQL 5.6.22版本作为示例,实际操作中建议使用MySQL 5.7。
- 创建监控用户:
```
GRANT REPLICATION CLIENT ON *.* TO 'monitor'@'%' IDENTIFIED BY 'm0n1tor';
```
这个用户用于Keepalived检查MySQL状态时使用。
3. **配置Keepalived:**
- 编辑`/etc/keepalived/keepalived.conf`文件,定义VRRP实例和脚本。
- `vrrp_script vs_mysql_82`: 定义了检查MySQL状态的脚本路径及执行频率。
- `vrrp_instance VI_82`: 定义了VRRP实例的状态、接口、优先级等信息。
#### 三、解决依赖问题
**错误处理:**
- 在尝试执行`/etc/keepalived/checkMySQL.py`时遇到如下错误:
```
Traceback (most recent call last):
File "/etc/keepalived/checkMySQL.py", line 8, in <module>
import MySQLdb
File "/usr/local/lib/python2.7/site-packages/MySQLdb/__init__.py", line 19, in <module>
import _mysql
ImportError: libmysqlclient.so.18: cannot open shared object file: No such file or directory
```
- 解决方法:
- 修改`/etc/ld.so.conf.d/mysql-x86_64.conf`文件,添加MySQL的lib目录路径:
```
/usr/local/mysql/lib/
```
- 执行`ldconfig`命令更新链接器缓存。
#### 四、配置文件详解
**Keepalived配置文件:**
- `/etc/keepalived/keepalived.conf`
- `vrrp_script vs_mysql_82`: 定义了一个检查MySQL状态的脚本,每30秒执行一次。
- `vrrp_instance VI_82`: 定义了VRRP实例VI_82的相关参数,包括状态、接口、虚拟IP等。
- `authentication`: 定义了认证方式为密码认证,密码为8位。
- `track_script`: 指定跟踪的脚本名称,即`vs_mysql_82`。
**Python脚本:**
- `checkMySQL.py`: 该脚本用于检测本地MySQL是否可以正常连接。脚本的参数包括目标MySQL服务器的IP地址和端口号。
#### 五、注意事项
1. **双主模式下read-only处理:**
- 在双主模式下,需要对read-only属性进行特殊处理,防止写操作被误认为是只读操作。
- 可以在Master/Backup模式下,对read-only属性进行相应的配置调整。
2. **虚拟IP的分配:**
- 虚拟IP地址192.168.11.100应该在两个节点上都配置为相同的值。
- 在Keepalived配置文件中,通过`virtual_ipaddress`指令指定虚拟IP地址。
3. **优先级设置:**
- `priority`属性决定了当发生故障时,哪个节点会成为新的主节点。
- 通常情况下,两个节点的优先级应设置为相同或接近的值,以便根据实际情况动态调整。
#### 六、总结
通过上述步骤,我们成功地在MySQL 5.7的基础上构建了一个基于Keepalived的双主高可用集群。这种架构不仅可以提高系统的稳定性,还能有效应对单点故障,确保业务连续性。在实际部署过程中,还需要根据具体的网络环境和业务需求进行相应的调整和优化。


CodeGolang
- 粉丝: 182
最新资源
- python高精度秒表(exe)
- 在线个性化定制配置生成平台
- 2019年CCF大数据与计算智能大赛汽车销售销量预测冠军解决方案
- Android系统下同Wi-Fi环境下投屏(源码+项目说明)
- 重庆大学微电子与通信工程学院课程设计(通信系统综合设计与实践)项目代码及报告
- 2023睿抗机器人开发者大赛参赛作品合集
- 医院信息管理系统设计与实现
- 近似最近邻分类算法(ANN)原理与应用
- CT图像 + python + 三维展示
- 【轨迹预测】基于matlab墙面喷涂机预测建模轨迹优化【含Matlab源码 13866期】.zip
- 【流体力学】基于matlab多相晶格玻尔兹曼方法LBM液滴动力学仿真【含Matlab源码 13874期】含报告.zip
- 【流体力学】基于matlab LBM流体仿真以模拟流经多孔介质的流动【含Matlab源码 13875期】含报告.zip
- 【流体力学】基于matlab Shan-Chen格子玻尔兹曼模型模拟气液两相流【含Matlab源码 13872期】.zip
- 【优化排课】基于matlab遗传算法GA求解每周课程时间表排课优化问题【含Matlab源码 13868期】.zip
- 【振荡器】基于matlab具有时间延迟的耦合相位振荡器的仓本网络模型上运行动态仿真【含Matlab源码 13876期】.zip
- C#实现遍历文件夹及子目录读取文件