RDS for PostgreSQL позволяет обновлять основную версию вашего DB 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 |
Данные, добавленные после завершения обновления, не будут автоматически синхронизированы с исходным инстансом.
Обновление инстанса с переключением нагрузки сделает исходный инстанс только для чтения и может прервать вашу нагрузку на несколько минут. Планируйте это обновление в часы низкой нагрузки. Обновление инстанса без переключения нагрузки не влияет на вашу нагрузку. Параметр default_transaction_read_only управляет настройками только для чтения. Перед обновлением проверьте, были ли внесены изменения в этот параметр. Если да, данные, вставленные в инстанс во время переключения, будут потеряны после обновления.
ALTER EXTENSION extension_name UPDATE TO 'new_version';
Некоторые расширения (например, postgis) могут привести к сбою задачи обновления. В этом случае удалите расширения перед выполнением обновления до основной версии.
в левом верхнем углу и выберите регион и проект.
в левом верхнем углу страницы и выберите Database > Relational Database Service.
в левом верхнем углу и выберите регион и проект.
in the upper left corner of the page and choose Database > Relational Database Service.Во время обновления до основной версии статистика оптимизатора не синхронизируется автоматически. Статистику необходимо собрать после завершения обновления.
Если проверка обновления или само обновление завершается с ошибкой, вы можете проанализировать причины на основе отчёта проверки обновления или отчёта об обновлении. Процедура следующая:
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:
It means there are extensions that are incompatible with the target version. They are listed in 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"