mysql主从复制和双主复制有什么区别_mysql架构对比

主从复制仅主库可写,双主复制两端均可写但需自行处理冲突;主从适用于读多写少、强一致性场景,双主适用于跨机房、最终一致性场景,但存在循环复制、ID冲突、延迟不可见等风险,运维复杂度远高于主从。主从复制只能写主库,双主复制两边都能写这是最根本的差异:主从架构下,INSERT/UPDATE/DELETE 必须发给唯一 master,从库(slave)设为只读(read_only=ON),强行写会报错 ERROR 1290 (HY000): The MySQL server is running with the --read-only option。而双主是两个节点互为 master 和 slave,应用可向任意一端发起写请求------但这也意味着你必须自己兜底解决冲突。主从适合读多写少、强一致性要求高的场景(如订单中心),写路由集中,运维简单双主适合跨机房部署、需就近写入、且能接受最终一致性的业务(如日志采集、用户行为埋点)双主必须配 auto_increment_increment 和 auto_increment_offset,否则自增 ID 必撞(比如 A 设 offset=1, increment=2 → 用奇数;B 设 offset=2, increment=2 → 用偶数)双主复制天然存在循环写入和数据覆盖风险假设 M1 和 M2 是双主,M1 执行 UPDATE t SET balance = 150 WHERE id = 1,binlog 同步到 M2 并执行;M2 紧接着也执行了 UPDATE t SET balance = 130 WHERE id = 1,再同步回 M1 ------ 最终结果取决于谁后写、谁后同步,不是"谁先提交谁生效"。更危险的是,若没关掉 log_slave_updates 或没设对 server-id,一条语句可能在双主间无限循环复制(M1→M2→M1→M2...)。必须确保 server-id 全局唯一,且双主都开启 log_slave_updates=ON(否则无法接力同步)推荐使用 binlog_format=ROW,避免 STATEMENT 格式下函数(如 NOW()、UUID())在两端产生不同结果禁止在双主上执行非确定性语句(如不带 WHERE 的 UPDATE、DELETE),否则极易导致数据不一致主从延迟是常态,双主"伪实时"但更难观测主从延迟(Seconds_Behind_Master)可直接查 SHOW SLAVE STATUS,几秒到几分钟都常见;而双主没有这个指标------你看到 Slave_IO_Running: Yes 和 Slave_SQL_Running: Yes,不代表数据已对齐。因为 M1 写完立刻返回成功,M2 可能还在重放中,此时若切流量过去,就可能读到旧值或空数据。 通义听悟 阿里云通义听悟是聚焦音视频内容的工作学习AI助手,依托大模型,帮助用户记录、整理和分析音视频内容,体验用大模型做音视频笔记、整理会议记录。

相关推荐
a7963lin1 小时前
MySQL数据库提示表损坏怎么修复_使用REPAIR TABLE修复方案
jvm·数据库·python
dFObBIMmai1 小时前
如何撤销PUBLIC的危险权限_REVOKE EXECUTE ON UTL_FILE
jvm·数据库·python
2501_901200531 小时前
CSS如何优化移动端CSS选择器性能_遵循BEM规范避免过长嵌套
jvm·数据库·python
ㄟ留恋さ寂寞1 小时前
如何用事务 Transaction 确保 IndexedDB 多表操作的安全性
jvm·数据库·python
m0_495496411 小时前
html标签怎样表示强调_em和i标签语义差异说明【操作】
jvm·数据库·python
weixin_459753941 小时前
如何防止SQL脏数据写入_利用触发器实现强一致性校验
jvm·数据库·python
是有头发的程序猿1 小时前
供应商风控调研:1688店铺资质详情API Python调用实战教程
大数据·人工智能·python
老纪1 小时前
CSS如何快速预览CSS颜色值效果_结合浏览器开发者工具取色板
jvm·数据库·python
iAm_Ike1 小时前
如何截断SQL小数位数_使用TRUNCATE函数控制精度
jvm·数据库·python