Postgresql - AWS RDS 数据迁移到 GCP Cloudsql
Postgresql - AWS RDS data migration to GCP Cloudsql
我正在尝试将大量数据库从 AWS RDS Postresql 服务器迁移到 GCP Cloud SQL。
由于两者都是 postgresql 引擎,我认为从 aws 获取 pgdump 并在 gcp 中导入将是一个简单的解决方案。
但是,当 import cloud 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 中,因为即使在云 sql 中创建具有相同名称的角色也不会成功?
请问有什么解决办法吗?
在找到解决方案后回答我自己的问题。
因为 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需要格式化压缩输出才能恢复。为了实现 -Fc 在 pg_dump 命令中使用
我正在尝试将大量数据库从 AWS RDS Postresql 服务器迁移到 GCP Cloud SQL。 由于两者都是 postgresql 引擎,我认为从 aws 获取 pgdump 并在 gcp 中导入将是一个简单的解决方案。 但是,当 import cloud 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 中,因为即使在云 sql 中创建具有相同名称的角色也不会成功? 请问有什么解决办法吗?
在找到解决方案后回答我自己的问题。
因为 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需要格式化压缩输出才能恢复。为了实现 -Fc 在 pg_dump 命令中使用