深入理解CDC原理与Debezium数据接入流程和原理
一、什么是WAL
- WAL(Write-ahead logging,预写式日志)是数据库系统提供原子性和持久化的一系列技术。
- WAL的主要作用是将元数据的变更操作写入到持久稳定的db之前,先预先写入到一个log中,再由另外的操作将log apply到外部的持久db里去。这种模式会减少掉每次的db写入操作,尤其当系统要处理大量的transaction操作的时候,WAL的方式相比较于实时同步db的方式有着更高的效率。
- WAL还有一点很重要的作用是在disaster recovery过程中起到状态恢复的作用,系统在load完元数据db后,再把未来得及提交的WAL apply进来,就能恢复成和之前最终一致的状态。
- WAL不记录元数据的本身,而是变更的record。对于WAL来说,是通过WAL buffer写入,当这个buffer满了的时候或者人工触发flush动作时,它就会将transaction数据写入到WAL的log里。当然,系统在每次完成一个操作时,同时会将改动应用到memory和WAL buffer内,然后自己再控制buffer flush出去的逻辑。