PostgreSQL supports logical backups. You can use the pg_dump logical backup function to export backup files and then import them to RDS using psql.
You can access RDS DB instances through an EIP or through an ECS.
For details about how to create and connect to an ECS, see section How Can I Create and Connect to an ECS?
For details, see How Can I Install the PostgreSQL Client?
The PostgreSQL client version must be the same as the version of RDS for PostgreSQL. The PostgreSQL database or client will provide pg_dump and psql.
Before migrating an existing PostgreSQL database to RDS, you need to export the PostgreSQL database.
pg_dump --username=<DB_USER> --host=<DB_ADDRESS> --port=<DB_PORT> --format=plain --file=<BACKUP_FILE> <DB_NAME>
Enter the database password when prompted.
Example:
$ pg_dump --username=root --host=192.168.151.18 --port=5432 --format=plain --file=backup.sql my_db
Password for user root:
After this command is executed, a backup.sql file will be generated as follows:
[rds@localhost ~]$ ll backup.sql
-rw-r-----. 1 rds rds 2714 Sep 21 08:23 backup.sql
If the destination database does not exist, run the following command to create a database:
# psql --host=<RDS_ADDRESS> --port=<DB_PORT> --username=root --dbname=<DB_NAME> --file=<BACKUP_DIR>/backup.sql
Enter the password for the RDS DB instance when prompted.
Example:
# psql --host=172.16.66.198 --port=5432 --username=root --dbname=my_db --file=backup.sql
Password for user root:
my_db=> \l my_db
In this example, the database named my_db has been imported.
my_db=> \l my_db List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges ------+-------+----------+-------------+-------------+----------- my_db | root | UTF8 | en_US.UTF-8 | en_US.UTF-8 | (1 row)