Облачная платформаAdvanced

Обновление основной версии DB Instance с помощью SQL Commands

Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

Сценарии

Вы можете обновить основную версию RDS for PostgreSQL, чтобы получить больше функций, более высокую производительность и безопасность. Обновления основной версии могут вносить изменения, несовместимые с предыдущими версиями, и влиять на работу сервиса. Поэтому перед началом обновления необходимо протестировать сервисы на целевой версии.

В этом разделе source instance обозначает DB instance, работающий с исходной версией, а target instance — DB instance, работающий с целевой версией.

Описание версии 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.

Подготовка

  1. Просмотрите информацию о RDS for PostgreSQL DB instance, которую необходимо обновить.
    1. На странице Instances нажмите имя target instance, чтобы перейти на страницу Basic Information.
    2. На странице Basic Information просмотрите регион, AZ, VPC, подсеть и группу безопасности DB instance.
  2. Подготовьте ECS.

    Чтобы подключиться к DB instance через ECS, сначала необходимо создать ECS.

    Регион, AZ, VPC, подсеть и группа безопасности ECS совпадают с соответствующими параметрами RDS for PostgreSQL DB instance, которую необходимо обновить.

  3. Установите клиент PostgreSQL на ECS, созданный в 2.

    Для получения подробной информации см. 5.

    Note

    Версия клиента PostgreSQL должна совпадать с версией экземпляра RDS for PostgreSQL. База данных PostgreSQL или клиент предоставляют инструменты pg_dump, pg_restore и psql.

  4. Подключитесь к исходному экземпляру, обратившись к Connecting to a DB Instance from a Linux ECS over a Private Network, и выполните следующий SQL‑запрос в каждой базе данных для получения списка используемых расширений:
    select extname from pg_extension;
  5. Выберите целевую версию, содержащую все расширения из списка используемых расширений.

    Для получения подробной информации о расширениях, поддерживаемых различными версиями RDS for PostgreSQL, см. Supported Extensions.

  6. Создайте шаблон параметров, совместимый с исходной версией, обратившись к Creating a Parameter Template.
  7. Создайте экземпляр RDS for PostgreSQL с целевой версией.
    • Для получения подробной информации см. Buying an RDS for PostgreSQL Instance.
    • Регион, AZ, VPC, подсеть и группа безопасности целевого экземпляра совпадают с соответствующими параметрами исходного экземпляра.
  8. На подготовленном в 2 ECS используйте psql для подключения к целевому экземпляру, обратившись к Connecting to a DB Instance from a Linux ECS over a Private Network, и проверьте успешность соединения.

Процедура

Выполните следующие операции на подготовленном ECS.

  1. Используйте psql для подключения к исходному экземпляру и выполните следующий SQL‑запрос для получения списка баз данных:

    postgres=# \l

  2. Используйте psql для подключения к целевому экземпляру и выполните следующий SQL‑запрос, чтобы проверить, существуют ли все базы данных, полученные в 1, на целевом экземпляре:

    postgres=# \l
    • Если да, перейдите к 3.
    • Если нет, выполните следующую инструкцию SQL для создания баз данных, которых нет в целевом инстансе, и перейдите к 3.
      postgres=# create database my_target_db;
      Note
      • Шаблонные базы данных template0 и template1 мигрировать не требуется.
      • База данных postgres создаётся по умолчанию и мигрировать её не требуется, если только она не хранит данные сервиса.

  3. Используйте pg_dump для выгрузки исходного инстанса и используйте pg_restore для восстановления данных в целевом инстансе. Повторите 3 до 4 для каждой сервисной базы данных.

    • Для версий, отличных от RDS for 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, BLOB‑объекты не будут экспортированы.
    • Если команда pg_dump использует параметр -Fc, экспортируемый файл будет в бинарном формате. Для экспорта SQL‑файлов используйте параметр -Fp.

  4. После миграции базы данных протестируйте сервисы на целевой базе, чтобы убедиться, что они работают корректно.
  5. Убедитесь, что сервисы работают корректно на целевых базах данных. Затем переключите сервисы на целевой инстанс и удалите исходный инстанс.