MySQL如何实现主从复制?

MySQL的主从复制用于实现读写分离、高可用等目的。主服务器负责写入和更新数据,从服务器同步主服务器的数据并负责读取数据。

主从复制的工作原理为:

  1. 主服务器将数据变更记录到二进制日志(binlog)中。
  2. 从服务器连接到主服务器,并请求从指定位置读取二进制日志。
  3. 主服务器将二进制日志发送给从服务器。
  4. 从服务器重放接收到的二进制日志,将数据变更应用到自己的数据副本上。
  5. 从服务器继续请求并接收新的二进制日志,实现数据同步。

配置主从复制:

  1. 主服务器配置:
sql
# 开启二进制日志
log-bin=mysql-bin 

# 配置服务器ID(唯一)和需要同步的数据库
server-id=1  
binlog-do-db=db1
  1. 从服务器配置:
sql
# 开启从服务器文件  
read-only=ON 

# 配置唯一服务器ID和主服务器连接信息
server-id=2  
master-host=主服务器host  
master-user=复制用户
master-password=密码  
master-port=3306
  1. 在从服务器上启动同步进程:
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;  # 启动同步进程
  1. 在主服务器上创建复制用户并授权:
sql 
CREATE USER 'replication'@'%' IDENTIFIED BY '密码';
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';

主从复制的优点:

  1. 读写分离,提高性能。
  2. 容灾恢复。一旦主服务器宕机,可以立即切换到从服务器提供服务。
  3. 备份不会影响主服务器性能。