面试之MySQL的主从同步原理

mysql主从同步的过程:

MySQL的主从复制主要有三个线程:master(binlog dump thread)、slave(I/O thread, SQL thread)。master 一种主线程 和 Slave 中的两条线程。

  1:主节点 binlog ,主从复制的基础是 主库记录数据库所的所有变更到binlog。 binlog 是数据库服务器启动的时候,保存所有修改数据库结构的一个文件。

  2:主节点 log dumg线程,当binlog 有变动时,log dumo 线程读取器中的内容发送给从节点。

  3: 从节点I/O 线程接受binlog 内容,并将写入到对应的relay log(中继文件) 文件中

  4:从节点的SQL线程读取relay log文件内容对数据更新进行重放,最终保证主从数据库的一致性。

  注意: 主从节点binlog 文件+ pisiton 偏移量 来定位主从同步的位置,从节点会保存 已接收的偏移量,如果从节点发生down 机 重启,则会自动从 position的位置 发起同步。

由于mysql默认的复制方式 都是异步的,主库把日志发送给 从库后 不关心 从库是否已经处理,这样会产生一个问题。假设主库挂了。从库处理失败了。这时候 把 从库身为 主库后,日志就丢失了。

全同步复制:

主库写入binlog后强制同步日志 到 从库,所有的从库 都执行完成后才会返回给客户端,但是这个方式性能太低了

半同步复制:

和全同步不同的是,半同步复制的逻辑是这样的,从库写入日成功后返回ACK 确认后 主库,主动收到至少一个从库 的确认就认为 写操作完成

你可能感兴趣的:(面试,mysql,职场和发展)