异步复制(Async Replication)的优化配置,核心目标是:在保障主库性能的前提下,尽可能降低复制延迟、提升从库可用性,并避免数据丢失风险。下面按MySQL / 常见数据库架构来说明,但思路同样适用于其他数据库(如 PostgreSQL、MongoDB)。
异步复制天然存在:
优化就是围绕这三点展开。
# 控制事务提交行为(MySQL InnoDB)
innodb_flush_log_at_trx_commit = 2
sync_binlog = 0 或 1000
✅ 风险:主库宕机可能丢少量事务
✅ 收益:主库 TPS 显著提升
⚠️ 不建议在金融核心系统使用
binlog_format = ROW
binlog_row_image = MINIMAL
max_binlog_size = 512M
✅ ROW 模式更安全
✅ MINIMAL 减少 binlog 体积,降低网络与 IO
slave_parallel_workers = 8
slave_parallel_type = LOGICAL_CLOCK
✅ 按事务依赖并行回放
✅ 延迟可降低 50% 以上
binlog_transaction_dependency_tracking = WRITESET
skip_slave_start = 0
relay_log_recovery = ON
read_only = ON
super_read_only = ON
从库关闭:
relay_log_info_repository = TABLE
master_info_repository = TABLE
gtid_mode = ON
enforce_gtid_consistency = ON
✅ 自动定位复制位点
✅ 主从切换更安全
避免:
一台主库 → 10 个从库
推荐:
主库
├─ 中继从库(Relay)
│ ├─ 从库 A
│ ├─ 从库 B
Seconds_Behind_Master| 原因 | 优化方式 |
|---|---|
| 大事务 | 拆分事务 |
| 从库慢 SQL | 优化索引 |
| 单线程回放 | 开启并行复制 |
| 网络延迟 | 同机房部署 |
rpl_semi_sync_master_enabled = 1
rpl_semi_sync_slave_enabled = 1
✅ 至少 1 个从库 ACK
✅ 不丢数据,性能损失小
innodb_flush_log_at_trx_commit = 2
sync_binlog = 1000
binlog_format = ROW
binlog_row_image = MINIMAL
gtid_mode = ON
slave_parallel_workers = 8
slave_parallel_type = LOGICAL_CLOCK
relay_log_recovery = ON
read_only = ON
❌ 强一致要求(金融、账务)
❌ 不能容忍数据丢失
✅ 推荐:半同步 / 组复制 / Raft
如果你愿意,我可以:
直接告诉我你用的数据库版本和部署方式即可。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。