Yandex Cloud
Поиск
Связаться с экспертомПопробовать бесплатно
  • Кейсы
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
  • Marketplace
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
    • Акции и free tier
  • Кейсы
  • Документация
  • Блог
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ТОО «Облачные Сервисы Казахстан»
Yandex Managed Service for Sharded PostgreSQL
RU
  • Начало работы
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • История изменений
    • Общие вопросы
    • Распределенные запросы
    • Подключение
    • Безопасность
    • Производительность
    • Миграция
    • Ограничения
    • Устранение неполадок
    • Все вопросы на одной странице
  1. Вопросы и ответы
  2. Устранение неполадок

Устранение неполадок в Managed Service for Sharded PostgreSQL

Статья создана
Yandex Cloud
Обновлена 29 мая 2026 г.
  • Транзакция не применяется на всех шардах

  • Запросы не направляются на новый шард

  • Ошибка failed to get connection to any shard host within при подключении к хостам кластера

  • Ошибка error processing query ... : syntax error при выполнении запроса

  • Ошибка permission denied for schema

  • Ошибка failed to find primary within host

  • Ошибка failed to match any datashard или блокировка запроса

Транзакция не применяется на всех шардахТранзакция не применяется на всех шардах

Причина: для кросс-шардовых операций не включена двухфазная фиксация.
Решение: включите двухфазную фиксацию:

BEGIN;
SET __spqr__commit_strategy TO '2pc';
INSERT INTO orders ...; /* затрагивает несколько шардов */
COMMIT;

Важно

Параметр max_prepared_transactions должен быть строго больше нуля на всех шардах.

Запросы не направляются на новый шардЗапросы не направляются на новый шард

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

  • Включить настройку show_notice_message.

  • Использовать виртуальный параметр /* __spqr__reply_notice: true */.

    Виртуальные параметры можно задавать комментариями в SQL или через SET.

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

Решение:

  • Проверьте, отображается ли новый шард в Sharded PostgreSQL (SHOW shards).
  • Если вы используете шардированную таблицу, убедитесь, что данные должны быть именно на этом шарде (SHOW key_ranges).
  • Если вы используете справочную таблицу, убедитесь, что таблица создана именно на этом шарде (SHOW reference_relations).

Ошибка failed to get connection to any shard host within при подключении к хостам кластераОшибка failed to get connection to any shard host within при подключении к хостам кластера

Пример ошибки:

failed to get connection to any shard host within: host {rc1d-cofs7cre********.mdb.yandexcloud.net:6432 rc1d}: dial tcp 10.151.25.35:6432: i/o timeout, host {rc1b-49796b52********.mdb.yandexcloud.net:6432 rc1b}: dial tcp 10.149.25.23:6432: i/o timeout, host {rc1a-kdm7v4qm********.mdb.yandexcloud.net:6432 rc1a}: dial tcp 10.148.25.15:6432: i/o timeout

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

Решение:

  1. Убедитесь, что кластер Managed Service for Sharded PostgreSQL и шарды находятся в одной сети и в одной группе безопасности.

  2. В группу безопасности добавьте правила для входящего и исходящего трафика, разрешающие TCP-подключение на порт 6432:

    • Диапазон портов — 6432.
    • Протокол — TCP.
    • Назначение — CIDR.
    • CIDR блоки — укажите CIDR кластера, например 10.96.0.0/16.

Ошибка error processing query ... : syntax error при выполнении запросаОшибка error processing query ... : syntax error при выполнении запроса

Эта ошибка возникает из-за внутренних проблем Sharded PostgreSQL, а не из-за синтаксических ошибок в вашем SQL-запросе. Sharded PostgreSQL использует собственный парсер SQL, который может не поддерживать некоторые нюансы:

  • специфические операторы PostgreSQL;
  • редкие варианты синтаксиса;
  • нестандартные функции.

Решение: сообщите о проблеме разработчикам Sharded PostgreSQL — создайте issue в репозитории проекта на Github, приложите полный текст запроса.

Ошибка permission denied for schemaОшибка permission denied for schema

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

Решение: Выдайте права на схему пользователю командой GRANT ALL ON SCHEMA <имя_схемы> TO <имя_пользователя>; на нужном шарде или на всех шардах.

Ошибка failed to find primary within hostОшибка failed to find primary within host

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

Возможные причины:

  • Сетевые проблемы между роутером и шардом.
  • Перегрузка шарда (например, высокий показатель CPU wait).
  • Неверные настройки target-session-attrs (например, read-only при запросе на запись).

Решение:

  • Убедитесь, что сетевая связность между роутером и шардом не нарушена.
  • Увеличьте вычислительные ресурсы в кластере PostgreSQL, который является перегруженным шардом.
  • Проверьте соответствие настроек target-session-attrs вашему запросу.

Примечание

Предположительно, проблема была исправлена в релизе 2.9.0. Если вы видите эту ошибку в логах, создайте issue в репозитории проекта на Github.

Ошибка failed to match any datashard или блокировка запросаОшибка failed to match any datashard или блокировка запроса

Ошибка возникает, если роутер не может соотнести запрос с конкретным диапазоном ключей шардирования. Например, если параметр конфигурации роутера default_route_behaviour имеет значение BLOCK, запросы без ключа шардирования блокируются.

Решение:

  • Измените поведение роутера при сопоставлении запросов:

    • Перманентно — в конфигурации роутера установите для параметра default_route_behaviour значение ALLOW.
    • Временно — через виртуальный параметр /* __spqr__default_route_behaviour: allow */.
  • Проверьте:

    • Корректность ключа шардирования в запросе: название ключа в запросе должно соответствовать названию ключа в метаданных Sharded PostgreSQL.
    • Наличие правил шардирования (SHOW distributions).
    • Наличие таблиц (SHOW relations).
    • Наличие диапазонов (SHOW key_ranges).
  • Для мультишардовых запросов активируйте engine_v2 через виртуальный параметр /* __spqr__engine_v2: true */.

Виртуальные параметры можно задавать комментариями в SQL или через SET.

Была ли статья полезна?

Предыдущая
Ограничения
Следующая
Все вопросы на одной странице
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ТОО «Облачные Сервисы Казахстан»