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

Обновление основной версии экземпляра БД с помощью команд SQL

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

Сценарии

Вы можете обновить основную версию 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.

Подготовка

  1. Просмотрите информацию о экземпляре БД RDS for PostgreSQL, который будет обновлен.
    1. На Экземпляры странице, нажмите экземпляр базы данных, который будет обновлен.
    2. На Основная информация странице, просмотрите регион, AZ, VPC, подсеть и группу безопасности экземпляра базы данных.
  2. Подготовьте ECS.

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

    Регион, AZ, VPC, подсеть и группа безопасности ECS такие же, как у экземпляра RDS for PostgreSQL DB, который будет обновлен.

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

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

  4. Подключитесь к исходному экземпляру, ссылаясь на Подключение к экземпляру БД из Linux ECS и выполните следующую SQL‑инструкцию в каждой базе данных, чтобы получить список используемых расширений:

    select extname from pg_extension;

  5. Выберите целевую версию, содержащую все расширения, исходя из списка используемых расширений.

    Подробную информацию о поддерживаемых расширениях в разных версиях RDS for PostgreSQL см. Поддерживаемые расширения.

  6. Создайте шаблон параметров, совместимый с исходной версией, ссылаясь на Создание шаблона параметров.
  7. Создать экземпляр RDS для PostgreSQL, работающий на целевой версии.
    • Регион, AZ, VPC, подсеть и группа безопасности целевого экземпляра совпадают с аналогичными параметрами исходного экземпляра.
  8. На подготовленном ECS в 2, используйте psql для подключения к целевому экземпляру, обратившись к Подключение к экземпляру DB из Linux ECS и проверьте, что соединение успешно.

Процедура

Выполните следующие операции на подготовленном 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 для 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 параметр.

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