Логическая репликация и декларативное разбиение в 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 ответов
Нет, логическая репликация не может реплицироваться из и в декларативные многораздельные таблицы.
На данный момент логическая репликация работает только для базовых таблиц.
Смотрите эту страницу документации:
Репликация возможна только из базовых таблиц в базовые таблицы. То есть таблицы на публикации и на стороне подписки должны быть обычными, а не представлениями, материализованными представлениями, корневыми таблицами разделов или сторонними таблицами. Таким образом, в случае разделов вы можете реплицировать иерархию разделов один-к-одному, но в настоящее время вы не можете выполнить репликацию в другой раздел с разделами. Попытки реплицировать таблицы, отличные от базовых, приведут к ошибке.