Сценарии
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 обнаруживается в пути обновления во время предварительной проверки крупного обновления версии, удалите расширение перед выполнением обновления и переустановите его после завершения обновления. Если вы выполните обновление, не удалив это расширение, обновление завершится неудачей, или расширение не может быть использовано после обновления экземпляра.
Исходная версия | Целевая версия | Расширение, которое может вызвать сбой обновления | Расширение, которое нельзя использовать после обновления экземпляра |
|---|---|---|---|
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) приведут к сбою задачи обновления. В этом случае удалите расширения перед выполнением обновления до основной версии.
Процедура
- Войдите в консоль управления.
- Нажмите
в верхнем левом углу и выберите регион и проект. - Нажмите Список сервисов. Под База данных, нажмите Relational Database Service.
- На Экземпляры странице, нажмите имя экземпляра.
- В навигационной панели выберите Обновление до основной версии.
- На отображаемой странице выберите целевую версию, нажмите Проверить сейчас, и подождите несколько минут.Note
- Если расширения установлены на экземпляре после успешной проверки обновления, обновление может завершиться неудачей из‑за проблем совместимости. Если это произойдёт, выполните проверку снова.
- Если проверка обновления не удалась, вы можете просмотреть отчет проверки нажав Просмотр отчёта на Проверки обновления вкладке и исправьте несовместимость на основе отчёта.
- После успешной проверки нажмите Далее. Выберите "I understand Precautions for the Upgrade." и нажмите Обновить сейчас.
- Укажите Переключение и Собрать статистику.Note
Во время крупного обновления версии оптимизаторные статистики не синхронятся автоматически. Статистику необходимо собрать после завершения обновления.
- Перед переключением: Обеспечена стабильность сервиса. Если ваш инстанс содержит большой объём данных, обновление может занять больше времени.
- После переключения: Обеспечено более быстрое обновление. После обновления доступ к таблицам, для которых не были сгенерированы статистики, может привести к неточным планам выполнения и даже к сбоям инстанса в часы пик.
Отчёты проверки обновления и отчёты обновления
Если проверка обновления или само обновление завершаются неудачей, вы можете проанализировать причины на основе отчёта проверки обновления или отчёта об обновлении. Процедура выглядит следующим образом:
- Просмотрите 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 для причин.
- Список проблемных библиотек находится в файле: loadable_libraries.txt
- Анализируйте причины на основе элементов отчёта.
- 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 memoryHINT: 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 xxxCommand was: CREATE FUNCTION "pgl_ddl_deploy"."xxx"
- Проверьте последние несколько строк pg_upgrade_dump_xxxx.log. Если отображается ошибка, аналогичная следующей, в текущем экземпляре слишком много таблиц. В этом случае увеличьте значение max_locks_per_transaction и выполните обновление снова.
- loadable_libraries.txt