Логическая репликация и декларативное разбиение в PostgreSQL 11

У меня обычный стол transactions с 200 миллионами строк.

Я решил преобразовать эту таблицу в декларативный раздел с помощью логической репликации.

Я создал публикацию на node1 примерно так:

CREATE PUBLICATION transactions_pub FOR TABLE transactions;

Когда я пытаюсь создать подписку на узле 2, как показано ниже:

CREATE SUBSCRIPTION transactions_sub CONNECTION 'host=x.x.x.x port=5432 password=123456 user=replicator dbname=mydbname' PUBLICATION transactions_pub;

Возвращает эту ошибку:

ERROR:  logical replication target relation "public.transactions" is not a table

Можно ли реплицировать обычную таблицу в декларативную таблицу разделов с помощью логической репликации?

0 ответов

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

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

Смотрите эту страницу документации:

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

Другие вопросы по тегам