Логическая репликация и декларативное разбиение в PostgreSQL 11 - PullRequest
0 голосов
/ 30 ноября 2018

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

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 10 января 2019

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

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

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

0 голосов
/ 03 декабря 2018

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

...