MySQL的主从同步机制
MySQL的主从同步机制
MySQL主从复制类型
- 异步复制:主库将binlog事件异步发送给从库,从库根据事件进行回放。
- 半同步复制:主库等待至少一个从库确认接收到数据,然后返回确认给客户端。
- 同步复制:主库等待所有从库确认接收到数据,然后返回确认给客户端。
异步复制
异步复制是MySQL默认的复制类型
主库:
- 接收到提交事务请求
- 更新数据
- 将数据写入binlog
- 给客户端响应
- 主库推送binlog变更事件到从库
- 从库接收到事件去主库拉取数据
从库:
- 由IO线程将同步过来的binlog写入relay log中
- 由SQL线程从relay log重放事件,更新数据
- 给主库返回响应
简单来说就是:主库提交事务会写binlog,主库dump线程会监听binlog日志的变更,如果binlog有更新则推送更新事件给从库,
从库接收到事件后拉取数据,会有一个IO线程将其写入到relay log中,从库再慢慢消化,由sql线程重放更新数据
但是异步复制由数据丢失风险。
比如:数据还没同步到从库,主库就给客户端响应,然后主库挂了,此时从库晋升为主库的话,数据就会丢失。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 花海!
