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

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

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

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

    Для подробностей, смотрите 5.

    Note

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

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

    select extname from pg_extension;

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

    Для получения деталей о расширениях, поддерживаемых различными версиями RDS for PostgreSQL, см Поддерживаемые расширения.

  6. Создайте шаблон параметров, совместимый с исходной версией, обратившись к Создание шаблона параметров.
  7. Создайте экземпляр RDS for PostgreSQL, работающий на целевой версии.
    • Для получения деталей см Покупка экземпляра RDS for PostgreSQL.
    • Регион, AZ, VPC, подсеть и группа безопасности целевого экземпляра совпадают с теми же у исходного экземпляра.
  8. На подготовленном ECS в 2, используйте psql для подключения к целевому экземпляру, обратившись к Подключение к экземпляру БД из 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 to 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 параметр, блобы не будут экспортированы.
    • Если команда pg_dump использует -Fc параметр, экспортированный файл в двоичном формате. Чтобы экспортировать файлы SQL, используйте -Fp параметр.

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