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

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

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

  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 для подключения к target instance и выполните следующую SQL‑инструкцию, чтобы проверить, существуют ли все базы данных, полученные в 1, на target instance:

    postgres=# \l

    • Если да, перейдите к 3.
    • Если нет, выполните следующую SQL‑инструкцию для создания баз данных, которые отсутствуют в target instance, и перейдите к 3.

      postgres=# create database my_target_db;

      Note
      • Шаблонные базы данных template0 и template1 мигрировать не требуется.
      • База данных postgres создаётся по умолчанию и мигрировать её не требуется, если только она не хранит служебные данные.

  3. Используйте pg_dump для выгрузки source instance и используйте pg_restore для восстановления данных в target instance. Повторите 3 до 4 для каждой service database.

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

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