
一、简单介绍读写分离和主从架构主库负责写从库负责读一主多从读写分离用多个从库分担读压力。二、原理MySQL 主从复制的核心是二进制日志 binlog。binlog 记录数据库中的所有变更操作主要包含 DDL数据定义语言和 DML数据操控语言。① 主库在事务提交时通过两阶段提交把数据变更记录到 binlog 中② 从库的 IO 线程连接主库主库的 dump 线程将 binlog 发送给从库从库将其写入本地的中继日志 Relay Log③ 从库的 SQL 线程读取 Relay Log重放其中的事件将变更应用到从库数据最终与主库保持一致。这里介绍一下两阶段提交2PC2PC 就是事务提交时分 prepare 和 commit 两阶段事务提交时┌─────────────────────────────────────────┐│ 阶段一prepare准备阶段 ││ ① 写 redo log状态标记为 prepare ││ ② InnoDB 告诉 Server 层我准备好了 │└─────────────────────────────────────────┘↓┌─────────────────────────────────────────┐│ 阶段二commit提交阶段 ││ ③ 写 binlog ││ ④ 把 redo log 状态改为 commit ││ ⑤ 事务提交完成 │└─────────────────────────────────────────┘