MST

星途 面试题库

面试题:MariaDB如何确保binlog事件在主从复制中的一致性

在MariaDB主从复制场景下,主库产生的binlog事件需要准确无误地应用到从库。请详细描述MariaDB采用了哪些机制来保证binlog事件在主从复制过程中的一致性,包括但不限于日志格式、同步协议和校验机制等方面。
43.6万 热度难度
数据库MariaDB

知识考点

AI 面试

面试题答案

一键面试

日志格式

  1. 基于语句的复制(Statement - based Replication,SBR):主库将执行的SQL语句记录到binlog中,从库重放这些语句来达到数据一致。优点是日志量小,节省存储空间和网络传输;缺点是对于一些函数(如NOW()、UUID()等),主从执行环境差异可能导致结果不一致。
  2. 基于行的复制(Row - based Replication,RBR):主库将数据行的变化记录到binlog中,从库根据这些行记录来更新数据。这样能避免因主从环境差异导致的不一致,适用于数据更新频繁的场景,但日志量较大。
  3. 混合模式复制(Mixed - based Replication,MBR):结合了SBR和RBR的优点,MariaDB会根据语句情况自动选择使用SBR还是RBR记录binlog。一般情况下使用SBR,对于可能导致不一致的语句使用RBR。

同步协议

  1. 半同步复制:主库在提交事务前,等待至少一个从库接收并写入relay log,才返回客户端成功。这减少了主库崩溃时数据丢失的风险,提高了数据一致性,但会增加主库的响应时间。
  2. 组复制:通过Paxos协议实现多节点间的数据一致性。节点间相互同步数据,确保所有节点的数据状态一致,可有效防止脑裂等问题,提高系统整体的一致性和可用性。

校验机制

  1. GTID(全局事务标识符):每个在主库提交的事务都有一个唯一的GTID,从库通过GTID来判断事务是否已经应用,避免重复执行,保证事务应用的顺序和主库一致。
  2. 日志校验和:MariaDB在binlog和relay log中添加校验和信息,从库在应用日志前验证校验和,确保日志在传输和存储过程中没有损坏,保证数据一致性。