复制用途
- 实时备份
- 读写分离
复制模式
MySQL大概有三种复制模式:
- 异步复制,默认方式就是异步复制。主库在执行完客户端提交的事务后立即将结果返回给客户端,不关心从库是否已经接受并且处理。
- 全同步复制。 主库执行完一个事务,所有的从库都执行完之后才返回给客户端。
- 半同步复制。 主库执行完事务后,至少等待一个从库节点把binlog刷到replaylog文件才返回给客户端。
复制原理
复制过程一共需要三个线程。Master端写binlog线程,slave端IO线程和SQL线程。
在这里插入图片描述
大概流程如下:
slave端IO线程读取master.info文件,获取binlog的文件名和位置点,然后向master的IO线程请求binlog文件名和位置点。
Master端的IO线程会根据slave提供的信息和最新文件名和位置点发送给slave的IO线程
Slave的IO线程会把获取到的binlog的日志写到replaylog中,然后更新master.info信息
-
在这里插入图片描述QL线程会定期去读取replay log,把二进制的日志解析成SQL语句,并且同步到从库中
主从同步会出现的问题
数据复制延迟的问题
主库宕机,数据丢失的问题。
主从同步问题解决方案
**数据复制延迟**的问题可以通过升级数据库版本来解决,set global slave_parallel_workers=15;
**数据丢失**的问题可以修改异步复制为半同步复制。
网友评论