MySQL主从复制配置详解

一、主从复制的基本概念

  1. 主服务器(Master): 主服务器是数据写入的源头,处理应用程序的写入请求,同时生成二进制日志(Binary Log),记录所有数据更改操作。

  2. 从服务器(Slave): 从服务器通过读取主服务器的二进制日志,将其应用到自身,实现数据的同步。通常用于分担读操作的压力。

  3. 复制模式:

    • 异步复制: 默认模式,从服务器异步读取主服务器的日志。
    • 半同步复制: 主服务器等待至少一个从服务器确认收到日志后,才进行下一步操作。
    • 全同步复制: 主从完全同步,性能开销较大,较少使用。
二、主从复制的配置步骤

以下以一个主服务器和一个从服务器为例,详细介绍配置流程。

1. 环境准备
  • 主服务器IP:192.168.1.100
  • 从服务器IP:192.168.1.101
  • MySQL版本:8.0

确保两台服务器已安装MySQL,并能通过网络互相访问。

2. 主服务器配置
  1. 编辑主服务器的配置文件my.cnf(或my.ini)中添加以下内容:

    [mysqld]
    server-id=1               # 唯一ID,必须不重复
    log-bin=mysql-bin         # 启用二进制日志
    binlog-format=row         # 推荐使用ROW模式
    
  2. 创建复制用户 在MySQL中执行以下命令:

    CREATE USER 'repl'@'192.168.1.%' IDENTIFIED BY 'password';
    GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.%';
    FLUSH PRIVILEGES;
    
  3. 获取二进制日志信息 使用以下命令查看当前二进制日志文件名和位置:

    SHOW MASTER STATUS;
    

    输出示例:

    +------------------+----------+
    | File             | Position |
    +------------------+----------+
    | mysql-bin.000001 |      120 |
    +------------------+----------+
    

    记录FilePosition的值。

3. 从服务器配置
  1. 编辑从服务器的配置文件my.cnf(或my.ini)中添加以下内容:

    [mysqld]
    server-id=2               # 唯一ID,与主服务器不同
    relay-log=relay-bin       # 中继日志
    
  2. 配置复制连接 登录从服务器的MySQL,并执行以下命令:

    CHANGE REPLICATION SOURCE TO
        SOURCE_HOST='192.168.1.100',
        SOURCE_USER='repl',
        SOURCE_PASSWORD='password',
        SOURCE_LOG_FILE='mysql-bin.000001',
        SOURCE_LOG_POS=120;
    
  3. 启动复制

    START REPLICA;
    
  4. 检查复制状态 使用以下命令查看复制状态:

    SHOW REPLICA STATUS\G;
    

    关键字段解释:

    • Replica_IO_Running: 应为Yes
    • Replica_SQL_Running: 应为Yes
4. 测试复制

在主服务器上创建一个测试数据库和表,并插入数据,观察从服务器是否同步成功。

-- 主服务器
CREATE DATABASE test_db;
USE test_db;
CREATE TABLE test_table (id INT PRIMARY KEY, value VARCHAR(50));
INSERT INTO test_table VALUES (1, 'Hello World');

-- 从服务器
USE test_db;
SELECT * FROM test_table;
三、常见问题与解决
  1. 从服务器无法连接主服务器

    • 检查网络连通性。
    • 确保主服务器的复制用户授权正确。
  2. 复制延迟

    • 检查从服务器的负载情况。
    • 优化主服务器和从服务器的硬件或查询。
  3. 二进制日志已删除

    • 设置合理的expire_logs_days参数,避免过早删除。
    • 使用从服务器的RESET REPLICA重新初始化。
四、总结

MySQL主从复制是一种高效的架构设计,广泛应用于读写分离、数据备份和高可用性场景。通过合理的配置和维护,可以显著提高数据库系统的性能和可靠性。希望本文对您理解和实践MySQL主从复制有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值