我在 Amazon Relational Database Service (Amazon RDS) for PostgreSQL 中的恢复操作失败或出现了问题。我想解决自动快照恢复、时间点故障恢复 (PITR) 或使用 PostgreSQL 原生工具时出现的错误。
解决方法
Amazon RDS for PostgreSQL 支持以下恢复方法:
- 自动或手动数据库快照
- 备份保留期内的时间点故障恢复 (PITR)
- PostgreSQL 原生工具,例如 pg_dump 和 pg_restore,用于逻辑备份
参考以下部分来排查您的恢复问题类型。
检查 pg_restore 版本兼容性
如果您的 pg_restore 实用程序版本与用于创建备份的版本不兼容,那么您可能会收到以下错误消息之一:
"Unsupported version (1.15) in file header"
"Could not find header for file 'toc.dat' in tar archive"
如果 PostgreSQL 实用程序要求 pg_dump 备份创建工具和 pg_restore 恢复工具之间的版本一致,那么您会收到其中一条错误消息。
要解决此问题,请检查您的 pg_restore 版本。在安装了 PostgreSQL 客户端实用程序的操作系统 (os) 上运行以下命令:
pg_restore --version
确保您的 pg_restore 版本与用于创建备份的 pg_dump 版本相同或比后者更新。如果需要,请升级您的 pg_restore 实用程序,使其匹配或高于备份版本。有关更多信息,请参阅 PostgreSQL pg_dump 和 pg_restore 实用程序。
解决备份格式不匹配问题
如果您将 pg_restore 与纯文本 SQL 备份文件一起使用,那么您可能会收到以下错误消息:
"Input file appears to be a text format dump.Please use psql"
要解决此问题,请使用 psql 实用程序而非 pg_restore 来导入备份文件。有关更多信息,请参阅在 Amazon RDS 上将数据导入 PostgreSQL。
注意:为避免在创建后续备份时出现此问题,请在创建备份时指定正确的格式。如果您计划使用 pg_restore 进行恢复,请使用 pg_dump (-Fc) 生成自定义格式,或使用 -Ft 生成 tar 格式。
监控恢复性能
在快照恢复或 PITR 操作期间,您的数据库实例会使用延迟加载。数据块会在被访问时按需加载。在频繁访问的数据被缓存之前,您的实例的性能可能会变慢。
要监控恢复进度,请运行以下命令:
aws rds describe-db-instances --db-instance-identifier instance-id
**注意:**将 instance-id 替换为您的数据库实例标识符。
有关在恢复操作后提升性能的信息,请参阅使用 PostgreSQL 的最佳实践。
管理数据库端点
如果您需要在恢复操作后保持相同的端点名称,则可以重命名数据库实例。
如果您使用只读副本,请确保在恢复操作后更新其配置。
相关信息
恢复到数据库实例
将 Amazon RDS 的数据库实例恢复到指定时间
将 PostgreSQL 数据库迁移到 Amazon RDS 和 Amazon Aurora 的最佳实践