Сценарии
Вы можете обновить основную версию RDS for PostgreSQL, чтобы получить больше функций, более высокую производительность и безопасность. Обновления основной версии могут вводить изменения, несовместимые с существующими версиями, и влиять на работу сервиса. Поэтому вам необходимо протестировать сервисы на целевой версии до обновления.
В этом разделе исходный экземпляр указывает экземпляр БД, работающий с исходной версией, а целевой экземпляр указывает экземпляр БД, работающий с целевой версией.
Описание версии RDS for PostgreSQL
- RDS for PostgreSQL v10 и более поздних версий состоит из основной версии и минорной версии. Обновление основной версии относится к обновлению основной версии, например с 11.x до 12.x.
- Версии раннее RDS for PostgreSQL v10 состоят из двух основных версий и минорной версии. Обновление основной версии относится к обновлению основных версий, например с 9.5.x до 9.6.x или с 9.x.x до 10.x.
Подготовка
- Просмотрите информацию о экземпляре БД RDS for PostgreSQL, который будет обновлен.
- На Экземпляры странице, нажмите экземпляр базы данных, который будет обновлен.
- На Основная информация странице, просмотрите регион, AZ, VPC, подсеть и группу безопасности экземпляра базы данных.
- Подготовьте ECS.
Чтобы подключиться к экземпляру базы данных через ECS, необходимо сначала создать ECS.
Регион, AZ, VPC, подсеть и группа безопасности ECS такие же, как у экземпляра RDS for PostgreSQL DB, который будет обновлен.
- Установите клиент PostgreSQL на ECS созданный в 2.Note
Версия клиента RDS for PostgreSQL должна быть такой же, как у экземпляра RDS for PostgreSQL. Экземпляр RDS for PostgreSQL или клиент предоставляет pg_dump, pg_restore, и psql.
- Подключитесь к исходному экземпляру, ссылаясь на Подключение к экземпляру БД из Linux ECS и выполните следующую SQL‑инструкцию в каждой базе данных, чтобы получить список используемых расширений:
select extname from pg_extension;
- Выберите целевую версию, содержащую все расширения, исходя из списка используемых расширений.
Подробную информацию о поддерживаемых расширениях в разных версиях RDS for PostgreSQL см. Поддерживаемые расширения.
- Создайте шаблон параметров, совместимый с исходной версией, ссылаясь на Создание шаблона параметров.
- Создать экземпляр RDS для PostgreSQL, работающий на целевой версии.
- Регион, AZ, VPC, подсеть и группа безопасности целевого экземпляра совпадают с аналогичными параметрами исходного экземпляра.
- На подготовленном ECS в 2, используйте psql для подключения к целевому экземпляру, обратившись к Подключение к экземпляру DB из Linux ECS и проверьте, что соединение успешно.
Процедура
Выполните следующие операции на подготовленном ECS.
- Используйте psql для подключения к исходному экземпляру и выполните следующую SQL‑инструкцию, чтобы получить список баз данных:
postgres=# \l
- Используйте psql для подключения к целевому экземпляру и выполните следующую SQL‑инструкцию, чтобы проверить, получены ли все базы данных в 1 существует на целевом инстансе:
postgres=# \l
- Если да, перейдите к 3.
- Если нет, выполните следующее SQL‑выражение, чтобы создать базы данных, которых нет на целевом инстансе, и перейдите к 3.
postgres=# create database my_target_db;
Note- Шаблонные базы данных template0 и template1 не требуют миграции.
- База данных postgres создаётся по умолчанию и не требует миграции, если только она не хранит служебные данные.
- Используйте pg_dump для выгрузки исходного инстанса и pg_restore для восстановления данных на целевом инстансе. Повторите 3 по 4 на каждой базе данных сервиса.
- Для версий, отличных от RDS для PostgreSQL 11, выполните следующую команду выгрузки:
pg_dump -Fc -v --host=source_IP --port=source_port --username=my_user --dbname=my_source_db | pg_restore -v --no-owner --host=target_IP --port=target_port --username=my_user --dbname=my_target_db
- Для RDS for PostgreSQL 11 выполните следующую команду дампа:
pg_dump -Fc -v --host=source_IP --port=source_port -Ndbms_lob -Ndbms_output -Ndbms_random -Nsys -Nutl_raw -Npg_catalog --username=my_user --dbname=my_source_db | pg_restore -v --no-owner --host=target_IP --port=target_port --username=my_user --dbname=my_target_db
Note- Пользователь, использующий pg_dump должен иметь разрешение на доступ ко всем объектам в базе данных.
- Пользователь, использующий pg_restore должен иметь все разрешения на операции в базе данных.
- Для получения подробностей о том, как предоставлять разрешения, см. GRANT.
- Если pg_dump команда использует -N параметр, blobs не будут экспортированы.
- Если команда pg_dump использует -Fc параметр, экспортированный файл находится в бинарном формате. Чтобы экспортировать SQL‑файлы, используйте -Fp параметр.
- Для версий, отличных от RDS для PostgreSQL 11, выполните следующую команду выгрузки:
- После миграции базы данных проверьте сервисы в целевой базе данных, чтобы убедиться, что сервисы работают правильно.
- Убедитесь, что сервисы работают правильно в целевых базах данных. Затем переключите сервисы на целевой инстанс и удалите исходный инстанс.