You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Heroku环境下PostgreSQL 10升级至11的操作步骤问询

Heroku PostgreSQL 10 升级至 11 官方步骤指引

一、官方推荐的 pg_upgrade 升级步骤(适用于启用校验和的实例)

这是Heroku针对启用校验和数据库的官方升级方案,downtime短且数据安全:

  • 确认当前数据库状态
    运行命令检查版本和校验和状态:

    heroku pg:info DATABASE
    

    确保输出里的Version是10,Data Integrity显示Checksummed。

  • 创建指定版本11的跟随者实例
    这一步是明确指定升级到11版本的关键,不会自动选择更高版本:

    heroku pg:follow --app your-app-name DATABASE HEROKU_POSTGRESQL_<COLOR> --version 11
    

    替换your-app-name为你的应用名,<COLOR>是Heroku分配的数据库标识(比如BLUE、GREEN,执行后会提示可用标识)。

  • 等待跟随者同步完成
    持续查看同步状态:

    heroku pg:info HEROKU_POSTGRESQL_<COLOR>
    

    直到Followers字段显示Up to date,同步时间取决于你的数据量大小。

  • 开启维护模式
    防止升级期间用户操作导致数据不一致:

    heroku maintenance:on
    
  • 将11版本跟随者提升为主数据库
    完成主库切换:

    heroku pg:promote HEROKU_POSTGRESQL_<COLOR>
    
  • 验证升级结果
    检查新主库版本:

    heroku pg:info DATABASE
    

    确认Version为11,同时测试应用连接,比如运行数据库查询或启动应用验证功能正常。

  • 关闭维护模式并清理旧实例

    heroku maintenance:off
    

    确认应用稳定运行后,删除旧的10版本数据库:

    heroku pg:destroy OLD_DATABASE_URL
    

二、Stack Overflow导出导入法的生产环境注意事项

如果是用pg_dump+pg_restore的方法,生产环境可以用,但要注意:

  • 必须先开启维护模式,防止导出过程中产生新数据导致丢失
  • 导出时要适配Heroku权限,用以下命令:
    pg_dump -F c --no-owner -d YOUR_DATABASE_URL > dump.dump
    
  • 导入到新创建的11版本数据库:
    pg_restore --no-owner -d NEW_DATABASE_URL dump.dump
    
  • 这种方法downtime比pg_upgrade长,适合数据量较小的实例,官方更推荐pg_upgrade方案。

三、必做前置准备

  • 升级前一定要备份数据:
    heroku pg:backups:capture
    
    并下载备份到本地保存,避免意外。
  • 先在staging环境完全复刻生产流程测试,确认应用兼容性(Rails 5.2和Ruby 2.6.7对PostgreSQL 11完全兼容,无需改代码)
  • 升级期间实时监控日志:
    heroku logs --tail
    

内容的提问来源于stack exchange,提问作者shashank barman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 06:35:37