Перейти к основному содержимому
Перейти к основному содержимому

Часто задаваемые вопросы по Managed Postgres

Private preview

Мониторинг и метрики

Как получить доступ к метрикам своего экземпляра Managed Postgres?

Вы можете отслеживать загрузку CPU, использование памяти, IOPS и хранилища непосредственно в консоли ClickHouse Cloud на вкладке Monitoring вашего экземпляра Managed Postgres.

Примечание

Функция Query Performance Insights для детального анализа запросов появится в ближайшее время.

Резервное копирование и восстановление

Какие варианты резервного копирования доступны?

Managed Postgres включает автоматические ежедневные резервные копии с непрерывным архивированием WAL, что обеспечивает возможность восстановления к определённому моменту времени (point-in-time recovery) в пределах 7‑дневного периода хранения. Резервные копии хранятся в S3.

Подробную информацию о частоте резервного копирования, сроках хранения и выполнении восстановления к определённому моменту времени см. в документации Резервное копирование и восстановление.

Инфраструктура и автоматизация

Доступна ли поддержка Terraform для Managed Postgres?

Поддержка Terraform для Managed Postgres на данный момент недоступна. Мы рекомендуем использовать консоль ClickHouse Cloud для создания и управления вашими экземплярами.

Расширения и настройка

Какие расширения поддерживаются?

Managed Postgres поддерживает более 100 расширений PostgreSQL, в том числе популярные PostGIS, pgvector, pg_cron и многие другие. Полный список доступных расширений и инструкции по установке см. в разделе документации Расширения.

Могу ли я настраивать параметры конфигурации PostgreSQL?

Да, вы можете изменять параметры конфигурации PostgreSQL и PgBouncer на вкладке Settings в консоли. Подробную информацию о доступных параметрах и способах их изменения см. в разделе Settings документации.

Совет

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

Пул соединений

Почему при работе через PgBouncer возникает ошибка prepared statement does not exist?

Managed Postgres запускает PgBouncer в режиме transaction pooling. В этом режиме backend-соединение Postgres назначается клиенту только на время одной транзакции, а затем возвращается в пул — следующая транзакция от того же клиента может попасть на другое backend-соединение.

Из-за этого не работают server-side prepared statements, которые привязаны к конкретному backend-соединению, выполнившему PREPARE (или Parse в extended query protocol). Когда соответствующий Execute попадает на другое backend-соединение, возникают ошибки вида:

ERROR:  prepared statement "..." does not exist
ERROR:  unnamed prepared statement does not exist

Симптомы, которые часто связаны с той же первопричиной:

  • Всплески ошибок prepared statement does not exist, особенно при догрузке исторических данных или при записи с высоким параллелизмом
  • Вставки, которые как будто "тихо завершаются неудачей": выражение возвращает ошибку, драйвер выполняет повторную попытку, и в итоге пакет может примениться лишь частично или быть отброшен
  • Возвращаемые значения с неверным типом (например, столбец BIGINT, декодированный как битовый шаблон float64) — это происходит, когда кэшированный план на стороне клиента повторно использует устаревшие коды типа/формата для сервера, которому так и не был отправлен соответствующий Parse

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

DriverSetting
pgx (Go)statement_cache_capacity=0 и default_query_exec_mode=exec (или simple_protocol)
psycopg3 (Python)prepare_threshold=None
asyncpg (Python)statement_cache_size=0
JDBC (Java)prepareThreshold=0
node-postgres / pg (Node.js)Не передавайте name в query() (именованные запросы становятся подготовленными на стороне сервера)

Если ваша нагрузка зависит от подготовленных выражений, подключайтесь напрямую к PostgreSQL (порт 5432), а не через пулер PgBouncer — прямые подключения штатно поддерживают подготовленные выражения. Подробнее о выборе между конечной точкой с пулом и прямой конечной точкой см. в разделе Connection.

Что означает параметр "max_client_conn" в PgBouncer и как он соотносится с max_connections в Postgres?

Они отвечают за разные вещи:

  • Postgres max_connections ограничивает число backend-соединений с самим PostgreSQL. Это затратный параметр — каждое backend-соединение потребляет память и занимает слот процесса.
  • PgBouncer max_client_conn ограничивает число клиентских соединений, которые могут быть одновременно открыты к пулеру. PgBouncer мультиплексирует множество таких клиентских соединений на гораздо меньшее число backend-соединений.

Типичный экземпляр Managed Postgres настроен так, что PgBouncer принимает примерно в 10 раз больше клиентских соединений, чем доступно backend-соединений Postgres (например, 5000 клиентских / 500 backend-соединений). Если вы видите ошибки соединения на уровне пулера, гораздо вероятнее, что вы упираетесь в лимит backend-соединений для конкретного пула (default_pool_size), а не в общий лимит клиентских соединений.

Возможности базы данных

Могу ли я создавать несколько баз данных и схем?

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

Поддерживается ли ролевая модель управления доступом (RBAC)?

У вас есть полный доступ с правами суперпользователя к вашему экземпляру Managed Postgres, что позволяет создавать роли и управлять правами доступа с помощью стандартных команд PostgreSQL.

Примечание

Расширенные возможности RBAC с интеграцией с консолью запланированы на этот год.

Обновление

Как выполняются обновления версии PostgreSQL?

Минорные и мажорные обновления версии выполняются через переключение (failover) и обычно приводят только к нескольким секундам простоя. Вы можете настроить окно обслуживания, чтобы задать время выполнения обновлений. Подробные сведения см. в документации по обновлениям.

Миграция

Какие инструменты доступны для миграции на Managed Postgres?

Managed Postgres поддерживает несколько подходов к миграции:

  • pg_dump и pg_restore: Для небольших баз данных или одноразовых миграций. См. руководство pg_dump and pg_restore.
  • Логическая репликация: Для крупных баз данных, для которых важно минимизировать время простоя. См. руководство Logical replication.
  • PeerDB: Для репликации на основе CDC из других источников Postgres. См. руководство PeerDB migration.
Примечание

Полностью управляемый процесс миграции будет доступен в ближайшее время.