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 主服务器配置

  1. 更改配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 192.168.33.22
server-id = 1
log-bin = /var/log/mysql/mysql-bin.log
  1. 重启MySQL服务:
sudo systemctl restart mysql
  1. 创建用于主从复制的用户:
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 从服务器配置

  1. 更改配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf
server-id = 2
  1. 重启MySQL服务:
sudo systemctl restart mysql
  1. 设置主服务器信息:
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线程停止

  1. 检查主服务器状态:
SHOW SLAVE STATUS \G;

    如果发现Slave_IO_RunningNO,检查主服务器是否可用。

    如果主服务器正常,尝试重启从服务器:

STOP SLAVE;
START SLAVE;

3.2 从库的SlaveIORunning为NO

    检查主从服务器网络连接。

    检查主服务器配置文件,确保binlog已启用。

    如果问题依旧,尝试重新配置主从复制。

3.3 从库的中继日志损坏

  1. 使用mysqlbinlog工具检查中继日志:
mysqlbinlog /path/to/relay-bin.000001

    如果发现错误,尝试恢复中继日志。

    如果无法恢复,删除损坏的中继日志,并重新启动从服务器。

4. 总结

MySQL主从复制是确保数据高可用性和负载均衡的关键技术。通过本文的实战演练,您应该掌握了MySQL主从配置的方法,以及应对常见主从故障的策略。在实际应用中,请根据具体情况灵活运用,以确保系统稳定运行。