You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL Replication与Mirroring有何区别?二者分别如何实现?

MySQL Replication vs Mirroring:核心区别与实现指南

一、核心区别

  • 数据同步机制:
    • Replication:默认异步,主库完成事务提交后异步发送二进制日志到从库;可选半异步模式,但仅保证日志传输,不保证从库执行完成,存在极短数据不一致窗口。
    • Mirroring:严格同步(或准同步),主库事务提交必须等待镜像节点确认数据已写入(或持久化),确保主备数据实时一致,无数据丢失风险。
  • 架构与角色:
    • Replication:支持一主多从架构,从库可承担读请求、数据分析、备份等任务,角色灵活。
    • Mirroring:通常为双节点主备架构,镜像节点仅用于故障切换,一般不对外提供读服务(或只读),角色单一。
  • 性能与开销:
    • Replication:异步模式下主库性能开销极低,半异步仅增加少量网络等待时间。
    • Mirroring:同步机制会增加主库事务提交延迟,跨机房场景下性能损耗明显。
  • 故障切换特性:
    • Replication:切换需手动或借助MHA、Orchestrator等工具,主库故障时未同步日志可能导致数据丢失。
    • Mirroring:切换可自动触发(如InnoDB Cluster),切换后数据完全一致,RTO(恢复时间目标)更短。

二、实现方法

1. MySQL Replication(异步/半异步)

主库配置

  • 修改my.cnf(或my.ini):
    [mysqld]
    server-id = 1
    log-bin = mysql-bin
    binlog_format = ROW  # 推荐行格式,保证数据一致性
    # 可选:仅同步指定数据库
    # binlog_do_db = your_database
    
  • 重启MySQL服务,创建同步专用账号:
    CREATE USER 'repl_user'@'slave_ip' IDENTIFIED BY 'your_password';
    GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'slave_ip';
    FLUSH PRIVILEGES;
    
  • 锁表并备份主库数据:
    FLUSH TABLES WITH READ LOCK;
    
    用mysqldump导出数据:
    mysqldump -u root -p --all-databases --master-data=2 > master_backup.sql
    
    解锁表:
    UNLOCK TABLES;
    
  • 查看主库binlog状态,记录File和Position:
    SHOW MASTER STATUS;
    

从库配置

  • 修改my.cnf:
    [mysqld]
    server-id = 2  # 必须与主库唯一
    relay-log = mysql-relay-bin
    read_only = 1  # 普通用户只读,超级用户仍可写
    
  • 重启MySQL,导入主库备份:
    mysql -u root -p < master_backup.sql
    
  • 配置主从同步连接:
    CHANGE MASTER TO
    MASTER_HOST='master_ip',
    MASTER_USER='repl_user',
    MASTER_PASSWORD='your_password',
    MASTER_LOG_FILE='mysql-bin.xxxxxx',  # 主库SHOW MASTER STATUS返回的File值
    MASTER_LOG_POS=xxxx;  # 主库SHOW MASTER STATUS返回的Position值
    
  • 启动同步并验证:
    START SLAVE;
    SHOW SLAVE STATUS\G
    
    确保Slave_IO_Running和Slave_SQL_Running均为Yes。

2. MySQL Mirroring(准同步/同步镜像)

MySQL原生无官方"Mirroring"术语,通常通过半同步复制(准镜像)或Group Replication单主模式(严格镜像)实现:

方案1:半同步复制(准镜像)

  • 主库配置:
    INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
    SET GLOBAL rpl_semi_sync_master_enabled = ON;
    SET GLOBAL rpl_semi_sync_master_timeout = 1000;  # 超时后降级为异步
    
  • 从库配置:
    INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
    SET GLOBAL rpl_semi_sync_slave_enabled = ON;
    STOP SLAVE IO_THREAD;
    START SLAVE IO_THREAD;
    
    此方案保证主库事务提交前,从库已接收并持久化binlog,但不保证从库已执行事务,属于准镜像。

方案2:Group Replication单主模式(严格镜像)

  • 所有节点修改my.cnf:
    [mysqld]
    server-id = 1  # 每个节点唯一
    gtid_mode = ON
    enforce_gtid_consistency = ON
    binlog_format = ROW
    log-slave-updates = ON
    plugin_load_add = 'group_replication.so'
    group_replication_group_name = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee'  # 自行生成UUID
    group_replication_start_on_boot = OFF
    group_replication_local_address = 'node_ip:33061'  # 节点间通信端口
    group_replication_group_seeds = 'node1_ip:33061,node2_ip:33061'
    group_replication_single_primary_mode = ON  # 单主模式
    group_replication_enforce_update_everywhere_checks = OFF
    
  • 初始化主节点:
    SET SQL_LOG_BIN=0;
    CREATE USER 'repl_user'@'%' IDENTIFIED BY 'your_password';
    GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
    FLUSH PRIVILEGES;
    SET SQL_LOG_BIN=1;
    CHANGE MASTER TO MASTER_USER='repl_user', MASTER_PASSWORD='your_password' FOR CHANNEL 'group_replication_recovery';
    SET GLOBAL group_replication_bootstrap_group=ON;
    START GROUP_REPLICATION;
    SET GLOBAL group_replication_bootstrap_group=OFF;
    
  • 加入镜像节点:
    SET SQL_LOG_BIN=0;
    CREATE USER 'repl_user'@'%' IDENTIFIED BY 'your_password';
    GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
    FLUSH PRIVILEGES;
    SET SQL_LOG_BIN=1;
    CHANGE MASTER TO MASTER_USER='repl_user', MASTER_PASSWORD='your_password' FOR CHANNEL 'group_replication_recovery';
    START GROUP_REPLICATION;
    
    此时主节点可写,镜像节点只读,数据实时同步,主节点故障后自动切换镜像节点为主。

内容的提问来源于stack exchange,提问作者Mitchell CSharp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 13:24:28