[Документация Yandex Cloud](../../index.md) > [Yandex Managed Service for PostgreSQL](../index.md) > Вопросы и ответы > Все вопросы на одной странице

# Вопросы и ответы про Managed Service for PostgreSQL


{% note info %}

В [регионе Казахстан](../../overview/concepts/region.md) доступны только [платформы](../../compute/concepts/vm-platforms.md#standard-platforms) `standard-v3` (Intel Ice Lake) и `standard-v3-t4i` (Intel Ice Lake with T4i). Другие типы платформ, кластеры GPU и выделенные хосты недоступны.

{% endnote %}


### Общие вопросы {#toc-general}

* [Что такое Managed Service for PostgreSQL?](#what-is)

* [Какую часть работы по управлению и сопровождению баз данных берет на себя Managed Service for PostgreSQL?](#services)

* [Для каких задач стоит использовать Managed Service for PostgreSQL, а для каких — виртуальные машины с базами данных?](#mdb-advantage)

* [Что такое хост базы данных и кластер базы данных?](#what-is-cluster)

* [Как начать работу с Managed Service for PostgreSQL?](#quickstart)

* [Сколько хостов БД может содержать кластер?](#how-many-hosts)

* [Как получить доступ к запущенному хосту базы данных?](#db-access)

* [Сколько кластеров можно создать в рамках одного облака?](#db-limit)

* [Как происходит обслуживание кластеров БД?](#service-window)

* [Какую версию PostgreSQL использует Managed Service for PostgreSQL?](#dbms-version)


* [Что происходит, когда выпускается новая версия СУБД?](#new-version)

* [Что происходит, когда версия СУБД становится неподдерживаемой (deprecated)?](#dbms-deprecated)

* [Как рассчитывается стоимость потребления для хоста базы данных?](#db-cost)

* [Как изменить вычислительные ресурсы и объем хранилища для кластера БД?](#resources-change)

* [Можно ли настроить автоматическое увеличение размера хранилища кластера?](#storage-autoscale)

* [Включено ли резервное копирование хостов БД по умолчанию?](#default-backup)

* [Когда выполняется резервное копирование? Доступен ли кластер БД во время резервного копирования?](#backup-window)

* [Шифруется ли соединение с кластером БД PostgreSQL?](#encryption)

* [Что такое реплика для чтения в PostgreSQL?](#read-only-instance)

* [За какими метриками и процессами можно следить с помощью мониторинга?](#monitoring)

* [Я могу получить логи моей работы в сервисах?](#logs)

* [Какие ограничения накладываются на кластеры БД PostgreSQL?](#instance-limitations)

* [Какие расширения для PostgreSQL поддерживаются в Managed Service for PostgreSQL?](#pg-extension)

* [В каком дата-центре хранятся резервные копии кластера PostgreSQL?](#data-center)


* [Могу ли я получить права суперпользователя в PostgreSQL?](#superuser)

* [Могу ли я скопировать данные из таблицы Managed Service for PostgreSQL в локальный файл? А заполнить таблицу данными из локального файла?](#copy-write-data)

* [Есть ли какие-то особенности или ограничения работы сборщика мусора в кластере Managed Service for PostgreSQL?](#vacuum)

* [Почему кластер работает медленно, хотя вычислительные ресурсы использованы не до предела?](#throttling)

* [Какой размер блока используется на дисках кластера?](#block-size)

### Подключение {#toc-connection}

* [Возможен ли доступ к кластеру изнутри Yandex Cloud?](#conn-from-yc)

* [Можно ли подключиться к кластеру из Docker-контейнера?](#conn-from-docker)

* [Как получить SSL-сертификат для подключения к Managed Service for PostgreSQL на Windows?](#get-ssl)

* [Как установить SSL-сертификат для подключения Power BI к Managed Service for PostgreSQL через psql?](#power-bi)

* [Можно ли подключиться к хостам кластера по SSH?](#connect-ssh)

* [Сколько одновременных подключений к одному хосту доступно в Managed Service for PostgreSQL?](#host-conn)

* [Сколько подключений доступно одному пользователю?](#user-conn)

* [Почему при попытке подключиться к базе данных из Looker Studio возникает ошибка?](#google-looker)

* [Как всегда подключаться к хосту-мастеру?](#connect-to-master)

* [Как всегда подключаться к наименее отстающей от мастера реплике?](#connect-to-replica)

* [Как подключиться к базе данных `postgres`?](#postgres-db)

* [Как получить пароль пользователя `postgres`?](#postgres-user)

### Изменение кластера {#toc-update}

* [Почему кластер перешел в статус Updating во время внепланового создания резервной копии?](#updating-while-backup)

* [Можно ли одновременно создавать две базы данных в PostgreSQL?](#multi-db)

* [Как изменить количество подключений, доступное пользователю?](#user-conn-number)

* [Можно ли изменить класс существующего хоста (standard, memory-optimized, burstable)?](#host-class)

* [Можно ли изменить тип диска в существующем кластере?](#disk-type)

* [Можно ли управлять кластером с помощью команд SQL?](#sql-control)

* [Можно ли создать базу данных с помощью команд SQL?](#create-db-sql)

* [Как вывести кластер из режима read-only?](#read-only-exit)

### Настройки параметров кластера {#toc-configuration}

* [Параметр autovacuum по умолчанию включен для всех таблиц?](#autovacuum)

* [Какие значения LC_COLLATE и LC_CTYPE по умолчанию выставляются для баз данных?](#lc-default)

* [Можно ли изменить значения LC_COLLATE и LC_CTYPE?](#lc-edit)

* [Можно ли сменить владельца БД?](#db-owner)

### Перемещение и восстановление кластера {#toc-backup}

* [Можно ли восстановить резервную копию кластера в работающий экземпляр Managed Service for PostgreSQL в другой облачной сети?](#diff-network)

* [Можно ли изменить срок хранения автоматических резервных копий?](#backup-retain-days)

* [Нужен ли плагин wal2json, если выполняется только реплицирование, но не копирование данных?](#wal2json)

* [Можно ли локально выгрузить резервную копию базы данных?](#backup-local-dump)

* [Как перенести локальный дамп базы данных PostgreSQL в Yandex Cloud?](#dump-to-yc)

* [Как перенести БД или таблицу из одного кластера в другой?](#transfer-db-table)

* [Как перенести данные между кластерами в разных каталогах или облаках?](#transfer-data)

* [Как перенести кластер в другое облако?](#transfer-cluster)

* [Как восстановить резервную копию в существующий кластер?](#restore-existing-cluster)

* [Как вернуть состояние кластера до выбранной резервной копии?](#cluster-existing-backup)

* [Можно ли восстановить из резервной копии одну базу данных?](#restore-one-database)

### Обновление мажорной версии PostgreSQL {#toc-version-update}

* [Нужно ли выполнять `ANALYZE`, `REINDEX` и обновлять статистические данные (`pg_stat_user_tables`, `pg_statistic`) вручную после обновления мажорной версии PostgreSQL?](#version-update-manual)
* [Проверяет ли Managed Service for PostgreSQL, что версия collation изменилась после обновления мажорной версии PostgreSQL?](#version-update-collation)
* [Как получить доступ к логам и сгенерированным скриптам после обновления мажорной версии PostgreSQL?](#version-update-get-logs)
* [Может ли обновление мажорной версии завершиться ошибкой?](#version-update-error)

### Пользователи и роли {#toc-users}

* [Можно ли перенести пользователей из кластера-источника PostgreSQL в кластер-приемник Managed Service for PostgreSQL?](#user-migration)

* [Как создать роль с помощью SQL-запросов?](#create-role)

### Высокая доступность и балансировка {#toc-ha}

* [Как исключить хост из выбора мастером?](#excluded-host)

* [Почему при настройке каскадной репликации возникает ошибка?](#cascade-error)

* [Как всегда подключаться к хосту-мастеру?](#connect-to-master-ha)

* [Как всегда подключаться к наименее отстающей от мастера реплике?](#connect-to-replica-ha)

* [Почему мастер и реплики поменялись местами?](#failover)

* [Можно ли настроить мультимастер в кластере или между двумя кластерами?](#setting-multimaster)

* [Как настроить балансировку, чтобы запросы на чтение уходили на реплики?](#balancing-replicas)

* [В каких случаях может происходить автоматическое переключение мастера?](#auto-failover)

### Мониторинг и логи {#toc-monitoring}

* [Где я могу отслеживать использование дискового пространства, чтобы не превысить лимит в 95% для перехода в read-only?](#disk-space)

* [Логи хранятся на том же диске, что и данные PostgreSQL? Как они тарифицируются?](#logs-storage)

* [Как долго хранятся логи?](#log-keeping)

* [Что такое WAL и для чего они нужны?](#wal)

* [Что означает параметр Cached в мониторинге RAM хоста кластера PostgreSQL?](#cached)

* [Как получать алерты о критических показателях кластера PostgreSQL?](#notifications)

* [Как настроить алерт, который срабатывает при заполнении определенного процента дискового пространства?](#disk-space-percentage)

### Сообщения об ошибках {#toc-errors}

* [Почему при использовании расширения TimescaleDB возникает ошибка?](#timescale)

* [Что делать, если при получении SSL-сертификата через PowerShell возникает ошибка проверки отзыва?](#get-ssl-error)

* [Что делать, если при подключении я получаю ошибку `SSL is required`?](#ssl-req)

* [Что делать, если при подключении я получаю ошибку `too many active clients for user`?](#connection-limit-error)

* [Почему при подключении к пользовательской базе данных возникает ошибка?](#database-error)

* [Почему при создании дампа с помощью pg_dumpall возникает ошибка?](#dump-error)

* [Почему при подключении к базе данных postgres возникает ошибка?](#database-postgres-error)

* [Почему соединение завершается ошибкой `terminating connection due to administrator command`?](#connection-error)

* [Почему не удается подключиться к хостам кластера?](#host-error)

* [Почему возникает ошибка при остановке кластера?](#stop-cluster-error)

* [Почему при изменении кластера возникает ошибка `max_connections is less than sum of users connection limit`?](#max-connections-error)

* [Почему перенос данных через создание и восстановление логического дампа завершается ошибкой?](#backup-error)

* [Что делать, если при выполнении логической репликации возникает ошибка `replication slot already exists`?](#repl-slot-exists)

* [Почему при миграции БД в Managed Service for PostgreSQL возникает ошибка `extension... is not available`?](#extension-is-not-available)

* [Почему при развертывании логического дампа возникает ошибка `must be owner of extension`?](#owner-of-extension)

* [Почему при настройке каскадной репликации возникает ошибка?](#cascade-errors)

* [Почему возникает ошибка `cannot execute <SQL-команда> in a read-only transaction`?](#read-only-error)

* [Что делать, если в логах отображается ошибка `too many connections for role "monitor"`?](#monitor-role-error)

* [Почему установка нескольких расширений в CLI заканчивается ошибкой?](#cli-extensions-errors)

* [Почему возникает ошибка `could not open extension control file "<путь_к_расширению>/vector.control": No such file or directory` при обращении к расширению `vector`?](#vector-error)

## Общие вопросы {#general}

#### Что такое Managed Service for PostgreSQL? {#what-is}

Managed Service for PostgreSQL — это сервис, который помогает вам создавать, эксплуатировать и масштабировать базы данных PostgreSQL в облачной инфраструктуре.

С Managed Service for PostgreSQL вы можете:
* создавать базы данных с необходимыми параметрами производительности;
* масштабировать вычислительные мощности и выделенный объем хранилища для баз данных по мере необходимости;
* получать журналы работы баз данных.

Managed Service for PostgreSQL берет на себя трудоемкие задачи администрирования инфраструктуры PostgreSQL:
* предоставляет мониторинг потребляемых ресурсов;
* автоматически создает резервные копии баз данных;
* обеспечивает отказоустойчивость за счет автоматического переключения на резервные реплики;
* своевременно обновляет программное обеспечение СУБД.

Вы взаимодействуете с кластером БД в Managed Service for PostgreSQL как с обычной базой данных в вашей локальной инфраструктуре. Благодаря этому вы можете управлять внутренними настройками БД в соответствии с требованиями вашего приложения.

#### Какую часть работы по управлению и сопровождению баз данных берет на себя Managed Service for PostgreSQL? {#services}

При создании кластеров Managed Service for PostgreSQL выделяет ресурсы, устанавливает СУБД и создает базы данных.

Для созданных и запущенных баз данных Managed Service for PostgreSQL автоматически создает резервные копии, а также устанавливает исправления и обновления СУБД.

Также Managed Service for PostgreSQL обеспечивает репликацию данных между хостами БД (как внутри, так и между [зонами доступности](../../overview/concepts/geo-scope.md)) и автоматически переключает нагрузку на резервную реплику в случае аварии.

При работе необходимо учитывать, что контролирует сервис, а что — клиент Yandex Cloud. Понимание этих зон контроля помогает эффективно использовать облачные ресурсы и избегать возможных проблем при работе с базами данных. Подробнее в разделе [Разграничение зон контроля пользователей сервисов управляемых баз данных (MDB) и Yandex Cloud](../../overview/concepts/mdb-responsibilities.md).

#### Для каких задач стоит использовать Managed Service for PostgreSQL, а для каких — виртуальные машины с базами данных? {#mdb-advantage}

Yandex Cloud предлагает два варианта работы с базами данных:
* Managed Service for PostgreSQL позволяет вам эксплуатировать шаблонные базы данных, не заботясь об администрировании.
* Виртуальные машины Yandex Compute Cloud позволяют вам создавать и настраивать собственные базы данных. Такой подход позволяет использовать любые СУБД, подключаться к базам данных по [SSH](../../glossary/ssh-keygen.md) и так далее.

#### Что такое хост базы данных и кластер базы данных? {#what-is-cluster}

_Хост БД_ — это изолированная среда базы данных в облачной инфраструктуре с выделенными вычислительными ресурсами и зарезервированным объемом хранилища данных.

_Кластер БД_ — это один или более хостов БД, между которыми можно настроить репликацию.

#### Как начать работу с Managed Service for PostgreSQL? {#quickstart}

Managed Service for PostgreSQL доступен всем зарегистрированным пользователям Yandex Cloud.

Чтобы создать кластер базы данных в Managed Service for PostgreSQL, необходимо определиться с его характеристиками:
* [Класс хостов](../concepts/instance-types.md) (характеристики производительности — процессоры, память и т. п.).
* Объем хранилища (резервируется в полном объеме при создании кластера).
* Сеть, к которой будет подключен ваш кластер.
* Количество хостов для кластера и зона доступности для каждого хоста вы можете выбрать зону доступности.

Подробные инструкции читайте в разделе [Как начать работать с Managed Service for PostgreSQL](../quickstart.md).

#### Сколько хостов БД может содержать кластер? {#how-many-hosts}


Минимальное количество хостов зависит от типа используемого [хранилища](../concepts/storage.md):

* Минимум три хоста — для следующих дисков:

   * локальные SSD-диски (`local-ssd`);
   * нереплицируемые SSD-диски (`network-ssd-nonreplicated`).

* Минимум один хост — для следующих дисков:

   * сетевые HDD-диски (`network-hdd`);
   * сетевые SSD-диски (`network-ssd`);
   * сверхбыстрые сетевые SSD-диски с тремя репликами (`network-ssd-io-m3`).


Максимальное количество хостов в кластере ограничено установленными лимитами.

Подробнее в разделе [Квоты и лимиты в Managed Service for PostgreSQL](../concepts/limits.md).

#### Как получить доступ к запущенному хосту базы данных? {#db-access}

Вы можете подключаться к базам данных Managed Service for PostgreSQL способами, стандартными для СУБД.

[Подробнее о подключении к кластерам](../operations/connect/index.md).

#### Сколько кластеров можно создать в рамках одного облака? {#db-limit}

Технические и организационные ограничения MDB приведены в разделе [Квоты и лимиты в Managed Service for PostgreSQL](../concepts/limits.md).

#### Как происходит обслуживание кластеров БД? {#service-window}

Под обслуживанием в Managed Service for PostgreSQL понимается:

* автоматическая установка обновлений и исправлений СУБД для хостов БД (в т. ч. для выключенных кластеров);
* изменение класса хостов и объема хранилища;
* другие сервисные работы Managed Service for PostgreSQL.

Подробнее в разделе [Техническое обслуживание в Managed Service for PostgreSQL](../concepts/maintenance.md).

#### Какую версию PostgreSQL использует Managed Service for PostgreSQL? {#dbms-version}

Managed Service for PostgreSQL поддерживает PostgreSQL 14, 15, 16, 17 и 18, а также PostgreSQL 14, 15, 16, 17 и 18 для 1C. В консоли управления по умолчанию используется версия 17.


#### Что происходит, когда выпускается новая версия СУБД? {#new-version}

Программное обеспечение баз данных обновляется при выходе новых минорных версий. Владельцы затронутых кластеров БД получают предварительное оповещение о сроках проведения работ и доступности баз данных.

#### Что происходит, когда версия СУБД становится устаревающей (`Deprecated`)? {#dbms-deprecated}

Существующие кластеры на версиях в статусе `Deprecated` работают в штатном режиме. За шесть месяцев до окончания поддержки начинается активное уведомление о необходимости обновления. С этого момента создание новых кластеров запрещено.

Владельцы кластеров на версиях в статусе `Deprecated` получат серию официальных уведомлений по электронной почте: первое уведомление — за шесть месяцев до выведения из эксплуатации (`EOL`), а затем за 90, 30, семь и один день до запланированной даты принудительного обновления.

#### Как рассчитывается стоимость потребления для хоста базы данных? {#db-cost}

В Managed Service for PostgreSQL стоимость потребления рассчитывается исходя из следующих параметров:

* Выбранный класс хостов.
* Объем хранилища, зарезервированного для хоста БД.
* Объем резервных копий кластера БД. Объем резервных копий, равный объему хранилища, не тарифицируется. Хранение резервных копий сверх этого объема оплачивается по [тарифам](../pricing.md).
* Количество часов работы хоста БД. Неполные часы округляются до целого значения. Стоимость часа работы для каждого класса хостов приведена в разделе [Правила тарификации для Managed Service for PostgreSQL](../pricing.md).

#### Как изменить вычислительные ресурсы и объем хранилища для кластера БД? {#resources-change}

Вы можете изменять вычислительные ресурсы и объем хранилища в консоли управления — просто выберите другой класс хостов для нужного кластера.

Характеристики кластера изменяются в течение 30 минут. В этот период также могут быть включены другие сервисные работы по кластеру, например, установка обновлений.

#### Можно ли настроить автоматическое увеличение размера хранилища кластера? {#storage-autoscale}

Да, автоматическое увеличение размера хранилища можно настроить при [создании](../operations/cluster-create.md) или [изменении](../operations/storage-space.md#disk-size-autoscale) кластера.

#### Включено ли резервное копирование хостов БД по умолчанию? {#default-backup}

Да, по умолчанию резервное копирование включено. Для PostgreSQL выполняется полное резервное копирование один раз в сутки, и сохраняются все журналы транзакций кластера БД. Это позволяет восстановить состояние кластера на любой момент времени в пределах периода хранения резервных копий, за исключением последних 30 секунд.

По умолчанию резервные копии хранятся 7 дней.

#### Когда выполняется резервное копирование? Доступен ли кластер БД во время резервного копирования? {#backup-window}

Окно резервного копирования — это интервал времени, в течение которого выполняется ежедневное полное резервное копирование кластера БД. Окно резервного копирования — 01:00−05:00 по московскому времени.

Во время окна резервного копирования кластеры остаются полностью доступными.

#### Шифруется ли соединение с кластером БД PostgreSQL? {#encryption}

Соединение между кластером БД и приложением всегда шифруется с использованием SSL. Отключить шифрование соединений с кластером нельзя.

#### Что такое реплика для чтения в PostgreSQL? {#read-only-instance}

Реплика для чтения — это доступный только для чтения хост в кластере БД PostgreSQL, данные на котором синхронизируются с хостом-мастером (применимо только если в кластере работает более 1 хоста). Вы можете использовать реплику для чтения для снижения нагрузки на мастер в базах данных с большим объемом запросов на чтение.

#### За какими метриками и процессами можно следить с помощью мониторинга? {#monitoring}

Для всех типов СУБД можно отслеживать:
* загрузку процессора, памяти, сети, дисков в абсолютных величинах;
* объем данных кластера БД и остаток свободного места в хранилище данных.

Для всех хостов БД можно отслеживать метрики, специфические для типа соответствующей СУБД. Например для PostgreSQL можно отслеживать:
* среднее время выполнения запроса;
* количество запросов в секунду;
* количество ошибок в журналах и т. д.

Мониторинг можно осуществлять с минимальной гранулярностью в 5 секунд.

#### Я могу получить логи моей работы в сервисах? {#logs}

Да, вы можете запросить информацию о работе с вашими ресурсами из логов сервисов Yandex Cloud. Для этого обратитесь в [техническую поддержку](https://kz.center.yandex.cloud/support).

#### Какие ограничения накладываются на кластеры БД PostgreSQL? {#instance-limitations}

Подробнее об ограничениях Managed Service for PostgreSQL смотрите раздел [Квоты и лимиты в Managed Service for PostgreSQL](../concepts/limits.md). В разделе [Классы хостов PostgreSQL](../concepts/instance-types.md) приведены характеристики кластеров, которые можно создать с помощью Managed Service for PostgreSQL.

#### Какие расширения для PostgreSQL поддерживаются в Managed Service for PostgreSQL? {#pg-extension}

Список поддерживаемых расширений для PostgreSQL приведен в разделе [Управление расширениями](../operations/extensions/cluster-extensions.md).

#### В каком дата-центре хранятся резервные копии кластера PostgreSQL? {#data-center}



Резервные копии кластера хранятся в зоне доступности `kz1-a`.


#### Могу ли я получить права суперпользователя в PostgreSQL? {#superuser}

Нет, права суперпользователя недоступны пользователям Managed Service for PostgreSQL. Все виды действий с кластером доступны пользователям с ролью [mdb_admin](../concepts/roles.md#mdb-admin).

#### Могу ли я скопировать данные из таблицы Managed Service for PostgreSQL в локальный файл? А заполнить таблицу данными из локального файла? {#copy-write-data}

Да, вы можете как скопировать данные из таблицы в локальный файл, так и заполнить таблицу данными из локального файла. Подробнее в разделе [Копирование и заполнение таблицы с локальной машины](../operations/copy-write-data.md).

#### Есть ли какие-то особенности или ограничения работы сборщика мусора в кластере Managed Service for PostgreSQL? {#vacuum}

В кластере Managed Service for PostgreSQL поддерживаются все параметры [команды VACUUM](https://www.postgresql.org/docs/current/sql-vacuum.html), но при их использовании учитывайте, что:

* Для выполнения полной очистки (`VACUUM FULL`) пользователю должна быть назначена [роль `mdb_admin`](../concepts/roles.md#mdb-admin). Полная очистка не затронет служебные таблицы.
* В PostgreSQL версии 14 расширена функциональность параметра `INDEX_CLEANUP`: теперь по умолчанию он имеет значение `AUTO`. Это означает, что команда `VACUUM` пропускает очистку индекса, если считает ее нецелесообразной. Если вы хотите обеспечить обратную совместимость с предыдущими версиями PostgreSQL, установите параметр `INDEX_CLEANUP` в значение `ON`.

#### Почему кластер работает медленно, хотя вычислительные ресурсы использованы не до предела? {#throttling}

Вероятно, максимальные значения [IOPS и пропускной способности (bandwidth)](../../compute/concepts/storage-read-write.md) хранилища недостаточны для обработки текущего количества запросов. В этом случае срабатывает [троттлинг](../../compute/concepts/storage-read-write.md#throttling) и быстродействие всего кластера падает.

Максимальные IOPS и bandwidth прирастают на фиксированную величину при увеличении размера хранилища на определенный шаг. Шаг и прирост зависят от типа дисков:

| Тип дисков                  | Шаг, ГБ | Прирост макс. IOPS (чтение/запись) | Прирост макс. bandwidth (чтение/запись), МБ/с |
|-----------------------------|---------|------------------------------------|-----------------------------------------------|
| `network-hdd`               | 256     | 300/300                            | 30/30                                         |
| `network-ssd`               | 32      | 1000/1000                          | 15/15                                         |
| `network-ssd-nonreplicated`, `network-ssd-io-m3` | 93      | 28000/5600                         | 110/82                                        |

Чтобы увеличить максимальные значения IOPS и bandwidth и снизить вероятность троттлинга, расширьте размер хранилища при [изменении кластера](../operations/update.md#change-disk-size).

Если вы используете хранилище с типом диска `network-hdd`, рассмотрите возможность перехода на `network-ssd` или `network-ssd-nonreplicated` путем [восстановления кластера](../operations/cluster-backups.md#restore) из резервной копии.


При использовании хранилища с типом диска `local-ssd` нагрузка на процессорные ядра хостов кластера может незначительно увеличиваться из-за сервисов, обеспечивающих работу дисков.

#### Какой размер блока используется на дисках кластера? {#block-size}

Размер [блока](https://en.wikipedia.org/wiki/Block_(data_storage)) всех типов дисков — 4 КБ.

## Подключение {#connection}

#### Возможен ли доступ к кластеру изнутри Yandex Cloud? {#conn-from-yc}

К хостам кластера Managed Service for PostgreSQL можно подключиться:
* Через интернет, если вы настроили публичный доступ для нужного хоста. К таким хостам подключиться можно только используя [SSL-соединение](../../glossary/ssl-certificate.md).
* С виртуальных машин Yandex Cloud, расположенных в той же облачной сети. Если к хосту нет публичного доступа, для подключения с таких виртуальных машин необязательно использовать SSL-соединение.
* Из контейнера в сервисе [Yandex Serverless Containers](../../serverless-containers/concepts/index.md). Если к хосту нет публичного доступа, контейнер должен располагаться в той же облачной сети.

Подробнее читайте в [документации сервиса](../operations/connect/index.md).

#### Можно ли подключиться к кластеру из Docker-контейнера? {#conn-from-docker}

Да, для этого [настройте Dockerfile](../operations/connect/clients.md#connection-docker).

Пример подключения из контейнера в сервисе Yandex Serverless Containers описан в [практическом руководстве](../../serverless-containers/tutorials/pg-connect.md).

#### Как получить SSL-сертификат для подключения к Managed Service for PostgreSQL на Windows? {#get-ssl}

SSL-сертификат можно получить с помощью PowerShell:

```powershell
mkdir $HOME\.postgresql; curl.exe --output $HOME\.postgresql\root.crt https://storage.yandexcloud.kz/cloud-certs/CA.pem
```

Сертификат будет сохранен в файле `$HOME\.postgresql\root.crt`.

Подробнее о получении сертификата и подключении к базе данных читайте в [документации сервиса](../operations/connect/index.md).

#### Как установить SSL-сертификат для подключения Power BI к Managed Service for PostgreSQL через psql? {#power-bi}

1. Установите [Windows Subsystem for Linux](https://docs.microsoft.com/ru-ru/windows/wsl/) (WSL) и выполните в терминале команду:

   ```bash
   mkdir /mnt/c/temp && \
   curl "https://storage.yandexcloud.kz/cloud-certs/CA.pem" --output /mnt/c/temp/CA.pem && \
   openssl pkcs12 -export -out /mnt/c/temp/CA.pfx -nokeys -in /mnt/c/temp/CA.pem
   ```

   Сертификат будет доступен по пути `C:\temp\CA.pfx`.

1. [Разместите полученный сертификат в хранилище сертификатов Windows](https://docs.microsoft.com/en-us/skype-sdk/sdn/articles/installing-the-trusted-root-certificate).

#### Можно ли подключиться к хостам кластера по SSH? {#connect-ssh}

Подключиться к хостам через SSH не получится. Это сделано в целях безопасности и отказоустойчивости пользовательских кластеров, так как прямые изменения внутри хоста могут привести к его полной неработоспособности.

#### Сколько одновременных подключений к одному хосту доступно в Managed Service for PostgreSQL? {#host-conn}

Количество одновременных подключений задается на уровне кластера в [настройке **Max connections**](../concepts/settings-list.md#setting-max-connections). По умолчанию установлено максимальное значение, которое задается формулой:

```text
200 × <количество_vCPU_на_одном_хосте>
```

О том, как изменить настройки PostgreSQL на уровне кластера читайте в [документации](../operations/update.md#change-postgresql-config).

#### Сколько подключений доступно одному пользователю? {#user-conn}

По умолчанию кластер резервирует для каждого пользователя 50 подключений к каждому хосту. Вы можете изменить это количество в [настройке **Conn limit**](../concepts/settings-list.md#setting-conn-limit).

Если лимит подключений для пользователя будет исчерпан, то попытка открыть новое подключение завершится ошибкой:

```text
too many active clients for user (pool_size for user <имя_пользователя> reached <значение_лимита>)
```

О том, как изменить настройки PostgreSQL на уровне пользователя, читайте в [документации](../operations/cluster-users.md#update-settings).

#### Почему при попытке подключиться к базе данных из Looker Studio возникает ошибка? {#google-looker}

Для подключения из Looker Studio необходимо сгенерировать и указать в настройках подключения файл сертификата клиента и приватный ключ. Инструкцию читайте в разделе [Подключение из Looker Studio](../operations/connect/clients.md#connection-google-looker).

#### Как всегда подключаться к хосту-мастеру? {#connect-to-master}

Чтобы подключиться к текущему хосту-мастеру, используйте [особый FQDN](../operations/connect/fqdn.md#special-fqdns). Он имеет вид `c-<идентификатор_кластера>.rw.mdb.yandexcloud.kz`. При подключении к этому FQDN вы сможете выполнять операции чтения и записи.

{% cut "Пример команды для подключения к мастеру" %}

  ```bash
  psql "host=c-<идентификатор_кластера>.rw.mdb.yandexcloud.kz \
        port=6432 \
        sslmode=verify-full \
        dbname=<имя_БД> \
        user=<имя_пользователя>"
  ```

{% endcut %}

#### Как всегда подключаться к наименее отстающей от мастера реплике? {#connect-to-replica}

Чтобы подключиться к наименее отстающей от мастера реплике, используйте [особый FQDN](../operations/connect/fqdn.md#special-fqdns). Он имеет вид `c-<идентификатор_кластера>.ro.mdb.yandexcloud.kz`. При подключении к этому FQDN вы сможете выполнять только операции чтения. 

{% cut "Пример команды для подключения к реплике" %}

```bash
psql "host=c-<идентификатор_кластера>.ro.mdb.yandexcloud.kz \
      port=6432 \
      sslmode=verify-full \
      dbname=<имя_БД> \
      user=<имя_пользователя>"
```

{% endcut %}

Если в кластере нет активных реплик, то этот FQDN укажет на текущий хост-мастер.

#### Как подключиться к базе данных `postgres`? {#postgres-db}

`postgres` — системная БД. По соображениям безопасности подключаться к системным БД нельзя.

#### Как получить пароль пользователя `postgres`? {#postgres-user}

По соображениям безопасности получить пароль пользователя `postgres` и подключиться к БД от его имени нельзя.

## Изменение кластера {#update}

#### Почему кластер перешел в статус Updating во время внепланового создания резервной копии? {#updating-while-backup}

Кластер переходит в статус **Updating** сразу после запуска процесса создания резервной копии. Отменить операцию невозможно — дождитесь ее завершения.

Время выполнения операции зависит от ряда факторов: объем БД, конфигурация кластера, характер хранимых данных и т. д. Средняя скорость [восстановления кластера из резервной копии](../operations/cluster-backups.md#restore) приблизительно равна 100 Мб/сек.

#### Можно ли одновременно создавать две базы данных в PostgreSQL? {#multi-db}

Одновременное выполнение нескольких операций над кластером невозможно: это архитектурная особенность технологий, используемых Yandex Cloud.

#### Как изменить количество подключений, доступное пользователю? {#user-conn-number}

Можно. Для этого [измените значения соответствующих настроек](../operations/cluster-users.md#update-settings):
* [**Conn limit**](../concepts/settings-list.md#setting-conn-limit) — максимальное количество подключений к хосту для одного пользователя. По умолчанию равно 50. Не может быть меньше 10.
* [**Max connections**](../concepts/settings-list.md#setting-max-connections) — максимальное количество подключений, зарезервированных для всех пользователей. По умолчанию равно `200 × <количество_vCPU_на_каждом_хосте>`. При этом нужно учитывать, что в это число входит 15 служебных подключений: например, если для кластера задан параметр `"max_connections": 100`, то вы можете зарезервировать не более 85 подключений на каждый хост кластера для пользователей.

#### Можно ли изменить класс существующего хоста (standard, memory-optimized, burstable)? {#host-class}

Можно — для этого воспользуйтесь инструкцией в разделе [Изменение настроек кластера](../operations/update.md#change-resource-preset).

#### Можно ли изменить тип диска в существующем кластере? {#disk-type}

Можно. Для этого [восстановите кластер из резервной копии](../operations/cluster-backups.md#restore) и при задании настроек нового кластера укажите нужный тип диска.

#### Можно ли управлять кластером с помощью команд SQL? {#sql-control}

Существуют ограничения на управление кластером с помощью команд SQL. Подробнее в разделе [Ограничения для команд SQL](../concepts/sql-limits.md).

#### Можно ли создать базу данных с помощью команд SQL? {#create-db-sql}

Нет, создать базу данных с помощью команд SQL нельзя. В кластере Managed Service for PostgreSQL возможно создание баз данных только с помощью интерфейсов Yandex Cloud.

#### Как вывести кластер из режима read-only? {#read-only-exit}

Воспользуйтесь инструкциями в разделах [Вывод кластера из режима read-only](../concepts/storage.md#read-only-solutions) и [Вывести кластер из режима read-only вручную](../operations/storage-space.md#read-only-solutions).

## Настройки параметров кластера {#configuration}

#### Параметр autovacuum по умолчанию включен для всех таблиц? {#autovacuum}

Да, `AUTOVACUUM` включен для всех таблиц по умолчанию.

Процесс автоочистки запускается не по времени, а по достижении значений, заданных в [настройках](../concepts/settings-list.md#dbms-cluster-settings) — например, когда доля измененных или удаленных записей в таблице равна значению настройки **Autovacuum vacuum scale factor**.

Подробнее читайте в [документации PostgreSQL](https://www.postgresql.org/docs/11/runtime-config-autovacuum.html).

#### Какие значения LC_COLLATE и LC_CTYPE по умолчанию выставляются для баз данных? {#lc-default}

По умолчанию для создаваемых баз данных выставляются значения `LC_CTYPE=C` и `LC_COLLATE=C`. Для базы данных, которую вы создаете вместе с кластером, эти настройки изменить нельзя, но вы можете [создать новую базу](../operations/databases.md) и указать нужные значения для нее.

#### Можно ли изменить значения LC_COLLATE и LC_CTYPE? {#lc-edit}

Настройки локали нельзя изменить после создания базы данных. Вы можете:
* [создать](../operations/databases.md#add-db) новую базу данных с нужными настройками;
* задать локаль сортировки (`LC_COLLATE`) для элементов уже созданной базы данных:
   * при вызове функции:
      ```sql
      SELECT lower(t1 COLLATE "ru_RU.utf8") FROM test;
      ```
   * при создании и изменении таблицы:
      ```sql
      CREATE TABLE test (t1 text COLLATE "ru_RU.utf8");
      ```

#### Можно ли сменить владельца БД? {#db-owner}

После создания БД изменить ее владельца невозможно. Если [создать БД через Terraform](../operations/databases.md#add-db) и затем поменять ее владельца в параметре `owner`, это приведет к пересозданию БД и потере данных.

## Перемещение и восстановление кластера {#backup}

#### Можно ли восстановить резервную копию кластера в работающий экземпляр Managed Service for PostgreSQL в другой облачной сети? {#diff-network}

Да, при восстановлении кластера из резервной копии вы можете выбрать другую облачную сеть.

#### Можно ли изменить срок хранения автоматических резервных копий? {#backup-retain-days}

Вы можете задать срок хранения автоматических резервных копий:

* При [создании](../operations/cluster-create.md) или [изменении](../operations/update.md#change-additional-settings) кластера. Возможные значения: от 7 до 60 дней.

* При [создании](../operations/backup-retention-policies.md#create-policy) политик резервного копирования. Возможные значения: от 7 до 1095 дней (до трех лет).

#### Нужен ли плагин wal2json, если выполняется только реплицирование, но не копирование данных? {#wal2json}

Да, плагин обязателен, даже если вы не выполняете копирование данных.

#### Можно ли локально выгрузить резервную копию базы данных? {#backup-local-dump}

Локально выгрузить резервную копию из Yandex Cloud средствами сервиса нельзя, но вы можете воспользоваться [утилитой pg_dump](https://www.postgresql.org/docs/current/app-pgdump.html).

#### Как перенести локальный дамп базы данных PostgreSQL в Yandex Cloud? {#dump-to-yc}

Воспользуйтесь инструкцией в разделе [Миграция базы данных](../tutorials/data-migration.md).

#### Как перенести БД или таблицу из одного кластера в другой? {#transfer-db-table}

Перенести БД или таблицу можно с помощью сервиса Data Transfer или утилиты [pg_dump](https://www.postgresql.org/docs/current/app-pgdump.html).

Подробнее о миграции с помощью Data Transfer читайте в руководстве [Миграция базы данных](../tutorials/outbound-replication.md).

#### Как перенести данные между кластерами в разных каталогах или облаках? {#transfer-data}

Перенести данные можно с помощью сервиса Data Transfer или утилиты [pg_dump](https://www.postgresql.org/docs/current/app-pgdump.html).

Подробнее о миграции с помощью Data Transfer читайте в руководстве [Миграция базы данных](../tutorials/outbound-replication.md).

#### Как перенести кластер в другое облако? {#transfer-cluster}

Перенести кластер можно с помощью сервиса Data Transfer или утилиты [pg_dump](https://www.postgresql.org/docs/current/app-pgdump.html).

Подробнее о миграции с помощью Data Transfer читайте в руководстве [Миграция базы данных](../tutorials/outbound-replication.md).

#### Как восстановить резервную копию в существующий кластер? {#restore-existing-cluster}

Резервную копию можно развернуть только в новый кластер.

#### Как восстановить кластер до состояния выбранной резервной копии? {#cluster-existing-backup}

Резервную копию можно развернуть только в новый кластер.

#### Можно ли восстановить из резервной копии одну базу данных? {#restore-one-database}

Нет, выбрать желаемые базы данных нельзя. Из резервной копии кластер восстанавливается целиком со всеми базами данных.

### Обновление мажорной версии PostgreSQL {#version-update}

#### Нужно ли выполнять ANALYZE, REINDEX и обновлять статистические данные (pg_stat_user_tables, pg_statistic) вручную после обновления мажорной версии PostgreSQL? {#version-update-manual}

Выполнять `ANALYZE`, `REINDEX` и обновлять статистические данные вручную не нужно. Это выполняется автоматически после обновления.

[Подробнее об обновлении мажорной версии PostgreSQL в Managed Service for PostgreSQL](../concepts/upgrade.md).

#### Проверяет ли Managed Service for PostgreSQL, что версия collation изменилась после обновления мажорной версии PostgreSQL? {#version-update-collation}

Версии `collation` при обновлении мажорной версии не изменяются, поэтому проверка изменений не выполняется.

#### Как получить доступ к логам и сгенерированным скриптам после обновления мажорной версии PostgreSQL? {#version-update-get-logs}

Логи процесса не доступны пользователям. Если предварительная проверка (`--check`) или обновление завершаются ошибкой, необходимая информация отображается в сообщении об ошибке.

#### Может ли обновление мажорной версии завершиться ошибкой? {#version-update-error}

Обновление может завершиться ошибкой из-за конфликтов в схеме данных, несовместимости расширений или хранимых процедур. Конкретная причина отображается в сообщении об ошибке.

## Пользователи и роли {#users}

#### Можно ли перенести пользователей из кластера-источника PostgreSQL в кластер-приемник Managed Service for PostgreSQL? {#user-migration}

Нет, пользователей нельзя автоматически перенести из стороннего кластера PostgreSQL или кластера Managed Service for PostgreSQL в кластер Managed Service for PostgreSQL. В кластере-приемнике нужно [создать пользователей](../operations/cluster-users.md#adduser) заново.

#### Как создать роль с помощью SQL-запросов? {#create-role}

С помощью SQL-запросов создать роль нельзя.

В PostgreSQL роль — это пользователь или группа пользователей БД. [Создать пользователя](../operations/cluster-users.md#adduser) в Managed Service for PostgreSQL можно только с помощью консоли управления, Yandex Cloud CLI, Terraform или API. Подробнее о создании пользователей читайте в [документации PostgreSQL](https://www.postgresql.org/docs/current/sql-createuser.html).

Вы можете [назначить пользователю привилегии](../operations/grant.md), которые определяют доступные для него действия с объектами БД.

## Высокая доступность и балансировка {#ha}

#### Как исключить хост из выбора мастером? {#excluded-host}

Вы можете исключить хост из выбора мастером при автоматической или ручной смене хоста-мастера. Для этого настройте [каскадную репликацию](../concepts/replication.md#replication-manual): [укажите](../operations/hosts.md#update) источник репликации для хоста, который не должен становиться мастером.

{% note warning %}

Для обеспечения высокой доступности во время технического обслуживания в кластере должен быть хотя бы один хост-реплика без источника репликации.

{% endnote %}

#### Почему при настройке каскадной репликации возникает ошибка? {#cascade-error}

Текст ошибки:

```text
cluster should have at least 2 HA hosts to use cascade host
```

Ошибка возникает, если вы указываете источник репликации для единственной некаскадной реплики.

Для обеспечения высокой доступности в кластере должна быть хотя бы одна реплика без источника репликации. Во время технического обслуживания или при сбое хоста-мастера роль мастера переключится на эту реплику.

Подробнее о репликации читайте в [соответствующем разделе](../concepts/replication.md).

#### Как всегда подключаться к хосту-мастеру? {#connect-to-master-ha}

Чтобы подключиться к текущему хосту-мастеру, используйте [особый FQDN](../operations/connect/fqdn.md#special-fqdns). Он имеет вид `c-<идентификатор_кластера>.rw.mdb.yandexcloud.kz`. При подключении к этому FQDN вы сможете выполнять операции чтения и записи.

{% cut "Пример команды для подключения к мастеру" %}

  ```bash
  psql "host=c-<идентификатор_кластера>.rw.mdb.yandexcloud.kz \
        port=6432 \
        sslmode=verify-full \
        dbname=<имя_БД> \
        user=<имя_пользователя>"
  ```

{% endcut %}

#### Как всегда подключаться к наименее отстающей от мастера реплике? {#connect-to-replica-ha}

Чтобы подключиться к наименее отстающей от мастера реплике, используйте [особый FQDN](../operations/connect/fqdn.md#special-fqdns). Он имеет вид `c-<идентификатор_кластера>.ro.mdb.yandexcloud.kz`. При подключении к этому FQDN вы сможете выполнять только операции чтения. 

{% cut "Пример команды для подключения к реплике" %}

```bash
psql "host=c-<идентификатор_кластера>.ro.mdb.yandexcloud.kz \
      port=6432 \
      sslmode=verify-full \
      dbname=<имя_БД> \
      user=<имя_пользователя>"
```

{% endcut %}

Если в кластере нет активных реплик, то этот FQDN укажет на текущий хост-мастер.

#### Почему мастер и реплики поменялись местами? {#failover}

Это значит, что произошло переключение роли мастера на хост-реплику. Переключение обеспечивает доступность кластера во время технического обслуживания и при выходе из строя хоста-мастера.

Чтобы всегда подключаться к текущему мастеру, используйте [особый FQDN](../operations/connect/fqdn.md#special-fqdns).

{% note warning %}

Используйте подключение с помощью особого FQDN хоста-мастера только для процессов, которые допускают недоступность базы данных на запись продолжительностью до 10 минут.

{% endnote %}

#### Можно ли настроить мультимастер в кластере или между двумя кластерами? {#setting-multimaster}

Нет, в сервисе Managed Service for PostgreSQL не поддерживается настройка мультимастера.


#### Как настроить балансировку, чтобы запросы на чтение отправлялись только на реплики? {#balancing-replicas}

Балансировка не осуществляется на стороне Managed Service for PostgreSQL, поэтому ее необходимо реализовать в бэкенде вашего приложения. Чтобы отправлять запросы на чтение репликам, приложение должно определить самостоятельно, какой из хостов является репликой, а какой — мастером. Например, это можно сделать с помощью библиотеки `libpq`. Подробнее читайте в [документации PostgreSQL](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNECT-TARGET-SESSION-ATTRS).

Либо вы можете воспользоваться [особым FQDN](../operations/connect/fqdn.md#fqdn-replica), который указывает на наименее отстающую реплику.

Дополнительные сведения в разделе [Высокая доступность](../concepts/high-availability.md).

#### В каких случаях может происходить автоматическое переключение мастера? {#auto-failover}

Хост-мастер может автоматически переключиться на другой хост:

* во время операций [изменения кластера](../operations/update.md);
* при выходе текущего хоста-мастера из строя;
* при восстановлении работоспособности кластера;
* при [техническом обслуживании](../concepts/high-availability.md#maintenance-settings) кластера.

Переключение мастера обеспечивает правильную работу кластера при указанных действиях.

{% note info %}

Чтобы обеспечить [высокую доступность](../concepts/high-availability.md), в кластере всегда есть хотя бы одна реплика без явно указанного [источника репликации](../concepts/replication.md#replication-manual), которая может стать мастером.

{% endnote %}

## Мониторинг и логи {#monitoring}

#### Где я могу отслеживать использование дискового пространства, чтобы не превысить лимит в 95% для перехода в read-only? {#disk-space}

Отслеживать использование дискового пространства можно:
* в консоли управления с помощью инструментов [мониторинга состояния кластера](../operations/monitoring.md#monitoring-cluster);
* в сервисе [Yandex Monitoring](https://kz.monitoring.yandex.cloud) с возможностью [настроить алерты](../operations/monitoring.md#monitoring-integration) по заданным метрикам.

#### Логи хранятся на том же диске, что и данные PostgreSQL? Как они тарифицируются? {#logs-storage}

Логи хранятся отдельно от диска с данными и ротируются автоматически. Посмотреть информацию о логах можно командой [CLI](../../cli/index.md):

```bash
yc managed-postgresql cluster list-logs <идентификатор_кластера>
```

Использование хранилища с логами кластера не тарифицируется.

#### Как долго хранятся логи? {#log-keeping}

Логи кластера хранятся 45 дней.

#### Что такое WAL и для чего они нужны? {#wal}

[Журналы Write-Ahead Log](https://postgrespro.ru/docs/postgresql/12/wal-intro) нужны для записи данных на диск и их репликации. Они создаются при запросах на запись и занимают место на диске до момента полной записи информации с журналов на диски хостов — это обеспечивает отказоустойчивость и надежность СУБД.

Подробнее о принципах работы PostgreSQL читайте в [официальной документации](https://postgrespro.ru/docs/postgresql/12).

#### Что означает параметр Cached в мониторинге RAM хоста кластера PostgreSQL? {#cached}

В Cached помещаются кешированные данные. Большинство операций выполняется на уровне оперативной памяти, так как вся информация базы данных хранится именно там. Кеширование происходит не только для баз данных, но и для диска — из-за этого объём кешированных данных может превышать размер хранилища.

В случае увеличения потребления оперативной памяти приложениями часть памяти с кешем может высвобождаться.

Подробнее о кешировании данных дисков в Linux читайте в [документации](https://www.linuxatemyram.com/).


#### Как получать алерты о критических показателях кластера PostgreSQL? {#notifications}

Воспользуйтесь сервисом [Yandex Monitoring](https://kz.monitoring.yandex.cloud) и [настройте алерты](../operations/monitoring.md#monitoring-integration) по критичным для вас параметрам.


#### Как настроить алерт, который срабатывает при заполнении определенного процента дискового пространства? {#disk-space-percentage}

[Создайте алерт](../operations/monitoring.md#monitoring-integration) с метрикой `disk.used_bytes` в сервисе Yandex Monitoring. Метрика показывает размер использованного дискового пространства в кластере Managed Service for PostgreSQL.

Для `disk.used_bytes` используются пороги для оповещения. Их рекомендуемые значения:

* `Alarm` — 90% дискового пространства.
* `Warning` — 80% дискового пространства.

Значения порогов задаются только в байтах. Например, рекомендуемые значения для диска размером в 100 ГБ:

* `Alarm` — `96636764160` байт (90%).
* `Warning` — `85899345920` байт (80%).

## Сообщения об ошибках {#errors}

#### Почему при использовании расширения TimescaleDB возникает ошибка? {#timescale}

Текст ошибки:

```text
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)](https://www.timescale.com/legal/licenses). Пункт 2.2 лицензии запрещает использовать Community Edition для предоставления услуг DBaaS (Database as a Service), поэтому эта версия недоступна в Yandex Cloud.

В кластер Managed Service for PostgreSQL устанавливается TimescaleDB Apache 2 Edition — по сравнению с Community Edition ее функциональность ограничена.

#### Что делать, если при получении SSL-сертификата через PowerShell возникает ошибка проверки отзыва? {#get-ssl-error}

Полный текст ошибки:

```text
curl: (35) schannel: next InitializeSecurityContext failed: Unknown error (0x80092012)
The revocation function was unable to check revocation for the certificate
```

Это означает, что при подключении к сайту не удалось проверить, есть ли его сертификат в списке отозванных.

Чтобы исправить ошибку:

* убедитесь, что проверку не блокируют настройки корпоративной сети;
* выполните команду с параметром `--ssl-no-revoke`.

    ```powershell
    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-req}

Ошибка означает, что вы пытаетесь подключиться к кластеру с [хостом в публичном доступе](../concepts/network.md#public-access-to-a-host). Такие хосты поддерживают только соединения с SSL-сертификатом. Вы можете:

* [Получить SSL-сертификат](../operations/connect/index.md#get-ssl-cert) и добавить его в приложение, которое вы используете для подключения.
* [Отключить публичный доступ для хостов](../operations/hosts.md#update) и подключаться к кластеру с виртуальной машины, расположенной в той же облачной сети.

#### Что делать, если при подключении я получаю ошибку `too many active clients for user`? {#connection-limit-error}

Подключение к хостам кластера может завершиться ошибкой:

```text
too many active clients for user (pool_size for user <имя_пользователя> reached <значение_лимита>)
```

По умолчанию кластер резервирует для каждого пользователя 50 подключений к каждому хосту. Если лимит подключений для пользователя будет исчерпан, то попытка открыть новое подключение завершится ошибкой.

Решение: увеличьте лимит подключений в [настройке **Conn limit**](../concepts/settings-list.md#setting-conn-limit).

О том, как изменить настройки PostgreSQL на уровне пользователя, читайте в [документации](../operations/cluster-users.md#update-settings).

#### Почему при подключении к пользовательской базе данных возникает ошибка? {#database-error}

Подключение к пользовательской базе данных может завершиться ошибкой:

```text
ERROR: odyssey: ce3ea075f4ffa: route for '<имя_БД>.<имя_пользователя>' is not found
```

Ошибка означает, что в параметрах подключения указано неверное имя базы данных.

#### Почему при создании дампа с помощью pg_dumpall возникает ошибка? {#dump-error}

При создании дампа с помощью утилиты `pg_dumpall` возникает ошибка:

```text
ERROR: odyssey: c16b9035a1f78: route for 'template1.<имя_пользователя>' is not found
```

Ошибка возникает из-за того, что утилита `pg_dumpall` пытается выгрузить все базы данных: как пользовательские, так и системные.

Создать дамп одновременно всех баз данных Managed Service for PostgreSQL нельзя. Выгрузите дампы с помощью утилиты `pg_dump` для каждой пользовательской базы данных по одной, исключив системные.

#### Почему при подключении к базе данных postgres возникает ошибка? {#database-postgres-error}

Подключение к базе данных `postgres` завершается ошибкой:

```text
ERROR: odyssey: c76e2c1283a7a: route for 'postgres.<имя_пользователя>' is not found
```

База данных `postgres` является системной, и подключение к ней в Managed Service for PostgreSQL запрещено. Укажите в параметрах подключения другую существующую базу данных.

#### Почему соединение завершается ошибкой `terminating connection due to administrator command`? {#connection-error}

Соединение с кластером Managed Service for PostgreSQL может завершаться сообщением:

```text
FATAL: terminating connection due to administrator command
```

Такое сообщение не является ошибкой, а означает, что длительность сессии/транзакции превысила значение настройки [Session duration timeout](../concepts/settings-list.md#setting-session-duration-timeout) (по умолчанию — 12 часов).

#### Почему не удается подключиться к хостам кластера? {#host-error}

Подключение к хостам кластера может завершиться ошибкой:

```text
could not translate host name "<обычный или специальный FQDN>" to address: Name or service not known
```

Ошибка возникает, если запрещен публичный доступ к хосту или пользователи используют кастомизированные DNS-серверы, которые не разрешают доменные имена в зоне `mdb.yandexcloud.net`.

Решение:

* Включите публичный доступ для хоста, к которому выполняется подключение. При использовании [специального FQDN](../operations/connect/fqdn.md#special-fqdns) включите публичный доступ для хоста, на который указывает специальный FQDN.

  {% note warning %}
  
  Используйте подключение с помощью особого FQDN хоста-мастера только для процессов, которые допускают недоступность базы данных на запись продолжительностью до 10 минут.
  
  {% endnote %}

* Рекомендуется включить публичный доступ для всех хостов кластера. Это позволит избежать ошибок подключения при автоматической смене хоста-мастера.
* Для кастомизированных DNS-серверов настройте DNS-перенаправление для зоны `mdb.yandexcloud.net`.

#### Почему возникает ошибка при остановке кластера? {#stop-cluster-error}

Варианты ошибок:

```text
ERROR: rpc error: code = FailedPrecondition desc = Cluster has no backups
```

```text
cluster has no backups. If you want to stop the cluster, make a backup
```

Ошибка возникает из-за того, что [остановить](../operations/cluster-stop.md#stop-cluster) кластер Managed Service for PostgreSQL можно только при наличии хотя бы одной резервной копии кластера.

Решение: дождитесь создания автоматической резервной копии или [создайте резервную копию вручную](../operations/cluster-backups.md#create-backup).

#### Почему при изменении кластера возникает ошибка `max_connections is less than sum of users connection limit`? {#max-connections-error}

Эта ошибка может возникнуть при уменьшении класса хоста в кластере, если сумма лимитов подключений всех пользователей меньше общего лимита подключений на кластер ([Max connections](../concepts/settings-list.md#setting-max-connections)).

Решение: сначала уменьшите лимиты, установленные для пользователей, чтобы их сумма была меньше, чем `<значение_Max_connections> — 15`, а затем снижайте класс хоста.

#### Почему перенос данных через создание и восстановление логического дампа завершается ошибкой? {#backup-error}

[Восстановление логического дампа](../tutorials/data-migration.md#backup) может завершаться одной из ошибок:

* `ERROR: role "<имя_пользователя_источника>" does not exist`
* `ERROR: must be member of role "<имя_пользователя_источника>"`

Ошибки связаны с отсутствием в кластере-приемнике пользователя или привилегий пользователя, от имени которого был создан логический дамп в кластере-источнике.

Чтобы устранить ошибки:

1. [Добавьте пользователя](../operations/cluster-users.md#adduser) в кластере-приемнике с доступом к базе данных для переноса и таким же именем, что и у пользователя, с помощью которого был создан логический дамп в кластере-источнике.
1. [Восстанавливайте логический дамп](../tutorials/data-migration.md#restore) с помощью этого пользователя или [выдайте его привилегии](../operations/grant.md#grant-privilege) пользователю, с помощью которого вы восстанавливаете логический дамп.

#### Что делать, если при выполнении логической репликации возникает ошибка `replication slot already exists`? {#repl-slot-exists}

По умолчанию при [создании подписки](../../tutorials/dataplatform/postgresql-data-migration.md#create-publication-subscription) создается и слот репликации. Ошибка `replication slot already exists` означает, что слот репликации уже существует.

Устранить ошибку можно одним из способов:

1. Привяжите подписку к существующему слоту репликации. Для этого добавьте в запрос для создания подписки параметр `create_slot = false`.
1. [Удалите существующий слот репликации](../operations/replication-slots.md#delete) и попробуйте создать подписку еще раз.

#### Почему при миграции БД в Managed Service for PostgreSQL возникает ошибка `extension... is not available`? {#extension-is-not-available}

Текст ошибки:

```text
extension "<название_расширения>" is not available
```

Ошибка может возникнуть при миграции БД в Managed Service for PostgreSQL с помощью скрипта, который пытается установить и использовать [расширение PostgreSQL](../operations/extensions/cluster-extensions.md). Причина ошибки в том, что в кластерах Managed Service for PostgreSQL нельзя управлять расширениями PostgreSQL с помощью команд SQL.

Чтобы избежать ошибки:

1. Если скрипт или логический дамп имеют текстовый формат, удалите из них операторы для создания расширений PostgreSQL.
1. [Установите](../operations/extensions/cluster-extensions.md#update-extensions) все необходимые расширения в базе-приемнике с помощью интерфейсов Yandex Cloud.

#### Почему при развертывании логического дампа возникает ошибка `must be owner of extension`? {#owner-of-extension}

[Восстановление логического дампа](../tutorials/data-migration.md#backup) может завершаться ошибкой `ERROR: must be owner of extension`.

Ошибка вызвана тем, что в логическом дампе присутствуют операции установки или обновления [расширений PostgreSQL](../operations/extensions/cluster-extensions.md). В кластерах Managed Service for PostgreSQL нельзя управлять расширениями с помощью команд SQL.

Чтобы устранить ошибку:

1. Перед восстановлением дампа [включите](../operations/extensions/cluster-extensions.md#update-extensions) в базе-приемнике все необходимые расширения.
1. Исключите из дампа любые операции с расширениями. Например, можно закомментировать строки, связанные с установкой расширений.
1. Выполните восстановление логического дампа повторно.

#### Почему при настройке каскадной репликации возникает ошибка? {#cascade-errors}

Текст ошибки:

```text
cluster should have at least 2 HA hosts to use cascade host
```

Ошибка возникает, если вы указываете источник репликации для единственной некаскадной реплики.

Для обеспечения высокой доступности в кластере должна быть хотя бы одна реплика без источника репликации. Во время технического обслуживания или при сбое хоста-мастера роль мастера переключится на эту реплику.

Подробнее о репликации читайте в [соответствующем разделе](../concepts/replication.md).

#### Почему возникает ошибка `cannot execute <SQL-команда> in a read-only transaction`? {#read-only-error}

Варианты ошибок:

```text
ERROR: cannot execute ALTER EXTENSION in a read-only transaction
```

```text
ERROR: cannot execute CREATE TABLE in a read-only transaction
```

```text
ERROR: cannot execute UPDATE in a read-only transaction
```

```text
ERROR: cannot execute INSERT in a read-only transaction
```

Такие ошибки могут возникнуть, если произошло переключение роли мастера на другой хост и вы подключились к реплике, доступной только для чтения.

Избежать таких ошибок можно любым из способов:

* Подключитесь к кластеру с помощью [особого FQDN](../operations/connect/fqdn.md#special-fqdns), который всегда указывает на текущий мастер.

  {% note warning %}
  
  Используйте подключение с помощью особого FQDN хоста-мастера только для процессов, которые допускают недоступность базы данных на запись продолжительностью до 10 минут.
  
  {% endnote %}

* При подключении укажите параметр `target_session_attrs=read-write` и перечислите все хосты кластера. Так вы подключитесь к хосту-мастеру с возможностью чтения и записи.

Подробнее о способах подключения к хосту-мастеру читайте в разделе [Подключение к базе данных](../operations/connect/fqdn.md#automatic-master-host-selection).

#### Что делать, если в логах отображается ошибка `too many connections for role "monitor"`? {#monitor-role-error}

Пользователь `monitor` зарезервирован для нужд мониторинга в кластере Managed Service for PostgreSQL. Сообщения об исчерпании лимита подключений для этого пользователя можно игнорировать.

#### Почему установка нескольких расширений в CLI заканчивается ошибкой? {#cli-extensions-errors}

Установка нескольких расширений в CLI может завершиться одной из ошибок:

* `ERROR: accepts 1 arg(s), received 2`

   Ошибка может возникать из-за неправильного формата команды.

   Решение: проверьте, что все расширения перечислены без пробела, например:

   ```bash
   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 в кластере.

  Решение: проверьте совместимость указанных в команде расширений в [списке поддерживаемых расширений](../operations/extensions/cluster-extensions.md#postgresql).

* `ERROR: rpc error: code = InvalidArgument desc = The specified extension '<имя_расширения>' is not present in shared_preload_libraries`

  Ошибка может возникать при отсутствии необходимой библиотеки общего пользования в кластере.

  Решение: проверьте требования к библиотекам общего пользования в [списке поддерживаемых расширений](../operations/extensions/cluster-extensions.md#postgresql). Чтобы подключить нужную библиотеку, при [изменении настроек кластера PostgreSQL](../operations/update.md#change-postgresql-config) укажите ее имя в [параметре Shared preload libraries](../concepts/settings-list.md#setting-shared-libraries).

#### Почему возникает ошибка `could not open extension control file "<путь_к_расширению>/vector.control": No such file or directory` при обращении к расширению `vector`? {#vector-error}

Ошибка возникает из-за того, что в Managed Service for PostgreSQL расширение `vector` называется `pgvector`.

Решение: при обращении к расширению используйте `pgvector` вместо `vector`.