Lakebase Postgres将Postgres的WAL日志作为持久化数据源,使对象存储成为事务数据库的底层存储。通过将日志视为数据库,数据文件作为派生缓存,系统支持按LSN寻址历史数据,实现秒级分支、即时恢复和低成本副本。这使代理工作负载能安全操作数据库,并支持LTAP分析,无需复制数据。
本文介绍etcd v3.5.33中WAL日志与快照的实现机制。WAL通过CRC保护的64MB段文件持久化Raft日志,快照在applied index每增10万时触发并截断旧日志。崩溃恢复按WAL重放、加载快照、追赶日志顺序进行。committedIndex与appliedIndex分离,前者由Raft推进,后者由apply协程推进,二者差值过大时可能导致Watch延迟或重启后未就绪。
本文介绍etcd排障的五轴坐标系:Raft共识、WAL持久化、MVCC存储、Watch同步、Lease TTL。通过症状映射到对应轴,提供诊断工具和指标,如endpoint status字段解读。强调先定位问题轴再下钻组件,避免盲目defrag或restore。附K8s控制面对照表和证据包写法建议。
本文介绍 etcd 生产内核系列文章,涵盖 Raft、WAL、MVCC、Watch、Lease 五轴排障框架,共16篇。内容聚焦读写失败归因、线性一致读、Watch 追赶、Lease 切换及 K8s 耦合,并给出选型建议(何时用 etcd 或 TiKV/FDB)。版本锚定 v3.5.33,适合 SRE 和架构师深入掌握 etcd 运维与故障定位。
本文介绍etcd生产内核系列文章,聚焦Raft共识、WAL持久化、MVCC存储、Watch同步和Lease TTL五条排障坐标系。文章指出常见问题如proposal卡顿、follower读stale、Watch追赶OOM等,并规划16篇阅读路线,强调K8s apiserver与etcd的耦合关系,为运维排障提供系统化框架。
PostgreSQL 19新增WAIT FOR命令,允许会话阻塞至WAL达到指定位置,实现异步副本的读己之写一致性,无需同步复制开销。该命令支持多种等待模式(如standby_replay、standby_flush)及超时、NO_THROW选项。因需无快照运行以避免自死锁,WAIT FOR必须作为顶层命令执行,不能用于函数或事务内。此功能保持异步复制,仅需保证一致性的读取等待副本追赶。
本文介绍Ceph BlueStore写路径,涵盖queue_transactions()到aio完成的流程,重点分析直写与deferred两条分叉路径。直写适用于大块新分配,数据先落盘再提交元数据;deferred用于小写或覆盖,先提交KV再异步落盘。文章还讨论min_alloc_size配置、checksum计算时机、压缩处理及deferred路径的带宽竞争问题。
pg_walviz是一款用于可视化PostgreSQL WAL段文件的新工具,提供段概览、记录片段列表和记录检查器三种同步视图,展示物理布局和原始字节。用户可通过页面、记录、偏移或LSN导航。该工具为只读,需使用归档段,避免活跃WAL。目前为beta版,支持远程访问,但大输入加载较慢。
Snowflake将CDC直接嵌入Postgres内核,通过推式架构和事务边界,将数据复制变为自动、稳定的机制。它利用扩展监控WAL日志,将变更打包为Parquet文件存入Iceberg,确保事务一致性和“恰好一次”处理,并通过实时视图解耦复制与查询延迟,简化运维,使复制可靠且无需人工干预。
Debezium 是分布式 CDC 平台,通过追踪 PostgreSQL 的 WAL 日志,将行变更实时发布到 Kafka。本文介绍如何用 Docker 搭建 PostgreSQL、Kafka 和 Kafka Connect 环境,注册 Debezium 连接器,并演示初始快照和实时增删改事件。事件包含 before、after、source 和 op 字段,主键作为消息键保证顺序。Debezium 读取 WAL 而非表,对应用查询无影响,仅增加 WAL 保留开销。
PostgreSQL逻辑复制基于WAL实现实时CDC,通过复制槽跟踪消费进度,发布定义表过滤,WAL发送进程推送变更。需设置wal_level=logical、复制角色和发布,消费者用复制协议流式接收行级变更,可转发至Kafka等系统。
Postgres备份主要有三种方式:逻辑备份(pg_dump)、文件系统备份和连续归档。pg_dump简单但大库耗时且可能引发事务回卷;文件系统备份需停机;连续归档结合WAL,支持在线备份和PITR,通过全页写入修复不一致数据,是生产环境首选,但恢复时需重放WAL,备份频率影响恢复速度。
本文介绍WiredTiger日志系统:WAL文件为WiredTigerLog.*,预分配用Tmplog/Preplog;提交时写commit记录,崩溃恢复从最近checkpoint回放;热路径用lock-free slot池,内部线程分工;backup cursor打开时禁用自动删除和预分配。
SQLite WAL模式将改动追加至-wal文件,主文件不变,实现读写不互阻。checkpoint为必要操作,PASSIVE不缩文件,仅TRUNCATE截断至零。实测显示PASSIVE后主文件增大而WAL不变,TRUNCATE后归零。SQLite WAL与PostgreSQL WAL同名但机制不同,前者帧参与读路径,后者仅恢复用。权衡读放大与checkpoint频率仍为开放问题。
本文介绍SQLite的ATTACH DATABASE功能,允许一个连接同时操作多个数据库文件。跨库事务在rollback journal模式下通过super-journal机制保证原子性,但WAL模式下会退化为各文件独立原子。锁按文件独立跟踪,跨库写需在所有文件上获取EXCLUSIVE锁。事务进行中的库无法DETACH。同名表省略前缀时取最早挂载的库。
本文对比SQLite与PostgreSQL/InnoDB在进程模型、日志、锁和缓冲池四方面的机制差异。SQLite采用嵌入式库、单文件、文件级单写者,无服务器进程和共享缓冲池;PG/InnoDB则有多进程/线程、网络协议和共享缓存。文中强调WAL、snapshot等术语在不同系统中含义不同,需注意区分,并指出SQLite的写串行化与服务器行锁机制本质不同。
本文介绍SQLite 3.0的锁状态机,五态为UNLOCKED、SHARED、RESERVED、PENDING、EXCLUSIVE。RESERVED允许新读者,PENDING拒绝新读者以防写者饿死。Pager仅跟踪四态,PENDING是瞬时状态。实测验证RESERVED唯一性,读写可共存。shared cache已过时,WAL模式另用独立锁机制。
本文介绍SQLite事务的三种BEGIN模式:DEFERRED推迟取锁,IMMEDIATE立即获取RESERVED锁,EXCLUSIVE在WAL模式下与IMMEDIATE等价。SQLite通过写串行化实现SERIALIZABLE隔离,单写者模型天然避免write skew异象。WAL模式下快照过期会返回SQLITE_BUSY_SNAPSHOT,需回滚重试。COMMIT落盘时机由日志模式决定。
本文是SQLite内核系列第17篇(末篇),总结选型决策树:根据网络多写者、SQL需求、分析负载等条件,选择PostgreSQL/InnoDB、DuckDB、RocksDB或SQLite。SQLite适合嵌入式行存OLTP,单文件、零IPC、单写者。文章还提供站内阅读地图、学术谱系(如Bayer & McCreight 1972)及开放问题,如单写者权衡、WAL checkpoint策略等。
该文章是SQLite内核系列的技术指南,涵盖17篇内容,从单文件格式、Pager缓存、B-Tree分裂到VDBE字节码、WAL日志和锁状态机。文章提供阅读路径和依赖关系,适合嵌入式工程师或从PG/InnoDB转来的读者,帮助理解SQLite的存储、并发与选型对比。
完成下面两步后,将自动完成登录并继续当前操作。