我的本地计算机上有一个本地Postgres数据库。现在,我想将本地Postgres数据库文件合并到AWS现有RDS数据库。有谁知道如何做到这一点?预先谢谢你。
答案 0 :(得分:0)
如果RDS实例位于专用子网中,则需要通过EC2实例进行隧道传输才能到达RDS实例。假设已设置安全组,以便可以通过SSH进入EC2实例,并且EC2实例可以访问端口5432上的RDS,则可以执行以下操作:
$ pg_dump -Fc --no-acl --no-owner -h localhost -U<username> <database_name> -f <filename>
其中<username>
是本地计算机上的Postgres用户名(“ postgres”是默认用户)。例如:
$ pg_dump -Fc --no-acl --no-owner -h localhost -Upostgres my_development_db -f data.dump
ec2-user
是EC2实例上的默认用户,如果您使用的是AWS映像,则是这种情况。$ ssh -i /path/to/ssh/key -fNL 5433:[database_host]:5432 ec2-user@[app_host]
例如:
$ ssh -i ~/.ssh/ida_rsa -fNL 5433:my_prod_db.cbaxyzxyz.us-west-1.rds.amazonaws.com:5432 ec2-user@ec2-11-222-333-4.us-west-1.compute.amazonaws.com
$ pg_restore --no-owner -n public -c -1 -p 5433 -U<username> -h 127.0.0.1 -d <database_name> <filename>
例如:
$ pg_restore --no-owner -n public -c -1 -p 5433 -Umy_prod_username -h 127.0.0.1 -d prod_db_name data.dump
在出现提示时输入RDS数据库密码。
请注意,在从本地数据库转储重新创建数据库对象之前,-c
(“清理”)选项将删除数据库对象。