我的任务是将我们的 GCP 托管的 PostgreSQL 数据库从 9.6 版本升级到 13 版本。
我找到的说明(https://cloud.google.com/sql/docs/postgres/upgrade-db)说我们需要创建一个新的数据库,然后“确保目标实例有……相同的用户帐户,具有相同的 PostgreSQL 权限和密码”
我们有许多数据库,其中包含数十个用户和角色,我们允许用户直接连接并设置自己的密码。我们希望在不更改所有密码的情况下执行数据库升级。
我考虑过使用 pg_dumpall 将用户复制到新数据库,但由于我没有读取 pg_authid 的权限,所以失败了。看来我们需要一个超级用户帐户才能读取 pg_authid,而 GCP 不允许使用超级用户帐户。
有什么方法可以升级数据库并保留现有密码?
答案1
在我提出这个问题的时候,似乎没有办法做到这一点,但从那时起事情已经取得了进展。
Google Cloud SQL 现在提供就地主要版本升级,这将保留现有的用户密码。
https://cloud.google.com/sql/docs/postgres/upgrade-major-db-version-inplace