Massively Parallel Postgres Backups
a day ago
- PlanetScale 为分片 Postgres 和 MySQL 数据库自动备份,通过为每个分片启动临时 EC2 实例,最小化生产影响。
- 稳态备份过程包括从对象存储(如 S3)恢复上一次备份,重放 WAL(主要来自 S3,最近的片段直接从主节点获取),并保存一致且加密的快照。
- 跨分片的大规模并行实现了高速备份(例如,32 TB 数据分布在 8 个分片上约需 2.8 小时备份完成;分布在 32 个分片上仅需 42 分钟),传输速率超过 50 GB/s,支持 PB 级数据库。
- 初始备份使用 pg_basebackup 种子节点和 wal-g 实现持久存储,确保与稳态格式的一致性。
- 备份不仅用于灾难恢复,还用于数据库调整大小(例如,带有本地 NVMe 的 Metal 数据库)以及因故障进行的节点替换,利用恢复和追赶工作流程。
- 对于 MySQL(使用 Vitess),过程类似,但使用 VTBackup 和二进制日志复制替代 Postgres WAL。
- 最终目标是让备份和调整大小变得轻松、自动化且对用户透明。