将本地PostgreSQL数据库文件合并到AWS RDS数据库

问题描述 投票:0回答:1

我在本地机器上有一个本地Postgres数据库。现在我想将本地Postgres数据库文件合并到AWS现有的RDS数据库。有谁知道如何做到这一点?先感谢您。

postgresql ubuntu-14.04 amazon-elastic-beanstalk rds
1个回答
0
投票

如果RDS实例位于私有子网中,则需要通过EC2实例隧道到达RDS实例。假设您的安全组已设置为可以进入EC2实例,并且EC2实例可以访问端口5432上的RDS,您可以执行以下操作:

  1. 转储本地数据库:
$ 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
  1. 在本地计算机上,设置到RDS实例的隧道。此示例假定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 [email protected]
  1. 然后,仍然在本地计算机上,将本地数据库转储导入远程RDS数据库服务器:
$ 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(“clean”)选项将在从本地数据库转储重新创建数据库对象之前删除它们。

© www.soinside.com 2019 - 2024. All rights reserved.