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

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

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

Сценарии

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

  • Upgrade without cutover: Используйте его для тестирования совместимости нагрузки с новыми версиями. Обновление основной версии DB instance может вызвать проблемы совместимости. Поэтому выполните тщательное тестирование совместимости перед выполнением обновления с переключением. Обновление без переключения нагрузки не повлияет на исходный инстанс.
  • Upgrade with cutover: Во время такого обновления исходный инстанс переводится в режим только для чтения, и нагрузки могут быть прерваны на несколько минут. После завершения обновления исходный и новый инстансы автоматически меняют свои виртуальные IP-адреса, и соединение приложения будет переключено на новый инстанс. Внесение изменений в приложение не требуется. Исходный инстанс остаётся только для чтения и не будет автоматически разблокирован.

Ограничения

  • Обновления основной версии доступны для следующих версий:
    • 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 and RDS for PostgreSQL 17
  • Из-за ограничений ОС некоторые DB‑инстансы не поддерживают обновление до основной версии. Обратитесь к console для получения поддерживаемых вариантов.
  • Перед обновлением до основной версии выполните проверку обновления. Если в течение периода действия нет успешной проверки обновления, обновление до основной версии не допускается.

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

После того как 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

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

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

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

    Notice

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

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

    Некоторые расширения (например, postgis) могут привести к сбою задачи обновления. В этом случае удалите расширения перед выполнением обновления до основной версии.

Обновление без переключения

  1. Войдите в консоль управления.
  2. нажмите в левом верхнем углу и выберите регион и проект.
  3. Нажмите в левом верхнем углу страницы и выберите Database > Relational Database Service.
  4. На странице Instances нажмите имя инстанса.
  5. В панели навигации выберите Major Version Upgrade.
  6. На отображаемой странице нажмите Upgrade Major Version. В отображаемом диалоговом окне выберите целевую версию и нажмите Next.
  7. On the pre-check page, click Check Now. It takes several minutes to complete the check.

    Note
    • Если вы добавляете extensions после успешной проверки обновления, они могут вызвать проблемы совместимости и привести к сбою обновления. В этом случае выполните проверку повторно. Для получения подробной информации см. Extensions Unsupported for Major Version Upgrades.
    • If the upgrade check fails, you can view the check report by clicking View Report on the Upgrade Checks tab page and rectify the incompatibility based on the report.

  8. After the check is passed, click 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. После завершения обновления проверьте наличие нового инстанса целевой версии. Вы можете подключиться к новому инстансу для проверки совместимости нагрузки.

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

  1. Войдите в консоль управления.
  2. нажмите в левом верхнем углу и выберите регион и проект.
  3. Click in the upper left corner of the page and choose Database > Relational Database Service.
  4. On the Instances page, click the instance name.
  5. In the navigation pane, choose Major Version Upgrade.
  6. On the displayed page, click Upgrade Major Version. In the displayed dialog box, select a target version and click Next.
  7. On the pre-check page, click Check Now. It takes several minutes to complete the check.

    Note
    • Если вы добавляете расширения после успешной проверки обновления, они могут вызвать проблемы совместимости и привести к сбою обновления. Если это происходит, выполните проверку снова. Для получения подробной информации см. Extensions Unsupported for Major Version Upgrades.
    • If the upgrade check fails, you can view the check report by clicking View Report on the Upgrade Checks tab page and rectify the incompatibility based on the report.

  8. After the check is passed, click 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. После завершения обновления проверьте наличие нового instance целевой версии. Ваша нагрузка автоматически переключается на новый instance.

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

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

  1. View the pg_upgrade_internal.log file.

    The pg_upgrade_internal.log file is the main log file of an upgrade check report or upgrade report. If an upgrade fails, check for errors in this file. Common errors are as follows:

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

      It means there are extensions that are incompatible with the target version. They are listed in 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
      • Проверьте последние несколько строк pg_upgrade_dump_xxxx.log. Если отображается ошибка, аналогичная следующей, расширение pgl_ddl_deploy существует в текущем instance. Это расширение несовместимо с целевой версией, поэтому обновление завершилось с ошибкой. Проверьте, есть ли другие несовместимые сторонние расширения в instance, основываясь на Extensions Unsupported for Major Version Upgrades (некоторые несовместимые сторонние расширения нельзя определить с помощью проверки обновления). Удалите их при необходимости, а затем выполните обновление.
        pg_restore: error: could not execute query: ERROR: could not find function "xxx" in file xxx
        Command was: CREATE FUNCTION "pgl_ddl_deploy"."xxx"