RDS for PostgreSQL позволяет обновлять основную версию вашего instance одним из следующих методов:
После того как major version upgrade pre-check пройден, если в пути обновления обнаружено любое расширение, перечисленное в 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 |
Данные, добавленные после завершения обновления, не будут автоматически синхронизированы с оригинальным инстансом.
Для инстансов, содержащих большое количество объектов уровня таблиц (например, более 100 000 таблиц, представлений и функций), использование системных ресурсов (особенно CPU и I/O) будет испытывать значительные периодические всплески. Такое потребление ресурсов в основном происходит на этапе предварительной проверки, когда на первичном узле вызывается инструмент pg_upgrade для сравнения метаданных до и после обновления.
Обновление instance с переключением нагрузки переведёт исходный instance в режим только для чтения и может прервать вашу нагрузку на несколько минут. Планируйте это обновление в часы низкой нагрузки. Обновление instance без переключения нагрузки не оказывает влияния на ваше приложение. Параметр default_transaction_read_only управляет настройками только для чтения. Перед обновлением проверьте, были ли внесены изменения в этот параметр. Если да, данные, вставленные в instance во время переключения, будут потеряны после обновления.
ALTER EXTENSION extension_name UPDATE TO 'new_version';
При выполнении обновления основной версии instance некоторые установленные расширения могут привести к сбою обновления. Удалите эти расширения перед обновлением.
Обратите внимание, что расширение postgis не поддерживает обновление основной версии.
в левом верхнем углу и выберите region и project.
в левом верхнем углу страницы и выберите Database > Relational Database Service.
в левом верхнем углу и выберите регион и проект.
в левом верхнем углу страницы и выберите Database > Relational Database Service.Во время обновления до основной версии статистика оптимизатора не синхронизируется автоматически. Статистику необходимо собрать после завершения обновления.
Если проверка обновления или само обновление завершаются с ошибкой, вы можете проанализировать причины на основе отчёта проверки обновления или отчёта об обновлении. Процедура выглядит следующим образом:
Файл pg_upgrade_internal.log является основным файлом журнала отчёта проверки обновления или отчёта обновления. Если обновление завершилось неудачей, проверьте наличие ошибок в этом файле. Распространённые ошибки перечислены ниже:
Это означает, что существуют расширения, несовместимые с целевой версией. Они перечислены в loadable_libraries.txt.
Это означает, что существуют таблицы, созданные с клаузулой WITH OIDS, и такие таблицы записаны в tables_with_oids.txt. Клаузула WITH OIDS не поддерживается в RDS for PostgreSQL 12 и более новых версиях.
Это означает, что целевая версия не смогла запуститься во время проверки обновления, и вы можете проверить pg_upgrade_server.log для выяснения причин.
Это означает, что pg_dump не удалось выполнить резервное копирование данных во время обновления, и вы можете проверить pg_upgrade_dump_xxxx.log для выяснения причин.
Пользователи, имена которых начинаются с pg_, не допускаются в целевой версии. Сначала удалите или переименуйте этих пользователей.
Ваша база данных содержит тип параметра функции anyarray или anyelement, который несовместим с целевой версией. Удалите определения функций до обновления. После завершения обновления восстановите функции и измените тип параметра (с anyarray на anycompatiblearray или с anyelement на anycompatible). Объекты функций записаны в файле incompatible_polymorphics.txt.
Этот элемент отображает несовместимые библиотеки, которые обычно соответствуют несовместимым расширениям. Проверьте расширения, перечисленные в loadable_libraries.txt, и определите, следует ли их удалить. Удалите их перед обновлением, если уверены, что удаление не повлияет на рабочие нагрузки.
Этот элемент отображает таблицы, созданные с клаузулой WITH OIDS. Проверьте таблицы, перечисленные в tables_with_oids.txt, и оцените, зависит ли код рабочей нагрузки от OID‑ов. Если удаление OID‑ов из таблиц не влияет на рабочие нагрузки, выполните следующее SQL‑выражение:
ALTER TABLE {table_name} SET WITHOUT OIDS;
Проверьте последние несколько строк файла 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_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_restore: error: could not execute query: ERROR: could not find function "xxx" in file xxxCommand was: CREATE FUNCTION "pgl_ddl_deploy"."xxx"