RDS для PostgreSQL позволяет повысить основную версию вашего экземпляра базы данных одним из следующих способов:
После того как предварительная проверка повышения основной версии пройдена, если какое-либо расширение, указанное в Таблице 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';ALTER EXTENSION extension_name UPDATE TO 'new_version';
Некоторые расширения (такие как postgis) могут вызвать сбой задачи обновления. В таком случае перед выполнением основного обновления удалите расширения.
в верхнем левом углу и выберите регион и проект.
в верхнем левом углу страницы и выберитеБаза данных > Сервис реляционных баз данных.
в верхнем левом углу и выберите регион и проект.
в верхнем левом углу страницы и выберитеБаза данных > Сервис реляционных баз данных.Во время основного обновления версии статистика оптимизатора автоматически не синхронизируется. После завершения обновления необходимо собрать статистику.
Если проверка или обновление завершаются ошибкой, вы можете проанализировать причины на основе отчета о проверке обновления или отчета об обновлении. Процедура следующая:
Файлpg_upgrade_internal.logявляется основным файлом журнала отчета о проверке обновления или отчета об обновлении. Если обновление завершилось ошибкой, проверьте наличие ошибок в этом файле. Распространенные ошибки приведены ниже:
Это означает, что есть расширения, которые несовместимы с целевой версией. Они перечислены вloadable_libraries.txt.
Это означает, что существуют таблицы, созданные с предложением WITH OIDS, и эти таблицы записаны вtables_with_oids.txt. Предложение WITH OIDS не поддерживается в RDS для 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: невозможно получить доступ к файлу "xxx": Нет такого файла или каталога.
Пример:
FATAL: невозможно получить доступ к файлу "pg_pathman": Нет такого файла или каталога.
pg_dump: error: запрос завершился ошибкой: ОШИБКА: недостаточно общей памятиПодсказка: Возможно, вам потребуется увеличить параметр max_locks_per_transaction.pg_dump: error: запрос был следующим: LOCK TABLE "xxx"."xxx" IN ACCESSSHARE MODE
pg_restore: error: невозможно выполнить запрос: ERROR: функция "xxx", описанная в файле xxx, не найденаКоманда была такой: CREATE FUNCTION "pgl_ddl_deploy"."xxx"