Postgresql - AWS RDS 数据迁移到 GCP Cloudsql

4
我正在尝试将一堆数据库从AWS RDS Postresql服务器迁移到GCP Cloud SQL。 由于两者都是postgresql引擎,我认为从aws中获取pgdump并在gcp中导入将是一个简单的解决方案。 然而,当导入到云sql时,我很惊讶地发现失败了,并抱怨缺少一些角色。 以下是尝试的步骤
从AWS RDS中转储数据库
pg_dump -h <connection_endpoint> -U root -f db_dump.sql <db_name>

然后我尝试使用以下命令将其导入到GCP Cloud sql。
instance-1:~$ PGPASSWORD=<passwprd> psql   --host=<host_name>  --port=5432   --username=postgres   --dbname=<db_name> < db_dump.sql
SET
SET
SET
SET
SET
 set_config 
------------

(1 row)

SET
SET
SET
CREATE SCHEMA
ERROR:  must be member of role "rdsadmin"
CREATE SCHEMA
ERROR:  must be member of role "root"
CREATE SCHEMA
ERROR:  must be member of role "root"
CREATE SCHEMA
ERROR:  must be member of role "root"
CREATE SCHEMA
ERROR:  must be member of role "root"
CREATE EXTENSION
ERROR:  must be owner of extension plpgsql
CREATE EXTENSION
COMMENT
SET
SET
CREATE TABLE...

正如您所看到的,rdsadmin和root角色缺失。如何确保这些缺失的角色在GCP Cloud sql中具有正确的设置,因为即使在cloud sql中创建了同名的角色,也无法成功?是否有任何解决方案?


当然,@MarkRotteveel,我会添加它。谢谢。 - Neeraj Kumar
1个回答

8

我自己回答这个问题,因为我找到了解决方法。

由于rdsAdmin用户是由AWS创建用于RDS集群的管理任务。使用不带所有者的pg_dump进行备份,并在没有所有者的情况下进行还原即可解决问题,我能够在云SQL中执行还原操作。

pg_dump -Fc -O -h  <rds-host> -U <user> -d <db> > db.dump
pg_restore -U postgres -d <db> -h <cloudsql-host> -v --no-owner db.dump

pg_restore需要格式化压缩输出进行还原。为此,在pg_dump命令中使用-Fc。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接