MySQL 与 Redis 数据同步机制对比
# Master 配置 (my.cnf) [mysqld] server-id = 1 log-bin = mysql-bin binlog-format = ROW sync-binlog = 1 innodb_flush_log_at_trx_commit = 1 # Slave 配置 (my.cnf) [mysqld] server-id = 2 relay-log = mysql-relay-bin read-only = ON -- 在 Slave 上执行 CHANGE MASTER TO MASTER_HOST = 'master_host', MASTER_USER = 'replica', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS = 154; START SLAVE;
# Master 配置 (redis.conf) bind 0.0.0.0 port 6379 requirepass "masterpassword" # 开启持久化(推荐) save 900 1 save 300 10 appendonly yes appendfsync everysec # Slave 配置 (redis.conf) bind 0.0.0.0 port 6380 replicaof 127.0.0.1 6379 masterauth "masterpassword" replica-read-only yes # 或动态配置 REPLICAOF 127.0.0.1 6379 CONFIG SET masterauth "masterpassword"
| 特性 | MySQL | Redis |
|---|---|---|
| 复制粒度 | 逻辑日志(SQL 语句或行变更) | 物理数据(RDB 快照 + 命令流) |
| 同步方式 | 异步/半同步/全同步可选 | 异步复制(从节点定期确认) |
| 断线恢复 | 基于 GTID 或位置点恢复 | PSYNC 部分重同步机制 |
| 复制延迟 | Seconds_Behind_Master 监控 | INFO replication 查看 offset 差值 |
| 拓扑结构 | 一主多从、主主复制 | 一主多从、级联复制(树形) |
| 数据一致性 | 最终一致性,可配置强一致性 | 最终一致性,异步复制 |
| 适用场景 | 读写分离、数据备份、高可用 | 读写分离、数据冗余、故障恢复 |