mysql主从复制原理
mysql主从复制涉及三个线程:
- log dump thread 运行在主节点;
- I/O thread 运行在从节点;
- SQL thread 运行在从节点。
- log dump thread:当从节点连接主节点时,主节点会创建一个log dump线程,用于发送binlog日志,在读取binlog日志时,此线程会对主节点上的binlog加锁,当读取完成,发送给从节点前,锁才会被释放;
- I/O thread:当从节点执行start slave命令后,从节点会创建一个I/O线程用来连接主节点,请求主库中更新的binlog,接收到主节点binlog dump发送的更新后,保存在本地relay log中;
- SQL thread:SQL线程负责读取relay log中的内容,解析成具体的操作并执行,最终保证主从数据一致性。
附:
对于每一个主从连接,都需要三个进程来完成,当主节点有多个从节点时,主节点会为每一个当前连接的从节点创建一个log dump线程,而每个从节点都有自己的I/O线程和SQL线程。
从节点用两个线程将从主库拉取更新和执行分成两个独立的任务,这样在执行同步数据任务时,不会降低读操作的性能。