Сообщения об ошибках в Managed Service for PostgreSQL
-
Почему при использовании расширения TimescaleDB возникает ошибка?
-
Что делать, если при получении SSL-сертификата через PowerShell возникает ошибка проверки отзыва?
-
Что делать, если при подключении я получаю ошибку
SSL is required? -
Что делать, если при подключении я получаю ошибку
too many active clients for user? -
Почему при подключении к пользовательской базе данных возникает ошибка?
-
Почему при создании дампа с помощью pg_dumpall возникает ошибка?
-
Почему при подключении к базе данных postgres возникает ошибка?
-
Почему соединение завершается ошибкой
terminating connection due to administrator command? -
Почему при изменении кластера возникает ошибка, связанная с
max_connectionsиconn_limit? -
Почему перенос данных через создание и восстановление логического дампа завершается ошибкой?
-
Почему при развертывании логического дампа возникает ошибка
must be owner of extension? -
Почему при создании расширения возникает ошибка
Must be superuser to create this extension? -
Почему возникает ошибка
cannot execute <SQL-команда> in a read-only transaction? -
Что делать, если в логах отображается ошибка
too many connections for role "monitor"? -
Почему при обновлении кластера PostgreSQL до версии
18возникает ошибкаcollation version mismatch?
Почему при использовании расширения TimescaleDB возникает ошибка?
Текст ошибки:
SQL Error [0A000]: ERROR: functionality not supported under the current "apache" license
Hint: Upgrade your license to 'timescale' to use this free community feature.
Эта ошибка возникает при попытке использовать функцию, доступную только в TimescaleDB Community Edition.
Community Edition распространяется по лицензии Timescale License (TSL)
В кластер Managed Service for PostgreSQL устанавливается TimescaleDB Apache 2 Edition — по сравнению с Community Edition ее функциональность ограничена.
Что делать, если при получении SSL-сертификата через PowerShell возникает ошибка проверки отзыва?
Полный текст ошибки:
curl: (35) schannel: next InitializeSecurityContext failed: Unknown error (0x80092012)
The revocation function was unable to check revocation for the certificate
Это означает, что при подключении к сайту не удалось проверить, есть ли его сертификат в списке отозванных.
Чтобы исправить ошибку:
-
убедитесь, что проверку не блокируют настройки корпоративной сети;
-
выполните команду с параметром
--ssl-no-revoke.mkdir $HOME\.postgresql; curl.exe --ssl-no-revoke -o $HOME\.postgresql\root.crt https://storage.yandexcloud.kz/cloud-certs/CA.pem
Что делать, если при подключении я получаю ошибку SSL is required?
Ошибка означает, что вы пытаетесь подключиться к кластеру с хостом в публичном доступе. Такие хосты поддерживают только соединения с SSL-сертификатом. Вы можете:
- Получить SSL-сертификат и добавить его в приложение, которое вы используете для подключения.
- Отключить публичный доступ для хостов и подключаться к кластеру с виртуальной машины, расположенной в той же облачной сети.
Что делать, если при подключении я получаю ошибку too many active clients for user?
Подключение к хостам кластера может завершиться ошибкой:
too many active clients for user (pool_size for user <имя_пользователя> reached <значение_лимита>)
По умолчанию кластер резервирует для каждого пользователя 50 подключений к каждому хосту. Если лимит подключений для пользователя будет исчерпан, то попытка открыть новое подключение завершится ошибкой.
Решение: увеличьте лимит подключений в настройке Conn limit.
О том, как изменить настройки PostgreSQL на уровне пользователя, читайте в документации.
Почему при подключении к пользовательской базе данных возникает ошибка?
Подключение к пользовательской базе данных может завершиться ошибкой:
ERROR: odyssey: ce3ea075f4ffa: route for '<имя_БД>.<имя_пользователя>' is not found
Ошибка означает, что в параметрах подключения указано неверное имя базы данных.
Почему при создании дампа с помощью pg_dumpall возникает ошибка?
При создании дампа с помощью утилиты pg_dumpall возникает ошибка:
ERROR: odyssey: c16b9035a1f78: route for 'template1.<имя_пользователя>' is not found
Ошибка возникает из-за того, что утилита pg_dumpall пытается выгрузить все базы данных: как пользовательские, так и системные.
Создать дамп одновременно всех баз данных Managed Service for PostgreSQL нельзя. Выгрузите дампы с помощью утилиты pg_dump для каждой пользовательской базы данных по одной, исключив системные.
Почему при подключении к базе данных postgres возникает ошибка?
Подключение к базе данных postgres завершается ошибкой:
ERROR: odyssey: c76e2c1283a7a: route for 'postgres.<имя_пользователя>' is not found
База данных postgres является системной, и подключение к ней в Managed Service for PostgreSQL запрещено. Укажите в параметрах подключения другую существующую базу данных.
Почему соединение завершается ошибкой terminating connection due to administrator command?
Соединение с кластером Managed Service for PostgreSQL может завершаться сообщением:
FATAL: terminating connection due to administrator command
Сообщение означает, что сервер принудительно завершил соединение. Одна из возможных причин — длительность активной сессии или транзакции превысила значение настройки Session duration timeout.
Проверьте значение настройки и сравните его со временем работы сессии или транзакции. Если соединение завершается после достижения заданного времени, увеличьте значение Session duration timeout с учетом возможного влияния долгих сессий на размер БД и производительность кластера.
Почему не удается подключиться к хостам кластера?
Подключение к хостам кластера может завершиться ошибкой:
could not translate host name "<обычный или специальный FQDN>" to address: Name or service not known
Ошибка возникает, если запрещен публичный доступ к хосту или пользователи используют кастомизированные DNS-серверы, которые не разрешают доменные имена в зоне mdb.yandexcloud.net.
Решение:
-
Включите публичный доступ для хоста, к которому выполняется подключение. При использовании специального FQDN включите публичный доступ для хоста, на который указывает специальный FQDN.
Совет
Чтобы уменьшить задержки и минимизировать потенциальные проблемы при смене мастера, рекомендуем самостоятельно определять мастер.
-
Рекомендуется включить публичный доступ для всех хостов кластера. Это позволит избежать ошибок подключения при автоматической смене хоста-мастера.
-
Для кастомизированных DNS-серверов настройте DNS-перенаправление для зоны
mdb.yandexcloud.net.
Почему возникает ошибка при остановке кластера?
Варианты ошибок:
ERROR: rpc error: code = FailedPrecondition desc = Cluster has no backups
cluster has no backups. If you want to stop the cluster, make a backup
Ошибка возникает из-за того, что остановить кластер Managed Service for PostgreSQL можно только при наличии хотя бы одной резервной копии кластера.
Решение: дождитесь создания автоматической резервной копии или создайте резервную копию вручную.
Почему при изменении кластера возникает ошибка, связанная с max_connections и conn_limit?
Изменение настроек подключений или уменьшение класса хостов может завершиться одной из ошибок:
max_connections is less than sum of users connection limit
max_connections conn_limit is too high
Ошибки возникают, если сумма значений настройки Conn limit для всех пользователей превышает значение настройки Max connections за вычетом 15 служебных подключений.
Перед изменением настроек или уменьшением класса хостов снизьте пользовательские лимиты, чтобы их сумма не превышала <значение_Max_connections> − 15. Если пользователям требуется больше подключений, увеличьте значение Max connections или выберите класс хостов с большим количеством vCPU.
Почему перенос данных через создание и восстановление логического дампа завершается ошибкой?
Восстановление логического дампа может завершаться одной из ошибок:
ERROR: role "<имя_пользователя_источника>" does not existERROR: must be member of role "<имя_пользователя_источника>"
Ошибки связаны с отсутствием в кластере-приемнике пользователя или привилегий пользователя, от имени которого был создан логический дамп в кластере-источнике.
Чтобы устранить ошибки:
- Добавьте пользователя в кластере-приемнике с доступом к базе данных для переноса и таким же именем, что и у пользователя, с помощью которого был создан логический дамп в кластере-источнике.
- Восстанавливайте логический дамп с помощью этого пользователя или выдайте его привилегии пользователю, с помощью которого вы восстанавливаете логический дамп.
Что делать, если при выполнении логической репликации возникает ошибка replication slot already exists?
По умолчанию при создании подписки создается и слот репликации. Ошибка replication slot already exists означает, что слот репликации уже существует.
Устранить ошибку можно одним из способов:
- Привяжите подписку к существующему слоту репликации. Для этого добавьте в запрос для создания подписки параметр
create_slot = false. - Удалите существующий слот репликации и попробуйте создать подписку еще раз.
Почему при миграции БД в Managed Service for PostgreSQL возникает ошибка extension... is not available?
Текст ошибки:
extension "<название_расширения>" is not available
Ошибка может возникнуть при миграции БД в Managed Service for PostgreSQL с помощью скрипта, который пытается установить и использовать расширение PostgreSQL. Причина ошибки в том, что в кластерах Managed Service for PostgreSQL нельзя управлять расширениями PostgreSQL с помощью команд SQL.
Чтобы избежать ошибки:
- Если скрипт или логический дамп имеют текстовый формат, удалите из них операторы для создания расширений PostgreSQL.
- Установите все необходимые расширения в базе-приемнике с помощью интерфейсов Yandex Cloud.
Почему при развертывании логического дампа возникает ошибка must be owner of extension?
Восстановление логического дампа может завершаться ошибкой ERROR: must be owner of extension.
Ошибка вызвана тем, что в логическом дампе присутствуют операции установки или обновления расширений PostgreSQL. В кластерах Managed Service for PostgreSQL нельзя управлять расширениями с помощью команд SQL.
Чтобы устранить ошибку:
- Перед восстановлением дампа включите в базе-приемнике все необходимые расширения.
- Исключите из дампа любые операции с расширениями. Например, можно закомментировать строки, связанные с установкой расширений.
- Выполните восстановление логического дампа повторно.
Почему при создании расширения возникает ошибка Must be superuser to create this extension?
Ошибка может возникнуть при попытке создать расширение с помощью SQL-команды или при восстановлении дампа, содержащего операции с расширениями. В Managed Service for PostgreSQL права суперпользователя не предоставляются, а управлять расширениями можно только с помощью интерфейсов Yandex Cloud.
Если ошибка возникла при восстановлении дампа:
-
Перед восстановлением установите в базе-приемнике все необходимые поддерживаемые расширения.
-
Исключите из дампа операции создания, изменения и комментирования расширений:
- Для дампа в формате архива получите список объектов с помощью утилиты pg_restore
с параметром--list, затем закомментируйте в нем строки, относящиеся к расширениям и комментариям к ним. При восстановлении передайте измененный список в параметре--use-list. - Для текстового дампа закомментируйте операторы
CREATE EXTENSION,ALTER EXTENSIONиCOMMENT ON EXTENSION.
- Для дампа в формате архива получите список объектов с помощью утилиты pg_restore
Если команда pg_restore запущена без параметра --exit-on-error, после ошибки она продолжит восстановление остальных объектов. Проверьте результат восстановления и наличие нужных расширений в базе-приемнике. Подробнее в руководстве Восстановите данные из дампа в кластер-приемник.
Почему при настройке каскадной репликации возникает ошибка?
Текст ошибки:
cluster should have at least 2 HA hosts to use cascade host
Ошибка возникает, если вы указываете источник репликации для единственной некаскадной реплики.
Для обеспечения высокой доступности в кластере должна быть хотя бы одна реплика без источника репликации. Во время технического обслуживания или при сбое хоста-мастера роль мастера переключится на эту реплику.
Подробнее о репликации читайте в соответствующем разделе.
Почему возникает ошибка cannot execute <SQL-команда> in a read-only transaction?
Варианты ошибок:
ERROR: cannot execute ALTER EXTENSION in a read-only transaction
ERROR: cannot execute CREATE TABLE in a read-only transaction
ERROR: cannot execute UPDATE in a read-only transaction
ERROR: cannot execute INSERT in a read-only transaction
Такие ошибки могут возникнуть, если произошло переключение роли мастера на другой хост и вы подключились к реплике, доступной только для чтения.
Избежать таких ошибок можно любым из способов:
-
Подключитесь к кластеру с помощью особого FQDN, который всегда указывает на текущий мастер.
Совет
Чтобы уменьшить задержки и минимизировать потенциальные проблемы при смене мастера, рекомендуем самостоятельно определять мастер.
-
При подключении укажите параметр
target_session_attrs=read-writeи перечислите все хосты кластера. Так вы подключитесь к хосту-мастеру с возможностью чтения и записи.
Подробнее о способах подключения к хосту-мастеру читайте в разделе Подключение к базе данных.
Что делать, если в логах отображается ошибка too many connections for role "monitor"?
Пользователь monitor зарезервирован для нужд мониторинга в кластере Managed Service for PostgreSQL. Сообщения об исчерпании лимита подключений для этого пользователя можно игнорировать.
Почему установка расширений в CLI заканчивается ошибкой?
Установка расширений в CLI может завершиться одной из ошибок:
-
ERROR: accepts 1 arg(s), received 2Ошибка может возникать из-за неправильного формата команды.
Решение: проверьте, что все расширения перечислены без пробела, например:
yc managed-postgresql database update db1 --cluster-id cat0adul1fj0******** --extensions cube,pg_logic,timescaledb -
ERROR: rpc error: code = InvalidArgument desc = Invalid extensions '<имя_расширения>', allowed extension: <список_расширений>Ошибка может возникать при несовместимости одного из расширений в списке с версией PostgreSQL в кластере.
Решение: проверьте совместимость указанных в команде расширений в списке поддерживаемых расширений.
-
ERROR: rpc error: code = InvalidArgument desc = The specified extension '<имя_расширения>' is not present in shared_preload_librariesОшибка может возникать при отсутствии необходимой библиотеки общего пользования в кластере.
Решение: проверьте требования к библиотекам общего пользования в списке поддерживаемых расширений. Чтобы подключить нужную библиотеку, при изменении настроек кластера PostgreSQL укажите ее имя в параметре Shared preload libraries.
Почему возникает ошибка could not open extension control file "<путь_к_расширению>/vector.control": No such file or directory при обращении к расширению vector?
Ошибка возникает из-за того, что в Managed Service for PostgreSQL расширение vector называется pgvector.
Решение: при обращении к расширению используйте pgvector вместо vector.
Почему при обновлении кластера PostgreSQL до версии 18 возникает ошибка collation version mismatch?
Текст ошибки:
database "<название_БД>" has a collation version mismatch
Ошибка возникает из-за того, что в PostgreSQL 18 изменились правила сортировки (collation), а база данных использует старые правила.
Решение: от имени владельца БД для каждой базы выполните команду:
ALTER DATABASE <название_БД> REFRESH COLLATION VERSION;
Если в вашей БД есть индексы, которые зависят от упорядочивания (например, B-Tree индексы), то после выполнения команды перестройте их. Так они будут учитывать новые правила сортировки:
REINDEX DATABASE <название_БД>;