数据一致性定义
- 数据一致性指系统中数据在不同部分、时间点和操作间保持一致的状态。
数据一致性类型
- 数据一致性:确保数据完整性、准确性和有效性。
- 事务一致性:事务要么全部成功,要么全部回滚,确保修改对所有用户可见。
- 多副本一致性:确保分布式系统中不同副本间数据一致。
- 时间一致性:数据在不同时间点上保持一致。
主从复制概念
- MySQL主从复制是将主数据库数据同步至其他数据库,实现数据冗余备份和负载均衡。
主从数据库角色
- 主数据库(Master):接收和处理所有写操作,记录变更到二进制日志。
- 从数据库(Slave):通过复制主数据库的二进制日志来同步数据,处理读操作。
主从复制流程
- 主数据库记录写操作到二进制日志。
- 从数据库IO线程从主数据库读取同步数据到中继日志。
- 从数据库SQL线程从中继日志写入数据。
主从同步方式
-
异步复制
- 主服务器提交事务后立即返回,无需等待从服务器确认。
- 优点:高性能、简单、低成本。
- 缺点:可能数据丢失或不一致。
-
同步复制
- 主服务器提交事务前需等待所有从服务器确认。
- 优点:高数据一致性、容错性。
- 缺点:性能开销大、单点故障风险。
-
半同步复制
- 主服务器提交事务前需等待至少一个从服务器确认接收。
- 优点:数据一致性较好、性能影响小、灵活性高。
- 缺点:性能波动风险、配置复杂。
小结
- 同步复制保证数据一致性但牺牲性能。
- 生产环境推荐使用半同步复制,平衡一致性和性能。
- 异步复制简单、性能好,但可能数据不一致。