MySQL5.7x 主从复制
在MySQL中,主从复制(Master-Slave Replication)是一种常用的数据库复制技术,用于将主服务器(Master)的数据实时复制到一个或多个从服务器(Slave)。这有助于负载均衡、备份和高可用性。下面是实现MySQL主从复制的详细步骤。
前提条件
- 主服务器和从服务器的MySQL版本应兼容(最好相同版本)。
- 所有服务器时钟应该同步,可以使用
NTP
确保时间一致性。 - 从服务器初始时的数据要与主服务器一致(可以通过备份恢复的方式实现)。
一、配置主服务器(Master)
编辑主服务器的MySQL配置文件
打开MySQL主服务器的配置文件 my.cnf 。添加或修改以下内容:
server-id
:每个服务器都需要有唯一的server-id
。log-bin
:启用二进制日志,主从复制就是基于二进制日志的。binlog-do-db
:指定要复制的数据库,可以指定多个数据库。省略这行会复制所有数据库。
重启MySQL服务:
创建用于复制的用户
在主服务器上登录MySQL并创建一个用于复制的用户。这里创建了一个名为
slave
的用户,密码为password
,并授予了复制权限。获取主服务器的状态信息
在主服务器上运行以下命令,记录输出的信息:输出类似以下内容:
File
:二进制日志的文件名。Position
:当前日志的偏移量。这两个值将在配置从服务器时使用。
二、配置从服务器(Slave)
编辑从服务器的MySQL配置文件
打开从服务器的配置文件my.cnf,添加或修改如下内容:
重启从服务器的MySQL服务:
初始化从服务器
登录从服务器的MySQL,并执行以下步骤来设置复制:
在这里,
master_ip_address
是主服务器的IP地址,MASTER_LOG_FILE
和MASTER_LOG_POS
是前面SHOW MASTER STATUS
命令中看到的值。启动复制
在从服务器上启动复制进程:
检查复制状态
检查从服务器的复制状态,确保复制正常运行:
查看输出中的两个关键字段:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
如果这两个值都是
Yes
,说明主从复制正常。如果不是,可以检查错误信息并进行排查。
三、测试主从复制
在主服务器上创建一个测试表或插入数据:
在从服务器上检查该表是否存在以及数据是否同步:
如果能看到相同的表和数据,说明主从复制配置成功。
四、常见问题排查
- 网络问题:确保主从服务器之间网络通信正常,防火墙允许MySQL端口(通常是3306)。
- 权限问题:确保在主服务器上为
replicator
用户授予了REPLICATION SLAVE
权限。 - 日志文件或位置错误:如果从服务器的二进制日志文件或位置配置错误,可能会导致复制失败。重新检查
MASTER_LOG_FILE
和MASTER_LOG_POS
的设置。 - 数据不一致问题:在配置复制之前,确保从服务器的数据和主服务器保持一致,可以通过导出主服务器数据并导入到从服务器来实现。
总结
MySQL主从复制的核心是通过二进制日志(Binary Log)将主服务器的更新传递到从服务器。配置过程中,最关键的是确保主从服务器的MySQL配置正确,并正确地设置二进制日志文件名和位置。此外,网络配置、用户权限、时间同步等因素也会影响复制的成功。