基于binlog的同步
MySQL 最常见的主从同步方式。
同步过程:
主服务器将数据变更记录到binlog中,数据一致性采用两阶段(2pc)提交。
从服务器通过 I/O 线程连接到主服务器,读取二进制日志并写入到中继日志(Relay Log)。
从服务器的 SQL 线程读取中继日志并执行相应的 SQL 语句,从而实现数据同步。
基于全局事务标识符(GTID)的同步
GTID 是 MySQL 5.6 引入的复制方式,简化主从同步的配置和管理,并提供更高的可靠性和可扩展性。
全局事务标识符:每个事务在主服务器上执行时都会被分配一个唯一的 GTID,格式为
UUID:transaction_id
,其中UUID
是服务器的唯一标识符,transaction_id
是事务的序列号同步过程:
主服务器将每个事务包装在一个 GTID 中,并记录到二进制日志中。
从服务器通过 GTID 自动定位到主服务器的最新事务,并从该点开始同步。
基于并行复制的同步
MySQL5.7中引入的复制方式。
并行复制是指从服务器通过多个SQL线程并行执行中继日志中的SQL语句,从而提高数据同步速度的技术。
主要用于减少从服务器处理数据变更操作的延迟,提高系统的整体性能。
同步过程:
主服务器将数据变更记录到binlog中。
从服务器通过多个 SQL 线程并行执行中继日志中的 SQL 语句,从而实现更快的数据同步。
基于多源复制的同步
MySQL 5.7 引入了多源复制功能,允许从服务器从多个主服务器同步数据。
多源复制允许从服务器从多个主服务器同步数据,主要用于实现负载均衡和数据冗余。在多源复制中,从服务器通过多个I/O线程连接到不同的主服务器,并行读取各自的二进制日志,并通过多个SQL线程并行执行多个中继日志中的SQL语句。
同步过程:
从服务器通过多个 I/O 线程连接到不同的主服务器,读取各自的二进制日志。
从服务器的 SQL 线程并行执行多个中继日志中的 SQL 语句,从而实现从多个主服务器同步数据。