Hasty Briefsbeta

双语

It was surprisingly hard to break CloudNativePG replication

a day ago
  • 作者尝试创建一个落后于主库的PostgreSQL副本,但发现它一直在追赶,因为当流复制中断时,副本会从S3归档中拉取WAL日志。
  • 即便没有流复制,副本的重放LSN也会推进,这得益于CloudNativePG的restore_command——它会从对象存储中获取WAL。
  • PostgreSQL的备用恢复状态机在流复制失败时会回退到归档模式,形成一个循环,使副本几乎保持同步。
  • CloudNativePG同时配置了primary_conninfo和restore_command,从而启用了这一回退机制;其wal-restore二进制程序会从S3预取段文件。
  • 要真正中断复制,必须同时阻止流复制和归档访问;作者使用Chaos Mesh切断了副本与S3端点的连接。
  • 故意破坏系统是理解其行为的一种有价值的方式,也能确保监控工具产生有意义的告警。