是否有一种有效的方法来检查Postgres
备份(用于RDS
和Cloudsql
等托管服务)是否未损坏?
目前,我们执行此检查的方法之一是通过以下方式:
- 从
backup
启动一个新的数据库, - 运行
vacuum
- 如果真空运行成功,则认为备份未损坏
- 删除测试数据库
这听起来像一个有效的方法和任何更好的解决方案吗?
PS:GCP有这个开源工具可以在他们的终端上测试,但不知道我们如何在托管PG示例上实现或使用它。https://github.com/google/pg_page_verification
提前感谢!
3条答案
按热度按时间fbcarpbf1#
在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](https://cloud.google.com/blog/products/gcp/verifying-postgresql-backups-made-easier-new-open-source-tool)
sg24os4d2#
对于Amazon RDS,不需要检查损坏。
RDS服务是受管理的,理论上可以保证在创建快照时快照是有效的。
如果您想手动检查完整性,您所概述的过程是一种高级别的可靠方法。
在低级别上,
pg_checksums
也是检查完整性的好方法(您提到的pg_page_verification
工具使用了它)。免责声明:我知道RDS快照多年来在非常非常罕见的情况下损坏的情况,但它们非常罕见&最终,由于违反SLA而提供了赔偿。
不过,这不应该是一个担心99.95%的时间。
qc6wkl3g3#
要验证RDS快照,只需从中恢复数据库。据我所知,AWS依赖于PostgreSQL数据库的官方工具。
对于数据库备份验证,有pg_verifybackup工具。
pg_verifybackup用于根据备份时服务器生成的backup_manifest检查使用pg_basebackup执行的数据库群集备份的完整性。
使用
pg_dump
转储数据库,您可以验证如下:cat dump.sql | psql
。