mysql 5.7 主从配置
发布日期:2025-04-15 04:41:24 浏览次数:10 分类:精选文章

本文共 1993 字,大约阅读时间需要 6 分钟。

MySQL主从复制详细配置与故障排除

MySQL主从复制的原理

MySQL 的主从复制机制采用了三线程模型来实现数据同步。你可能对具体的复制过程不太熟悉,那我们就从基础开始讲解。

1.1 复制线程的作用

  • I/O 线程:当从服务器接收到START SLAVE命令时,会创建一个I/O线程来连接主服务器,并读取主服务器的二进制日志(Binlog)。
  • SQL 线程:负责读取中继日志(Relay Log),并执行其中的更新操作。

了解了这些线程的作用后,接下来我们就来看看如何在实际环境中配置主从服务器。

环境配置

1. 环境版本

[root@localhost ~]# cat /etc/redhat-releaseCentOS Linux release 7.3.1611 (Core)

2. 环境搭建

  • 使用oneinstack安装MySQL:
# 安装完成后,验证MySQL版本MySQL [(none)]> status;

主服务器配置

1. 查看并配置二进制日志

[root@localhost ~]# vi /etc/my.cnf
  • 查找log_bin = mysql-bin,如果没有该行,添加该行。
  • 找到server-id = 1,记录主服务器的ID,确保它与从服务器的ID不同。

2. 启用二进制日志

MySQL [(none)]> show variables like 'log_bin';

3. 查看主服务器状态

MySQL [(none)]> show master status;
  • File列显示当前二进制日志文件名,Position列显示日志的偏移量。
  • 记录这些值,以便从服务器进行相应配置。

4. 创建访问用户

MySQL [(none)]> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.%' IDENTIFIED BY 'mysql';

从服务器配置

1. 查看并配置二进制日志

[root@localhost ~]# vi /etc/my.cnf
  • 修改server-id为一个唯一的ID,不与主服务器重复。
  • 配置完成后,重启MySQL服务。

2. 查看从服务器状态

[root@localhost ~]# vi /data/mysql/auto.cnf

3. 配置从服务器的主从关系

MySQL [(none)]> CHANGE MASTER TO    -> MASTER_HOST='192.168.1.103',    -> MASTER_USER='repl',    -> MASTER_PASSWORD='mysql',    -> MASTER_LOG_FILE='mysql-bin.000017',    -> MASTER_LOG_POS=503;

4. 启动从服务器的复制

MySQL [(none)]> start slave;

5. 验证从服务器状态

MySQL [(none)]> show slave status \G;
  • Slave_IO_RunningSlave_SQL_Running都应为Yes,否则查看mysql-error.log排查问题。

6. 查看错误日志

MySQL [(none)]> show variables like 'log_error%';

故障排除

1. 主服务器或从服务器异常

如果主服务器或从服务器出现问题,如何处理?

  • 主服务器故障:重启主服务器后,从服务器会自动重新连接并继续复制。
  • 从服务器故障:从服务器在恢复后会重新连接主服务器,继续同步。

2. 复制中断

如果出现Last_IO_Errno: 2003错误,说明从服务器无法连接到主服务器。

MySQL [(none)]> stop slave;MySQL [(none)]> reset slave;MySQL [(none)]> CHANGE MASTER TO    -> MASTER_HOST='192.168.1.103',    -> MASTER_USER='repl',    -> MASTER_PASSWORD='mysql',    -> MASTER_LOG_FILE='mysql-bin.000017',    -> MASTER_LOG_POS=503;MySQL [(none)]> start slave;

3. 查看二进制日志事件

如果需要查看具体的二进制日志事件,可以执行以下命令:

MySQL [(none)]> show binlog events in 'mysql-bin.000017';

通过以上步骤,你应该能够完成MySQL主从复制的配置和管理。如果有任何问题,可以参考MySQL官方文档或相关技术论坛获取更多帮助。

上一篇:mysql 5.7中文乱码解决
下一篇:MySQL 5.7 mysqldump的Bug导致复制异常

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月28日 19时17分02秒