1.1.1. 主从复制


什么是主从复制

建立一个与主数据库完全相同的环境,称为从数据库。

主从复制的作用

  1. 做数据热备,后备数据库,当主数据库挂掉后,从数据库可以接替主数据库。避免数据丢失。
  2. 架构扩展,提高 I/0 效率。
  3. 读写分离,使数据库支持更大的并发。

主从复制原理

  1. 数据库中有个 binlog 日志,记录了所有的 sql 语句。
  2. 把主数据库的 binlog 日志复制到从数据库中。
  3. 让其在从数据库中再执行一次这些 sql 语句即可同步。

需要三个线程来执行:

  1. binlog 输出线程:每当有从库连接主库时,主库都会创建一个线程然后发送 binlog 内容到从库。
  2. 从库会建立两个线程:
    1. 从库 I/O 线程,当 START SLAVE 在从库开始执行之后,从库会创建 I/0 线程,该线程会连接到主库,并请求主库发送 binlog 里面的更新记录到从库上。从库的 I/O 线程会读取主库的 binlog 输出线程发送的更新并拷贝这些更新到本地。
    2. 从库 SQL 线程,从库创建一个 SQL 线程,这个线程会读取从库 I/0 线程写到的 relay log 的更新并执行。

所以我们知道,每一个主从复制链接都有三个线程,拥有多个从库的主库为每一个连接到主库的从库创建一个 binlog 输出线程,每一个从库中都有一个从库 I/0 线程和从库 SQL 线程。

步骤:

  1. 主库的更新操作(update,insert,delete)被写入 binlog 中。
  2. 从库连接主库
  3. 主库创建 binlog 输出线程,连接从库,并将 binlog 更新发送给从库
  4. 从库创建 I/0 线程,读取从库传过来的 binlog 并写入到 relay log。
  5. 从库创建 SQL 线程,从 relay log 中读取内容,将更新内容写入从库。
Copyright © Kagami丶 2019 all right reserved,powered by Gitbook该文件修订时间: 2019-12-10 20:25:25

results matching ""

    No results matching ""