PostgreSQL поддерживает логические бэкапы. Вы можете использовать функцию pg_dump логического резервного копирования для экспорта файлов бэкапа и последующего импорта их в RDS с помощью psql.
Вы можете получить доступ к экземплярам RDS через EIP или от ECS по частной сети.
Подробности см. в разделе 5.
Версия клиента PostgreSQL должна совпадать с версией движка базы данных вашего экземпляра RDS for PostgreSQL. PostgreSQL база данных или клиент предоставляют инструменты pg_dump и psql.
Перед миграцией существующей базы данных PostgreSQL в RDS, вам сначала потребуется экспортировать данные.
pg_dump --username=<DB_USER> --host=<DB_ADDRESS> --port=<DB_PORT> --format=plain --file=<BACKUP_FILE><DB_NAME>
Введите пароль базы данных по запросу.
Если экспортируемый SQL-файл использует операторы INSERT, вы легко сможете редактировать и изменять файл. Однако скорость импорта данных может быть медленнее, чем при использовании операторов COPY. Рекомендуется выбрать подходящий формат оператора в зависимости от ваших потребностей.
Дополнительную информацию см. в разделе Параметры pg_dump.
Примеры:
$ pg_dump --username=root --host=192.168.151.18 --port=5432 --format=plain --file=backup.sql my_db
Пароль пользователя root:
$ pg_dump --username=root --host=192.168.151.18 --port=5432 --format=plain --inserts --file=backup.sql my_db
Пароль пользователя root:
$ pg_dump --username=root --host=192.168.151.18 --port=5432 --format=plain --schema-only --file=backup.sql my_db
Пароль пользователя root:
$ pg_dump --username=root --host=192.168.151.18 --port=5432 --format=plain --data-only --file=backup.sql my_db
Пароль пользователя root:
После выполнения любой команды из приведенных выше примеров будет создан следующий файл backup.sql:
[rds@localhost ~]$ll backup.sql-rw-r-----. 1 rds rds 2714 Sep 21 08:23 backup.sql
pg_dump --username=<DB_USER> --host=<DB_ADDRESS> --port=<DB_PORT> --format=plain --file=<BACKUP_FILE> <DB_NAME> --table=<TABLE_NAME>
Введите пароль к базе данных по запросу.
Примеры:
$ pg_dump --username=root --host=192.168.151.18 --port=5432 --format=plain --file=backup.sql my_db --table=test
Пароль для пользователя root:
$ pg_dump --username=root --host=192.168.151.18 --port=5432 --format=plain --file=backup.sql my_db --table=test1 --table=test2
Пароль для пользователя root:
$ pg_dump --username=root --host=192.168.151.18 --port=5432 --format=plain --file=backup.sql my_db --table=ts_*
Пароль для пользователя root:
$ pg_dump --username=root --host=192.168.151.18 --port=5432 --format=plain --file=backup.sql my_db -T=ts_*
Пароль для пользователя root:
После выполнения команд любого из приведенных выше примеров будет создан файл backup.sql следующим образом:
[rds@localhost ~]$ ll backup.sql-rw-r-----. 1 rds rds 2714 Sep 21 08:23 backup.sql
Если целевая база данных отсутствует, выполните следующую команду для создания базы данных:
# psql --host=<RDS_ADDRESS> --port=<DB_PORT> --username=root --dbname=postgres -c "create database<DB_NAME>;"
# psql --host=<RDS_ADDRESS> --port=<DB_PORT> --username=root --dbname=<DB_NAME> --file=<BACKUP_DIR>/backup.sql
Введите пароль к экземпляру базы данных RDS по запросу.
Пример:
# 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
В данном примере база данных под названием my_db была импортирована.
my_db=> \l my_dbList of databasesName | Owner | Encoding | Collate | Ctype | Access privileges------+-------+----------+-------------+-------------+-----------my_db | root | UTF8 | en_US.UTF-8 | en_US.UTF-8 |(1 row)