mysql主从复制工作原理

    技术2022-07-10  99

    MySQL复制功能是通过三个线程实现的,一个在主服务器上,两个在从服务器上:
    Binlog dump thread: 在slave连接master时,master创建了一个线程, 将二进制日志内容发送给slave。 这个线程可以在master上使用show processlist查看到,是一个标识为该Binlog Dump线程。Slave I/O thread: 当执行start slave在slave服务器上时,slave服务器创建一个I / O线程,该线程连接到master服务器并要求master服务器发送记录在其二进制日志中的更新。 从属I / O线程读取master 服务器Binlog Dump线程发送的更新,并将其复制到slave服务器中继日志relay-log的文件中。 同样也可以通过 show processlist命令查看,该线程的状态显示为 Slave_IO_runningSlave SQL thread: slave服务器创建一个SQL线程以读取中继日志(relay-log)中的事件并执行。
    master的Binlog dump thread查看
    mysql> SHOW PROCESSLIST\G *************************** 1. row *************************** Id: 2 User: root Host: localhost:32931 db: NULL Command: Binlog Dump Time: 94 State: Has sent all binlog to slave; waiting for binlog to be updated Info: NULL
    slave的Slave I/O thread和Slave SQL thread查看
    mysql> SHOW PROCESSLIST\G *************************** 1. row *************************** Id: 10 User: system user Host: db: NULL Command: Connect Time: 11 State: Waiting for master to send event Info: NULL *************************** 2. row *************************** Id: 11 User: system user Host: db: NULL Command: Connect Time: 11 State: Has read all relay log; waiting for the slave I/O thread to update it Info: NULL
    Processed: 0.009, SQL: 9