mysql5.7 双机热备
时间: 2025-01-08 17:59:39 浏览: 1
### 配置 MySQL 5.7 双机热备
#### 主要组件介绍
为了实现MySQL 5.7的双机热备,通常会采用主-主复制模式以及Keepalived来提供高可用性。在这种架构中,两台服务器互为主备关系,在一台主机发生故障时能够自动切换到另一台备用机器上继续服务。
#### 安装准备
确保两个节点都已正确安装并启动了MySQL Server版本为5.7的服务实例[^4]。对于通过YUM方式部署的情况,默认的数据目录位于`/var/lib/mysql`,而配置文件则存放在`/etc/my.cnf.d/`下的相应位置[^5]。
#### 修改my.cnf配置文件
针对每台服务器上的MySQL配置文件做出如下调整:
```ini
server-id=1 # Master1设为1;Master2设为2或其他唯一ID
log-bin=mysql-bin # 开启二进制日志记录功能
binlog-format=MIXED # 推荐使用混合格式的日志条目形式
relay-log=/var/log/mysql-relay.log # 中继日志路径设定
auto-increment-offset=1 # 自增字段偏移量设置(Master1)
# auto-increment-offset=2 (Master2)
auto-increment-increment=2 # 自增值间隔数定义
```
注意:上述参数中的某些项需依据实际环境做适当修改,比如`server-id`应保证在整个集群内具有唯一性[^1]。
#### 创建用于同步数据的账户
在每一台MySQL服务器上创建专门用来执行跨库操作的账号,并赋予相应的权限以便于后续建立连接与传输变更信息:
```sql
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
```
#### 启动主从同步过程
完成以上准备工作之后就可以着手构建起双方之间的关联关系了。先让Slave端向对方发起请求获取最新的状态快照,再开启监听来自远端发送过来的事物更新通知。
##### 在Master A 上:
```sql
CHANGE MASTER TO
MASTER_HOST='B_IP',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=<POS>;
START SLAVE;
SHOW SLAVE STATUS\G;
```
##### 在Master B 上重复相同的操作但是交换A和B的角色即可。
#### 使用 Keepalived 实现 VIP 切换机制
为了让客户端应用程序可以透明地访问当前处于活动状态的那一方,可以通过部署Keepalived软件包来管理浮动IP地址资源分配策略。当检测到某一边出现异常状况时就会触发转移动作从而保障业务连续性不受影响[^2]。
#### 处理只读错误提示
如果遇到因为某个实例变为只读而导致无法正常提交事务的情形,则可能是由于该成员正处于被动角色所致。此时应当核查其是否已经成功完成了角色转换成为新的领导者之前不要尝试写入任何更改指令直到确认无误为止[^3]。
阅读全文