面试题答案
一键面试日志格式
- 基于语句的复制(Statement - based Replication,SBR):主库将执行的SQL语句记录到binlog中,从库重放这些语句来达到数据一致。优点是日志量小,节省存储空间和网络传输;缺点是对于一些函数(如NOW()、UUID()等),主从执行环境差异可能导致结果不一致。
- 基于行的复制(Row - based Replication,RBR):主库将数据行的变化记录到binlog中,从库根据这些行记录来更新数据。这样能避免因主从环境差异导致的不一致,适用于数据更新频繁的场景,但日志量较大。
- 混合模式复制(Mixed - based Replication,MBR):结合了SBR和RBR的优点,MariaDB会根据语句情况自动选择使用SBR还是RBR记录binlog。一般情况下使用SBR,对于可能导致不一致的语句使用RBR。
同步协议
- 半同步复制:主库在提交事务前,等待至少一个从库接收并写入relay log,才返回客户端成功。这减少了主库崩溃时数据丢失的风险,提高了数据一致性,但会增加主库的响应时间。
- 组复制:通过Paxos协议实现多节点间的数据一致性。节点间相互同步数据,确保所有节点的数据状态一致,可有效防止脑裂等问题,提高系统整体的一致性和可用性。
校验机制
- GTID(全局事务标识符):每个在主库提交的事务都有一个唯一的GTID,从库通过GTID来判断事务是否已经应用,避免重复执行,保证事务应用的顺序和主库一致。
- 日志校验和:MariaDB在binlog和relay log中添加校验和信息,从库在应用日志前验证校验和,确保日志在传输和存储过程中没有损坏,保证数据一致性。