温馨提示×

centos mysql主从复制原理

小樊
51
2025-04-28 16:52:12
栏目: 云计算

CentOS MySQL主从复制原理主要基于MySQL的二进制日志(Binary Log)和I/O线程、SQL线程。以下是主从复制的详细步骤和原理:

1. 主服务器配置

  • 开启二进制日志:在主服务器的my.cnfmy.ini文件中,确保以下配置项已设置:
    [mysqld] server-id = 1 # 主服务器的唯一ID log_bin = /var/log/mysql/mysql-bin.log # 二进制日志文件路径 binlog_do_db = your_database # 需要复制的数据库(可选) 
  • 重启MySQL服务:使配置生效。
    systemctl restart mysqld 

2. 创建复制用户

  • 在主服务器上创建一个用于复制的专用用户,并授予相应的权限。
    CREATE USER 'replicator'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%'; FLUSH PRIVILEGES; 

3. 获取主服务器的二进制日志位置

  • 在主服务器上执行以下命令,记录当前的二进制日志文件名和位置。
    SHOW MASTER STATUS; 
    记录FilePosition的值。

4. 从服务器配置

  • 编辑配置文件:在从服务器的my.cnfmy.ini文件中添加以下配置:
    [mysqld] server-id = 2 # 从服务器的唯一ID,必须与主服务器不同 relay_log = /var/log/mysql/mysql-relay-bin.log # 中继日志文件路径 log_bin = /var/log/mysql/mysql-bin.log # 可选,如果需要从服务器也记录二进制日志 replicate_do_db = your_database # 需要复制的数据库(可选) 
  • 重启MySQL服务:使配置生效。
    systemctl restart mysqld 

5. 配置从服务器连接主服务器

  • 在从服务器上执行以下SQL命令,配置复制连接。
    CHANGE MASTER TO MASTER_HOST='master_ip', # 主服务器的IP地址 MASTER_USER='replicator', # 复制用户的用户名 MASTER_PASSWORD='password', # 复制用户的密码 MASTER_LOG_FILE='mysql-bin.000001', # 主服务器的二进制日志文件名 MASTER_LOG_POS=123; # 主服务器的二进制日志位置 
    MASTER_LOG_FILEMASTER_LOG_POS替换为你之前记录的值。

6. 启动从服务器复制线程

  • 在从服务器上启动I/O线程和SQL线程。
    START SLAVE; 

7. 验证复制状态

  • 在从服务器上执行以下命令,检查复制状态。
    SHOW SLAVE STATUS\G 
    关键字段解释:
    • Slave_IO_Running: I/O线程状态,应为Yes
    • Slave_SQL_Running: SQL线程状态,应为Yes
    • Seconds_Behind_Master: 从服务器落后主服务器的时间(秒)。

原理概述

  1. 二进制日志:主服务器将所有更改记录到二进制日志中。
  2. I/O线程:从服务器的I/O线程连接到主服务器,请求并读取二进制日志事件,然后将这些事件写入中继日志。
  3. SQL线程:从服务器的SQL线程读取中继日志中的事件,并在从服务器上重放这些事件,从而实现数据同步。

通过以上步骤和原理,CentOS MySQL主从复制可以有效地实现数据的实时备份和负载均衡。

0