简介
MySQL主从同步的是基于binlog实现,从库同步主库binlog文件,实现数据的同步
主从复制的三种模式
- 基于语句的复制 :主库把sql语句写入到bin log中,完成复制
- 基于行数据的复制:主库把每一行数据变化的信息作为事件,写入到bin log,完成复制
- 混合复制:结合以上两种模式,默认用语句复制,出问题时候自动切换成行数据复制
binlog三种存储模式
以上三种复制模式分别对应binlog以下三种存储模式:
- statement:记录的是修改SQL语句
- row:记录的是每行实际数据的变更
- mixed:statement和row模式的混合
binlog模式在MySQL 5.7.7之前,默认为 STATEMENT,在之后的版本中,默认为ROW。
这里建议采用ROW模式,因为ROW模式更安全,可以清楚记录每行数据修改的细节。
复制过程
- master将改变记录到binlog中
- slave启动一个IO线程异步地将master的binlog拷贝到它的relaylog中继日志
- slave的SQL线程重做relaylog中的更新
由于该同步过程是异步进行的,因此存在主从延迟问题