MySQL的主从复制用于实现读写分离、高可用等目的。主服务器负责写入和更新数据,从服务器同步主服务器的数据并负责读取数据。
主从复制的工作原理为:
- 主服务器将数据变更记录到二进制日志(binlog)中。
- 从服务器连接到主服务器,并请求从指定位置读取二进制日志。
- 主服务器将二进制日志发送给从服务器。
- 从服务器重放接收到的二进制日志,将数据变更应用到自己的数据副本上。
- 从服务器继续请求并接收新的二进制日志,实现数据同步。
配置主从复制:
- 主服务器配置:
sql
# 开启二进制日志
log-bin=mysql-bin
# 配置服务器ID(唯一)和需要同步的数据库
server-id=1
binlog-do-db=db1
- 从服务器配置:
sql
# 开启从服务器文件
read-only=ON
# 配置唯一服务器ID和主服务器连接信息
server-id=2
master-host=主服务器host
master-user=复制用户
master-password=密码
master-port=3306
- 在从服务器上启动同步进程:
sql
CHANGE MASTER TO MASTER_HOST='主服务器host',
MASTER_USER='replication', MASTER_PASSWORD='密码',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=0;
START SLAVE; # 启动同步进程
- 在主服务器上创建复制用户并授权:
sql
CREATE USER 'replication'@'%' IDENTIFIED BY '密码';
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';
主从复制的优点:
- 读写分离,提高性能。
- 容灾恢复。一旦主服务器宕机,可以立即切换到从服务器提供服务。
- 备份不会影响主服务器性能。