面试题答案
一键面试relay - log在MariaDB复制机制中的角色
- 中继日志:relay - log(中继日志)是MariaDB复制架构中从库(slave)特有的一种日志。它主要用于存储从主库(master)接收过来的二进制日志(bin - log)事件。从库通过I/O线程从主库读取二进制日志事件,并将这些事件写入到relay - log中。
relay - log对数据复制流程的影响
- 数据暂存与顺序处理:
- 从库的I/O线程将主库的二进制日志事件源源不断地写入relay - log。这使得从库能够按顺序暂存这些事件,避免因为网络波动等原因导致事件处理的混乱。
- 然后,从库的SQL线程会按顺序读取relay - log中的事件,并在从库上重放这些事件,从而使从库的数据与主库保持一致。
- 保证数据一致性:relay - log确保了从库重放事件的顺序与主库记录事件的顺序一致。如果没有relay - log,从库可能会因事件接收和处理的时序问题,导致数据不一致。例如,在一些复杂的事务场景下,先处理事务提交事件,后处理事务中的数据修改事件,就会造成数据状态的错误。relay - log通过提供一个有序的事件队列,使得从库能够正确地重放主库的操作,保证了数据的一致性。
- 故障恢复支持:当从库发生故障重启后,SQL线程可以从relay - log中尚未处理完的位置继续重放事件,而不需要重新从主库获取全部的二进制日志事件。这大大提高了从库在故障恢复时的效率,减少了数据同步的时间,从而更快地让从库重新与主库保持数据一致的状态。