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

Обновление основной версии DB Instance в Console

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

Сценарии

RDS for PostgreSQL позволяет обновлять основную версию вашего instance одним из следующих методов:

  • Upgrade without cutover: Не влияет на рабочие нагрузки. Во время обновления создаётся новый instance с использованием snapshot, и над оригинальным instance операции не выполняются. Основная версия нового instance обновляется. После завершения обновления вы можете подключиться к новому instance для проверки совместимости рабочей нагрузки. Обновление основной версии может вызвать проблемы совместимости, поэтому настоятельно рекомендуется провести тестирование совместимости. После успешного теста выполните обновление с cutover.
  • Upgrade with cutover: В ходе этого процесса создаётся новый instance с использованием snapshot, оригинальный instance переводится в режим только для чтения, и рабочие нагрузки прерываются на несколько минут. После обновления основной версии нового instance виртуальный IP‑адрес (VIP) оригинального instance автоматически переключается на новый instance, и ваше приложение автоматически подключается к новому instance. Обновление завершено. После обновления оригинальный instance остаётся в режиме только для чтения и не выйдет из этого состояния автоматически.

Ограничения

  • Обновление основной версии поддерживается для следующих исходных instance:
    • RDS for PostgreSQL 9.5: 9.5.25 или новее
    • RDS for PostgreSQL 9.6: 9.6.24 или новее
    • RDS for PostgreSQL 10: 10.21 или новее
    • RDS for PostgreSQL 12: 12.7 или новее
    • RDS for PostgreSQL 13: 13.3 или новее
    • RDS for PostgreSQL 14: 14.4 или новее
    • RDS for PostgreSQL 15: 15.4 или новее
    • RDS for PostgreSQL 16 и RDS for PostgreSQL 17 без ограничений по минорным версиям
  • Из‑за ограничений ОС некоторые DB instances не поддерживают обновление до основной версии. Обратитесь к консоли для получения поддерживаемых вариантов.
  • Перед обновлением до основной версии выполните проверку обновления. Если в течение периода действия нет успешной проверки обновления, обновление до основной версии не допускается.

Расширения, не поддерживаемые при обновлении до основной версии

После того как major version upgrade pre-check пройден, если в пути обновления обнаружено любое расширение, перечисленное в Table 1, удалите расширение перед выполнением обновления и переустановите его после завершения обновления. Если выполнить обновление без удаления этого расширения, обновление завершится с ошибкой, либо расширение не будет доступно после обновления инстанса.

Table 1 Расширения, не поддерживаемые при обновлении до основной версии

Исходная версия

Целевая версия

Расширение, которое необходимо удалить перед обновлением, чтобы предотвратить сбои обновления

Расширение, которое нельзя использовать после обновления инстанса

12

13

orafce, postgis_sfcgal

address_standardizer_data_us, pgaudit

14

orafce, postgis_sfcgal

anon, pgaudit

15

orafce, postgis_sfcgal

anon, pgaudit

16

orafce, postgis_sfcgal, pgl_ddl_deploy

anon, pgaudit

17

orafce, pgl_ddl_deploy, postgis, postgis_raster, postgis_topology, postgis_tiger_geocoder, postgis_sfcgal

anon, pgaudit

13

14

-

anon, pgaudit, pg_stat_kcache

15

-

anon, pgaudit, pg_stat_kcache

16

pgl_ddl_deploy

anon, pgaudit, pg_stat_kcache

17

pgl_ddl_deploy, postgis, postgis_raster, postgis_topology, postgis_tiger_geocoder, postgis_sfcgal

anon, pgaudit, pg_stat_kcache, powa

14

15

-

pgaudit, pg_stat_kcache

16

pgl_ddl_deploy

pgaudit, pg_stat_kcache

17

pgl_ddl_deploy, postgis, postgis_raster, postgis_topology, postgis_tiger_geocoder, postgis_sfcgal

pgaudit, pg_stat_kcache, powa

15

16

pgl_ddl_deploy

pgaudit

17

pgl_ddl_deploy, postgis, postgis_raster, postgis_topology, postgis_tiger_geocoder, postgis_sfcgal

pgaudit, pg_stat_kcache, powa

16

17

postgis, postgis_raster, postgis_topology, postgis_tiger_geocoder, postgis_sfcgal

pgaudit, pg_stat_kcache, powa

Меры предосторожности при обновлении

  • RDS for PostgreSQL 10 и 11 выведены из эксплуатации. Такие функции, как резервное копирование и восстановление данных, изменение классов инстансов, уменьшение объёма хранилища, создание реплик чтения и изменение типа инстанса с однопользовательского на primary/standby для существующих DB‑инстансов этих двух версий более недоступны. Рекомендуется как можно скорее выполнить обновление основных версий таких существующих инстансов.
  • Если обновление до основной версии завершено и рабочая нагрузка переключена на новый инстанс, но несовместима с новой версией, необходимо откатить обновление. Обратитесь в службу поддержки, чтобы разблокировать оригинальный инстанс из состояния только для чтения. После этого вы сможете продолжить использовать оригинальный инстанс.
    Notice

    Данные, добавленные после завершения обновления, не будут автоматически синхронизированы с оригинальным инстансом.

  • Проверки обновления до основной версии потребляют определённые ресурсы. Выполняйте проверку в непиковые часы.

    Для инстансов, содержащих большое количество объектов уровня таблиц (например, более 100 000 таблиц, представлений и функций), использование системных ресурсов (особенно CPU и I/O) будет испытывать значительные периодические всплески. Такое потребление ресурсов в основном происходит на этапе предварительной проверки, когда на первичном узле вызывается инструмент pg_upgrade для сравнения метаданных до и после обновления.

  • После завершения обновления до основной версии создаётся новый инстанс. Оригинальный инстанс сохраняется и продолжает оплачиваться. Когда рабочая нагрузка стабильно работает, вы можете освободить оригинальный инстанс.
  • После обновления до основной версии аудиторские логи, логи ошибок и логи медленных запросов оригинального инстанса по‑прежнему хранятся в оригинальном инстансе. На новом инстансе вы можете просматривать только логи, сгенерированные после завершения обновления.
  • Реплики чтения не поддерживают обновление до основной версии. Если у вашего DB‑инстанса есть реплики чтения, они не будут обновлены вместе с вашим DB‑инстансом. После обновления до основной версии их необходимо воссоздать. Подробности см. в Creating a Read Replica.
  • Если у вашего DB instance есть DR instance, DR instance не будет обновлен синхронно, и связь DR будет прервана. После обновления до основной версии создайте DR instance, работающий на той же версии, что и новый instance, и настройте связь DR между ними.
  • Обновление основной версии имеет следующие последствия:

    Обновление instance с переключением нагрузки переведёт исходный instance в режим только для чтения и может прервать вашу нагрузку на несколько минут. Планируйте это обновление в часы низкой нагрузки. Обновление instance без переключения нагрузки не оказывает влияния на ваше приложение.

    Notice

    Параметр default_transaction_read_only управляет настройками только для чтения. Перед обновлением проверьте, были ли внесены изменения в этот параметр. Если да, данные, вставленные в instance во время переключения, будут потеряны после обновления.

  • После завершения обновления основной версии параметры новой версии имеют следующие изменения:
    • В шаблоне параметров новой версии новые параметры используют значения, определённые в выбранном шаблоне.
    • В шаблоне параметров новой версии существующие значения параметров должны оставаться согласованными с теми, что в оригинальной версии. Однако если значение выходит за пределы допустимого диапазона новой версии, вместо него используется значение, определённое в шаблоне параметров новой версии.
    • Параметры из оригинальной версии, которые не поддерживаются в шаблоне параметров новой версии, автоматически удаляются.
    • Специальные параметры: wal_keep_segments (для версий ранее RDS for PostgreSQL 13) и wal_keep_size (для RDS for PostgreSQL 13 и более новых) являются параметрами удержания WAL‑логов. После обновления instance с версии ранее 13 до версии 13 или более новой, wal_keep_size заменяет wal_keep_segments, и его значение автоматически конвертируется.
  • Обновление основной версии не обновит версии расширений. Подробную информацию о поддерживаемых версиях расширений см. в Supported Extensions. Если новый instance поддерживает какое‑либо расширение более новой версии, вы можете использовать следующую команду для обновления расширения, либо удалить и переустановить расширение последней версии.
    ALTER EXTENSION extension_name UPDATE TO 'new_version';
    Notice

    При выполнении обновления основной версии instance некоторые установленные расширения могут привести к сбою обновления. Удалите эти расширения перед обновлением.

    Обратите внимание, что расширение postgis не поддерживает обновление основной версии.

Upgrade Without Cutover

  1. Войдите в консоль управления.
  2. Нажмите в левом верхнем углу и выберите region и project.
  3. Нажмите в левом верхнем углу страницы и выберите Database > Relational Database Service.
  4. На странице Instances нажмите имя инстанса.
  5. В панели навигации выберите Major Version Upgrade.
  6. На отображаемой странице нажмите Upgrade Major Version. В отображаемом диалоговом окне выберите целевую версию и нажмите Next.
  7. На странице предварительной проверки нажмите Check Now. Проверка занимает несколько минут.

    Note
    • Если после успешной проверки обновления добавить расширения, они могут вызвать проблемы совместимости и привести к сбою обновления. В этом случае выполните проверку повторно. Подробности см. в Extensions Unsupported for Major Version Upgrades.
    • Если проверка обновления завершилась неудачей, вы можете view the check report, нажав View Report на вкладке Upgrade Checks и устранить несовместимость на основе отчёта.

  8. После успешного прохождения проверки нажмите Next.
  9. On the page, choose a parameter template, select No for Cutover, click Autofill to enter UPGRADE, and click Upgrade Now.
  10. Confirm the upgrade information and click Submit.
  11. После завершения обновления проверьте наличие нового instance целевой версии. Вы можете подключиться к новому instance, чтобы проверить совместимость нагрузки.

Обновление с Cutover

  1. Войдите в консоль управления.
  2. Click в левом верхнем углу и выберите регион и проект.
  3. Нажмите в левом верхнем углу страницы и выберите Database > Relational Database Service.
  4. На странице Instances нажмите имя инстанса.
  5. В панели навигации выберите Major Version Upgrade.
  6. На отображаемой странице нажмите Upgrade Major Version. В отображаемом диалоговом окне выберите целевую версию и нажмите Next.
  7. На странице предварительной проверки нажмите Check Now. Проверка занимает несколько минут.

    Note
    • Если после успешной проверки обновления вы добавляете расширения, они могут вызвать проблемы совместимости и привести к сбою обновления. В этом случае выполните проверку повторно. Подробности см. в Extensions Unsupported for Major Version Upgrades.
    • Если проверка обновления не прошла, вы можете view the check report, нажав View Report на вкладке Upgrade Checks и устранить несовместимость на основе отчёта.

  8. После успешного прохождения проверки нажмите Next.
  9. On the page, choose a parameter template, select Yes for Cutover, specify Collect Statistics, click Autofill to enter UPGRADE, and click Upgrade Now.

    Во время обновления до основной версии статистика оптимизатора не синхронизируется автоматически. Статистику необходимо собрать после завершения обновления.

    • Before cutover: Workload stability is ensured. If your instance has too much data, the upgrade may take a longer time.
    • After cutover: Faster upgrade is ensured. After the upgrade, accessing tables for which no statistics have been generated may cause inaccurate execution plans and even cause the DB instance to be unavailable during peak hours.

  10. Confirm the upgrade information and click Submit.
  11. После завершения обновления проверьте наличие нового инстанса целевой версии. Ваша нагрузка автоматически переключается на новый инстанс.

Отчёты проверки обновления и отчёты об обновлении

Если проверка обновления или само обновление завершаются с ошибкой, вы можете проанализировать причины на основе отчёта проверки обновления или отчёта об обновлении. Процедура выглядит следующим образом:

  1. Просмотрите файл pg_upgrade_internal.log.

    Файл pg_upgrade_internal.log является основным файлом журнала отчёта проверки обновления или отчёта обновления. Если обновление завершилось неудачей, проверьте наличие ошибок в этом файле. Распространённые ошибки перечислены ниже:

    • Список проблемных библиотек находится в файле: loadable_libraries.txt

      Это означает, что существуют расширения, несовместимые с целевой версией. Они перечислены в loadable_libraries.txt.

    • Список таблиц с проблемой находится в файле: tables_with_oids.txt

      Это означает, что существуют таблицы, созданные с клаузулой WITH OIDS, и такие таблицы записаны в tables_with_oids.txt. Клаузула WITH OIDS не поддерживается в RDS for PostgreSQL 12 и более новых версиях.

    • Обратитесь к последним нескольким строкам файла "pg_upgrade_server.log" для определения вероятной причины сбоя.

      Это означает, что целевая версия не смогла запуститься во время проверки обновления, и вы можете проверить pg_upgrade_server.log для выяснения причин.

    • Обратитесь к последним нескольким строкам файла "pg_upgrade_dump_xxxx.log" для определения вероятной причины сбоя.

      Это означает, что pg_dump не удалось выполнить резервное копирование данных во время обновления, и вы можете проверить pg_upgrade_dump_xxxx.log для выяснения причин.

    • Исходный кластер содержит роли, начинающиеся с "pg_"

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

    • Список проблемных объектов находится в файле: incompatible_polymorphics.txt

      Ваша база данных содержит тип параметра функции anyarray или anyelement, который несовместим с целевой версией. Удалите определения функций до обновления. После завершения обновления восстановите функции и измените тип параметра (с anyarray на anycompatiblearray или с anyelement на anycompatible). Объекты функций записаны в файле incompatible_polymorphics.txt.

  2. Проанализируйте причины на основе элементов отчёта.
    • loadable_libraries.txt

      Этот элемент отображает несовместимые библиотеки, которые обычно соответствуют несовместимым расширениям. Проверьте расширения, перечисленные в loadable_libraries.txt, и определите, следует ли их удалить. Удалите их перед обновлением, если уверены, что удаление не повлияет на рабочие нагрузки.

    • tables_with_oids.txt

      Этот элемент отображает таблицы, созданные с клаузулой WITH OIDS. Проверьте таблицы, перечисленные в tables_with_oids.txt, и оцените, зависит ли код рабочей нагрузки от OID‑ов. Если удаление OID‑ов из таблиц не влияет на рабочие нагрузки, выполните следующее SQL‑выражение:

      ALTER TABLE {table_name} SET WITHOUT OIDS;
    • pg_upgrade_server.log

      Проверьте последние несколько строк файла pg_upgrade_server.log. Если появляется ошибка, аналогичная приведённой ниже, расширение, указанное в этой ошибке, отсутствует в целевой версии. Удалите его из shared_preload_libraries при необходимости, а затем выполните обновление.

      FATAL: could not access file "xxx": No such file or directory.

      Пример:

      FATAL: could not access file "pg_pathman": No such file or directory.
    • pg_upgrade_dump_xxxx.log
      • Проверьте последние несколько строк pg_upgrade_dump_xxxx.log. Если отображается ошибка, аналогичная приведённой ниже, в текущем instance слишком много таблиц. В этом случае увеличьте значение max_locks_per_transaction и выполните обновление повторно.
        pg_dump: error: query failed: ERROR: out of shared memory
        HINT: You might need to increase max_locks_per_transaction.
        pg_dump:error: query was: LOCK TABLE "xxx"."xxx" IN ACCESSSHARE MODE
      • Check the last several lines of pg_upgrade_dump_xxxx.log. If an error similar to the following is displayed, the pgl_ddl_deploy extension exists in the current instance. This extension is incompatible with the target version, so the upgrade failed. Check whether there are any other incompatible third-party extensions in the instance based on Extensions Unsupported for Major Version Upgrades (some incompatible third-party extensions cannot be identified through an upgrade check). Delete them as required and then perform the upgrade.
        pg_restore: error: could not execute query: ERROR: could not find function "xxx" in file xxx
        Command was: CREATE FUNCTION "pgl_ddl_deploy"."xxx"