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

Обновление основной версии экземпляра DB в консоли

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

Сценарии

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

  • Обновление без переключения: его можно использовать для проверки совместимости сервиса новой версии. Обновление основной версии может вызвать проблемы совместимости сервиса. Настоятельно рекомендуется провести тест совместимости. После успешного прохождения теста выполните обновление в режиме переключения. Обновление без переключения сервиса не повлияет на оригинальный экземпляр.
  • Обновление с переключением: во время обновления оригинальный экземпляр переводится в режим только для чтения, и сервисы прерываются на несколько минут. После завершения обновления оригинальный и новый экземпляры автоматически меняют свои виртуальные 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 11.
  • Из‑за ограничений OS некоторые экземпляры не поддерживают обновления основных версий. Чтобы узнать, до каких версий можно обновить ваш экземпляр, см. список доступных версий на Major Version Upgrade page.
  • экземпляры DR не поддерживают обновления основных версий.
  • Перед обновлением основной версии выполните проверку обновления. Если в течение периода действия нет успешной проверки обновления, обновление основной версии не допускается.

Extensions Unsupported for Major Version Upgrades

Если какое‑либо расширение, перечисленное в Table 1 обнаруживается в пути обновления во время предварительной проверки крупного обновления версии, удалите расширение перед выполнением обновления и переустановите его после завершения обновления. Если вы выполните обновление, не удалив это расширение, обновление завершится неудачей, или расширение не может быть использовано после обновления экземпляра.

Таблица 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

13

14

-

anon, pgaudit, pg_stat_kcache

15

-

anon, pgaudit, pg_stat_kcache

16

pgl_ddl_deploy

anon, pgaudit, pg_stat_kcache

14

15

-

pgaudit, pg_stat_kcache

16

pgl_ddl_deploy

pgaudit, pg_stat_kcache

15

16

pgl_ddl_deploy

pgaudit

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

  • Чтобы обновить экземпляр DB до RDS for PostgreSQL 15 или 16, убедитесь, что он использует образ HCE. В противном случае целевая версия недоступна на странице обновления основной версии.
  • RDS for PostgreSQL 10 и 11 отключены. Функции, такие как резервное копирование и восстановление данных, изменение классов экземпляров, уменьшение Объема хранения, создание Read-реплик и изменение типа экземпляра с одиночного узла на primary/standby для существующих экземпляров DB этих двух версий более недоступны. Рекомендуется как можно быстрее выполнить обновление основных версий таких существующих экземпляров.
  • Если обновление основной версии завершено и приложение переключено на новый экземпляр, но нагрузки несовместимы с новой версией, вам необходимо откатить обновление. Обратитесь в службу поддержки, чтобы снять статус read-only с оригинального экземпляра. Затем вы сможете продолжать использовать оригинальный экземпляр.
    Notice

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

  • После завершения обновления основной версии создаётся новый экземпляр DB. Оригинальный экземпляр DB сохраняется и продолжает оплачиваться. Вы можете освободить оригинальный экземпляр, когда нагрузки на новом экземпляре работают стабильно.
  • После обновления до основной версии журнал аудита, журнал ошибок и журнал медленных запросов оригинального экземпляра всё ещё хранятся в оригинальном экземпляре. Вы можете просматривать только журналы, созданные после обновления, на новом экземпляре.
  • Read-реплики не поддерживают обновление до основной версии. Если у вашего DB‑экземпляра есть Read-реплика, Read-реплика не будет обновлена синхронно. Вам потребуется создать её заново после обновления до основной версии. Для подробностей см. Создание Read-реплики.
  • Обновление до основной версии имеет следующие последствия:
    • Если вы обновляете свой экземпляр с переключением сервисов, экземпляр будет установлен в режим только для чтения во время обновления, и сервисы будут прерваны на несколько минут. Выполняйте обновление в непиковые часы. Если вы обновляете свой экземпляр без переключения сервисов, на ваши сервисы воздействия не будет.
      Notice

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

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

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

Процедура

  1. Войдите в консоль управления.
  2. Нажмите в верхнем левом углу и выберите регион и проект.
  3. Нажмите Список сервисов. Под База данных, нажмите Relational Database Service.
  4. На Экземпляры странице, нажмите имя экземпляра.
  5. В навигационной панели выберите Обновление до основной версии.
  6. На отображаемой странице выберите целевую версию, нажмите Проверить сейчас, и подождите несколько минут.

    Note
    • Если расширения установлены на экземпляре после успешной проверки обновления, обновление может завершиться неудачей из‑за проблем совместимости. Если это произойдёт, выполните проверку снова.
    • Если проверка обновления не удалась, вы можете просмотреть отчет проверки нажав Просмотр отчёта на Проверки обновления вкладке и исправьте несовместимость на основе отчёта.

  7. После успешной проверки нажмите Далее. Выберите "I understand Precautions for the Upgrade." и нажмите Обновить сейчас.
  8. Укажите Переключение и Собрать статистику.

    Note

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

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

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

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

  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 для PostgreSQL 12 и более поздних версий.

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

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

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

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

  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 по требованию, а затем выполните обновление.

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

      Пример:

      FATLA: could not access file "pg_pathman": No such file or directory.
    • pg_upgrade_dump_xxxx.log
      • Проверьте последние несколько строк pg_upgrade_dump_xxxx.log. Если отображается ошибка, аналогичная следующей, в текущем экземпляре слишком много таблиц. В этом случае увеличьте значение 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 расширение присутствует в текущем экземпляре. Это расширение несовместимо с целевой версией, поэтому обновление не удалось. Проверьте, есть ли другие несовместимые сторонние расширения в экземпляре, основываясь на 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"