一、主从复制原理
MySQL 主从复制依赖 binlog,binlog 中记录了数据库中的执行过的语句,主从复制时,复制的并不是整个数据库中的所有数据,而是从上次同步到现在所执行过的 SQL 语句。
执行主从同步时,主库会有一个 Log-Dump 线程和从库同步,把 binlog 发送给从库。从库则有一个 I/O 线程和 SQL-Thread 线程分别用于和主库同步和重放。同步过程是:
- 从库的 I/O 线程向主库请求同步,主库把数据发送过来。
- 收到主库的 binlog 后,从库会把日志放到 relay-log 。
- SQL 线程重放 SQL 语句,数据达到同步。
二、复制方式
2.1 异步复制
默认情况下 MySQL 是异步复制,即 SQL 语句执行完成后写入 binlog 就可以了,不用等待主从数据同步完成。
2.2 半同步复制
同步复制的意思是每次执行 SQL 语句要等待从库写入到 relay log 后才能继续往下执行,这样就避免了主库以外宕机后从库数据不一致的情况。
评论