MySQL主从配置是确保数据高可用性和负载均衡的关键技术。本文将详细阐述如何配置MySQL主从复制,并提供实战演练中可能遇到的主从故障及其应对策略。
1. MySQL主从架构概述
在MySQL主从架构中,主服务器(Master)负责处理所有写请求,并记录数据变更。从服务器(Slave)同步主服务器上的数据,可以处理读请求,从而减轻主服务器的负担,提高系统性能。
2. 主从配置实战
以下是基于两台服务器的MySQL主从配置步骤:
2.1 环境准备
- 操作系统:Ubuntu 16.04
- MySQL版本:5.7.17
- 服务器配置:
- 主服务器(Master)IP:192.168.33.22
- 从服务器(Slave)IP:192.168.33.33
2.2 主服务器配置
- 更改配置文件
/etc/mysql/mysql.conf.d/mysqld.cnf
:
bind-address = 192.168.33.22
server-id = 1
log-bin = /var/log/mysql/mysql-bin.log
- 重启MySQL服务:
sudo systemctl restart mysql
- 创建用于主从复制的用户:
mysql -u root -p
CREATE USER 'slave1'@'192.168.33.33' IDENTIFIED BY 'slavepass';
GRANT REPLICATION SLAVE ON *.* TO 'slave1'@'192.168.33.33';
FLUSH PRIVILEGES;
2.3 从服务器配置
- 更改配置文件
/etc/mysql/mysql.conf.d/mysqld.cnf
:
server-id = 2
- 重启MySQL服务:
sudo systemctl restart mysql
- 设置主服务器信息:
mysql -u root -p
CHANGE MASTER TO
MASTER_HOST='192.168.33.22',
MASTER_USER='slave1',
MASTER_PASSWORD='slavepass',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=4;
START SLAVE;
3. 主从故障应对策略
3.1 从库的I/O线程停止
- 检查主服务器状态:
SHOW SLAVE STATUS \G;
如果发现Slave_IO_Running
为NO
,检查主服务器是否可用。
如果主服务器正常,尝试重启从服务器:
STOP SLAVE;
START SLAVE;
3.2 从库的SlaveIORunning为NO
检查主从服务器网络连接。
检查主服务器配置文件,确保binlog
已启用。
如果问题依旧,尝试重新配置主从复制。
3.3 从库的中继日志损坏
- 使用
mysqlbinlog
工具检查中继日志:
mysqlbinlog /path/to/relay-bin.000001
如果发现错误,尝试恢复中继日志。
如果无法恢复,删除损坏的中继日志,并重新启动从服务器。
4. 总结
MySQL主从复制是确保数据高可用性和负载均衡的关键技术。通过本文的实战演练,您应该掌握了MySQL主从配置的方法,以及应对常见主从故障的策略。在实际应用中,请根据具体情况灵活运用,以确保系统稳定运行。