本文共 1993 字,大约阅读时间需要 6 分钟。
MySQL 的主从复制机制采用了三线程模型来实现数据同步。你可能对具体的复制过程不太熟悉,那我们就从基础开始讲解。
START SLAVE
命令时,会创建一个I/O线程来连接主服务器,并读取主服务器的二进制日志(Binlog)。了解了这些线程的作用后,接下来我们就来看看如何在实际环境中配置主从服务器。
[root@localhost ~]# cat /etc/redhat-releaseCentOS Linux release 7.3.1611 (Core)
oneinstack
安装MySQL:# 安装完成后,验证MySQL版本MySQL [(none)]> status;
[root@localhost ~]# vi /etc/my.cnf
log_bin = mysql-bin
,如果没有该行,添加该行。server-id = 1
,记录主服务器的ID,确保它与从服务器的ID不同。MySQL [(none)]> show variables like 'log_bin';
MySQL [(none)]> show master status;
File
列显示当前二进制日志文件名,Position
列显示日志的偏移量。MySQL [(none)]> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.%' IDENTIFIED BY 'mysql';
[root@localhost ~]# vi /etc/my.cnf
server-id
为一个唯一的ID,不与主服务器重复。[root@localhost ~]# vi /data/mysql/auto.cnf
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;
MySQL [(none)]> show slave status \G;
Slave_IO_Running
和Slave_SQL_Running
都应为Yes
,否则查看mysql-error.log
排查问题。MySQL [(none)]> show variables like 'log_error%';
如果主服务器或从服务器出现问题,如何处理?
如果出现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;
如果需要查看具体的二进制日志事件,可以执行以下命令:
MySQL [(none)]> show binlog events in 'mysql-bin.000017';
通过以上步骤,你应该能够完成MySQL主从复制的配置和管理。如果有任何问题,可以参考MySQL官方文档或相关技术论坛获取更多帮助。
转载地址:http://llffk.baihongyu.com/