主从复制

  1. 指定某一个副本为主节点,当客户写数据库时,必须将写请求首先发送给主节点主节点首先将新数据写入本地存储。
  2. 主节点把新数据写入本地存储后,将数据更改作为日志或数据流发送给所有从节点。每个从节点获得更改日志后将其应用到本地,且严格保持与主节点相同的写入顺序。
  3. 客户端从数据库中读数据时,可以在主节点从节点上执行查询。

主从复制形式

主从复制有三种形式:主从异步,主从同步,主从半同步。

主从异步

主节点不会主动推送数据到从节点,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理。

如果主节点崩溃,此时主节点上已提交的事务可能并没有传到从节点上,如果强行将从提升为主,可能导致新主节点上的数据不完整。

主从异步是 mysql 的默认主从复制方式。

主从同步

当数据写入,主服务器必须和从服务器同步后,才告诉用户写入成功,等待时间较长。

主从半同步

介于异步复制和全同步复制之间,主库在执行完客户端提交的事务后,等待至少一个从库接收到并写到 relay log 中,才返回成功信息给客户端(只能保证主库的 Binlog 至少传输到了一个从节点上),否则需要等待直到超时时间然后切换成异步模式再提交。

Mysql

mysql 自带了主从复制功能。MySQL 主从复制基于主服务器的二进制日志,跟踪所有对数据库的更改。因此,要进行复制,主服务器必须启用二进制日志。

当一个从服务器连接到主服务器时,它通知主服务器自己最后一个更新成功的位置。从服务器接收从那时发生起的任何更新,并执行相同的操作。然后等待主服务器通知的更新。

主从服务器都有有单独的线程来处理复制问题,从服务器执行备份不会干扰主服务器,在备份过程中主服务器可以继续处理更新。

mysql 的日志有两种格式,语句复制行数据复制。语句复制效率高,行数据复制更加精确,默认采用语句复制的形式。

参考资料

看完这篇还不懂 MySQL 主从复制,可以回家躺平了~