如何在mysql中使用复制实现数据冗余

来源:这里教程网 时间:2026-02-28 20:13:56 作者:

在 MySQL 中,使用复制(Replication)实现数据冗余是一种常见且高效的高可用方案。通过主从复制,你可以将一台数据库服务器(主库)的数据自动同步到一台或多台从库上,从而实现数据冗余、读写分离和故障恢复能力。

配置主从复制的基本原理

MySQL 复制基于二进制日志(binary log)。主库记录所有数据变更操作到 binlog,从库通过 I/O 线程读取主库的 binlog,并写入自己的中继日志(relay log),再由 SQL 线程重放这些日志,实现数据同步。

主要组件包括:

主库(Master):负责处理写操作并生成 binlog 从库(Slave):连接主库,接收并执行 binlog 中的操作 binlog:记录数据更改的日志文件 server-id:每台 MySQL 实例必须有唯一标识

配置步骤详解

以下是在两台服务器之间配置主从复制的关键步骤。

1. 配置主库(Master)

编辑主库的 my.cnf 或 my.ini 配置文件:

[mysqld]
server-id=1
log-bin=mysql-bin
binlog-format=ROW
expire_logs_days=7

重启 MySQL 服务后,创建用于复制的账号:

CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;

查看主库状态,获取当前 binlog 文件名和位置:

SHOW MASTER STATUS;

2. 配置从库(Slave)

修改从库配置文件:

[mysqld]
server-id=2
relay-log=mysql-relay-bin
log-slave-updates=1
read-only=1

重启从库 MySQL 服务。然后执行 CHANGE MASTER 命令连接主库:

CHANGE MASTER TO
  MASTER_HOST='主库IP',
  MASTER_USER='repl',
  MASTER_PASSWORD='password',
  MASTER_LOG_FILE='mysql-bin.000001', -- 来自 SHOW MASTER STATUS
  MASTER_LOG_POS=154;                 -- 来自 SHOW MASTER STATUS
<p>START SLAVE;</p>

3. 验证复制状态

运行以下命令检查从库是否正常同步:

SHOW SLAVE STATUS\G

重点关注两个字段:

Slave_IO_Running: Yes Slave_SQL_Running: Yes

如果都是 Yes,说明复制已正常运行。如果有错误,可根据 Last_Error 字段排查问题。

实现数据冗余的关键建议

为了确保复制真正起到数据冗余的作用,需要注意以下几点:

至少部署一个从库,推荐跨物理机或跨可用区部署,避免单点故障 定期监控复制延迟(Seconds_Behind_Master) 启用 relay_log_recovery 和 sync_binlog 提高可靠性 对关键业务可考虑使用半同步复制(semi-sync replication),确保至少一个从库接收到日志 定期备份从库数据,避免主库崩溃时丢失恢复手段

基本上就这些。只要正确配置并持续监控,MySQL 主从复制就能有效实现数据冗余,提升系统稳定性和容灾能力。

相关推荐