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

Ограничения

примечание

Эта страница переведена при помощи нейросети GigaChat.

В настоящее время логическая репликация имеет следующие ограничения или отсутствующую функциональность. Эти вопросы могут быть решены в будущих выпусках.

  • База данных и команды DDL не реплицируются. Начальная схема может быть скопирована вручную с использованием pg_dump --schema-only. Последующие изменения схемы должны будут поддерживаться вручную (однако нет необходимости, чтобы схемы были абсолютно одинаковыми на обеих сторонах). Логическая репликация устойчива при изменении определений схемы в рабочей базе данных: когда схема изменяется на издателя и реплицированные данные начинают поступать к подписчику, но не соответствуют схеме таблицы, репликация будет выдавать ошибку до тех пор, пока схема не будет обновлена. Во многих случаях можно избежать периодических ошибок, применив дополнительные изменения схемы к подписчику первым.
  • Последовательные данные не реплицируются. Данные в последовательных или идентифицирующих столбцах, поддерживаемых последовательностями, будут реплицированы как часть таблицы, но сама последовательность все равно будет показывать начальное значение на подписчике. Если подписчик используется в качестве базы данных только для чтения, то обычно это не должно быть проблемой. Однако если предполагается какой-то вид переключения или отказа на базу данных подписчика, то последовательности должны быть обновлены до последних значений либо путем копирования текущих данных с издателя (возможно, с использованием pg_dump), либо путем определения достаточно высокого значения из самих таблиц.
  • Поддерживается репликация команд TRUNCATE, но следует соблюдать осторожность при усечении групп таблиц, связанных внешними ключами. При репликации действия усечения подписчик будет усекать ту же группу таблиц, которая была усечена на издателе, либо явно указанную, либо неявно собранную через CASCADE, за исключением таблиц, которые не являются частью подписки. Это будет работать правильно, если все затронутые таблицы входят в одну и ту же подписку. Но если некоторые таблицы, которые должны быть усечены на подписчике, имеют внешние ключи к таблицам, которые не входят в ту же самую (или любую) подписку, то применение действия усечения на подписчике завершится сбоем.
  • Большие объекты (смотрите раздел «Большие объекты») не реплицируются. Для этого нет обходного пути, кроме хранения данных в обычных таблицах.
  • Репликация поддерживается только для таблиц, включая разбиение таблиц. Попытки реплицировать другие типы отношений, такие как представления, материализованные представления или внешние таблицы, приведут к ошибке.
  • При репликации между партиционированными таблицами фактическая репликация по умолчанию исходит от конечных разделов на издателя, поэтому разделы на издателя также должны существовать на подписчике в качестве допустимых целевых таблиц. Они могут быть либо сами конечными разделами, либо они могут быть дополнительно подразделены, либо это могут быть даже независимые таблицы. Публикации также могут указывать, что изменения следует реплицировать с использованием идентичности и схемы корневой партиционированной таблицы вместо отдельных конечных разделов, в которых фактически происходят изменения (смотрите CREATE PUBLICATION).