在大多数后端开发者的日常认知里,数据库日志(无论是 MySQL 的 Binlog、InnoDB Redo Log,还是 PostgreSQL 的 WAL)始终扮演着一个“工具人”的角色:
- 做主从复制时,通过 Binlog 传给从库回放;
- 做数据订阅与异构同步时,让 Canal 或 Flink CDC 监听 Binlog;
- 发生系统崩溃时,依赖 WAL / Redo Log 做 ARIES 算法的重放与故障恢复;
- 误删数据时,翻出前天夜里的全备,再从 Binlog 找到对应的 Position 一行行反解析。
在这些传统场景中,日志永远是“二等公民”。数据库真正的“本体”依然是磁盘上那堆沉重、易碎、被原地覆写(in-place update)的数据页(Data Pages / Tablespace)。正因为数据页与特定的机器磁盘死死绑在一起,数据库的扩缩容、高可用切换、快照备份才变得如此笨重。
开源云原生数据库 Neon 带来的最深刻变革,表面上看是“让 PostgreSQL 能够自动休眠(Scale-to-Zero)”,但其底层真正的架构革命,恰恰在于对数据库预写式日志(WAL / Binlog)的颠覆性重构——它践行了分布式系统领域最优雅的哲学:“The Log IS the Database”(日志即数据库)。
本文将从传统数据库日志的工程困境出发,深度剖析 Neon 是如何将日志从辅助同步产物提升为核心存储基石,并由此解锁分布式共识、按日志重构页面、Git 式秒级分支与无锁时间旅行的。
Continue reading →