MySQL的主从复制(Master-Slave Replication)是一种常见的数据库高可用性解决方案,通过将数据从一个主服务器(Master)同步到一个或多个从服务器(Slave),可以实现数据备份、读写分离等功能。以下是详细的配置步骤:
1. 准备工作
1.1 确保主从服务器时间同步
主从服务器的时间必须保持一致,否则可能会导致数据不一致的问题。可以通过NTP服务来确保两台服务器的时间同步。
1.2 检查MySQL版本
确保主从服务器的MySQL版本相同或兼容,以避免因版本差异导致的复制问题。
2. 配置主服务器
2.1 修改主服务器的my.cnf配置文件
在主服务器的MySQL配置文件(通常是`/etc/my.cnf`或`/etc/mysql/my.cnf`)中添加以下内容:
[mysqld] server-id=1 log-bin=mysql-bin binlog-format=MIXED
其中,`server-id`是唯一的标识符,确保每个服务器的ID不同;`log-bin`用于启用二进制日志记录;`binlog-format`指定日志格式。
2.2 创建用于复制的用户
在主服务器上创建一个专门用于复制的MySQL用户,并赋予相应的权限:
CREATE USER \'repl\'@\'%\' IDENTIFIED BY \'password\'; GRANT REPLICATION SLAVE ON . TO \'repl\'@\'%\'; FLUSH PRIVILEGES;
2.3 获取当前二进制日志位置
执行`SHOW MASTER STATUS;`命令,记录下`File`和`Position`的值,稍后在从服务器配置时会用到。
3. 配置从服务器
3.1 修改从服务器的my.cnf配置文件
在从服务器的MySQL配置文件中添加以下内容:
[mysqld] server-id=2 relay-log=mysql-relay-bin
同样,`server-id`需要设置为与主服务器不同的唯一值。
3.2 配置从服务器连接主服务器
使用`CHANGE MASTER TO`命令配置从服务器连接主服务器,并指定之前记录的二进制日志文件和位置:
CHANGE MASTER TO MASTER_HOST=\'master_ip\', MASTER_USER=\'repl\', MASTER_PASSWORD=\'password\', MASTER_LOG_FILE=\'mysql-bin.000001\', MASTER_LOG_POS=154;
启动从服务器的复制进程:
START SLAVE;
4. 验证复制状态
在从服务器上执行`SHOW SLAVE STATUSG;`命令,检查复制状态。重点关注以下几个字段:
常见故障排查方法
尽管按照上述步骤配置了主从复制,但在实际使用过程中可能会遇到各种问题。以下是几种常见故障及其排查方法:
1. 复制延迟(Replication Lag)
如果发现从服务器的数据更新明显滞后于主服务器,可能是由于网络延迟、从服务器负载过高或SQL语句执行效率低下等原因造成的。可以通过以下方式进行排查:
2. 数据不一致(Data Inconsistency)
当主从服务器的数据出现不一致时,可能是由于网络中断、事务未提交或其他原因引起的。此时可以采取以下措施:
3. 错误代码处理(Error Code Handling)
当`SHOW SLAVE STATUSG;`显示错误代码时,可以根据具体的错误码查找对应的解决方案。例如:
MySQL主从复制是一项复杂且重要的技术,在实际应用中需要仔细配置和维护。通过掌握正确的配置步骤和常见的故障排查方法,能够有效保障数据库系统的稳定性和可靠性。


