我们如何验证 Postgres 数据库备份没有损坏?

问题描述 投票:0回答:3

是否有一种有效的方法来检查

Postgres
备份(对于
RDS
Cloudsql
等托管服务)是否未损坏?

目前我们实施此检查的方法之一是以下方式:

  • backup
  • 启动一个新的数据库
  • 运行
    vacuum
  • 如果真空运行成功,我们认为备份没有损坏
  • 删除测试数据库

这听起来像是一个有效的方法吗?还有更好的解决方案吗?

PS:GCP 有这个开源工具可以在他们的端进行测试,但不明白我们如何在托管 PG 实例上实现或使用它。 https://github.com/google/pg_page_verification

提前致谢!

postgresql amazon-rds google-cloud-sql vacuum
3个回答
1
投票

在 Google Cloud SQL 中,

PostgreSQL Page Verification tool
会在您的备份上自动运行[1],但如果它让您感觉更舒服,那么您可以自己运行它。

[1] https://cloud.google.com/blog/products/gcp/verifying-postgresql-backups-made-easier-new-open-source-tool


0
投票

对于Amazon RDS,不需要检查损坏。

RDS服务是托管的,理论上保证创建快照时快照是有效的。

如果您想手动检查完整性,您所概述的过程是高级别的可靠方法。

在低级别上,

pg_checksums
也是检查完整性的好方法(您提到的
pg_page_verification
工具使用的)。


免责声明:我知道多年来 RDS 快照损坏的情况非常非常罕见,但这种情况极其罕见,最终,由于违反 SLA,我们已提供赔偿。

然而,在 99.95% 的时间里,这不应该是一个担心。


0
投票

要验证 RDS 快照,只需从中恢复数据库即可。据我所知,AWS 依赖于 PostgreSQL 数据库的官方工具。

对于数据库备份验证,有 pg_verifybackup 工具。

pg_verifybackup 用于根据备份时服务器生成的 backup_manifest 检查使用 pg_basebackup 进行的数据库集群备份的完整性。

带有

pg_dump
的转储数据库,您可以像这样验证:
cat dump.sql | psql

© www.soinside.com 2019 - 2024. All rights reserved.