GCP迁移工具密码长度限制致无法从Heroku PostgreSQL迁移数据
Heroku PostgreSQL迁移GCP CloudSQL的密码长度限制解决方案
一、调整Heroku端的数据库凭据
Heroku默认的数据库角色无法通过ALTER ROLE修改密码,因为Heroku会自动管控该角色的凭据,可通过以下方式解决:
- 创建自定义数据库角色:在Heroku PostgreSQL实例中执行以下SQL命令,创建一个密码长度符合GCP限制的新角色,并授予对应权限:
之后使用这个自定义角色的账号密码作为GCP迁移工具的源数据库连接信息。CREATE ROLE custom_user WITH LOGIN PASSWORD 'your_32_char_max_password'; GRANT ALL PRIVILEGES ON DATABASE your_database_name TO custom_user; - 使用Heroku临时凭据:通过
heroku pg:credentials:url命令生成临时连接字符串,注意临时凭据有有效期,需在有效期内完成迁移操作。
二、适配GCP迁移工具的密码限制
目前GCP CloudSQL迁移工具(控制台向导)对源数据库密码的32字符限制是固定规则,没有官方配置项可以修改这一限制,因此无法直接让GCP接受更长密码。
替代迁移方案:逻辑备份+恢复
如果上述方式仍有阻碍,可绕过GCP迁移工具,采用备份恢复的方式完成迁移:
- 在Heroku端生成并下载备份:
执行命令heroku pg:backups:capture创建备份,再用heroku pg:backups:download将备份文件下载到本地。 - 将备份导入GCP CloudSQL:
使用psql命令或者CloudSQL控制台的导入功能,将本地备份文件导入到目标CloudSQL实例中。
内容的提问来源于stack exchange,提问作者Dominik Roszkowski
相关产品推荐
相关产品推荐

