Я использую Posgtre sql 10.
Я хочу скопировать 2 таблицы из базы данных "db" в те же две таблицы с одинаковыми столбцами в базе данных "destination".
изменено значение wal_level логически в postgresql .conf и max_replication_slots до 10
без брандмауэра
Я создал публикацию в базе данных "db"
ALTER ROLE my_user WITH REPLICATION LOGIN PASSWORD 'my_password';
CREATE PUBLICATION my_publication;
ALTER PUBLICATION my_publication ADD TABLE table1;
ALTER PUBLICATION my_publication ADD TABLE table2;
Я создал подписку в базе данных «назначение» со слотом, потому что я хочу выполнить репликацию на том же сервере:
SELECT pg_create_logical_replication_slot('test_slot_v1', 'pgoutput');
CREATE SUBSCRIPTION my_subscription CONNECTION 'host=localhost port=5432 password=my_password user=my_user dbname=db' PUBLICATION my_publication WITH (slot_name=test_slot_v1, create_slot=false);
alter subscription my_subscription refresh publication ;
Первая репликация работает. Затем, когда я изменяю значение одной записи varchar (не FK), это значение не реплицируется, и в журналах postgres появляется следующая ошибка:
2020-04-12 16: 16 : 57.886 CEST [720474] LOG: запущен процесс применения логической репликации для подписки «my_subscription» 2020-04-12 16: 16: 57.888 CEST [720475] ОШИБКА: слот репликации «test_slot_v1» не был создан в этой базе данных 2020 -04-12 16: 16: 57.889 CEST [720474] ОШИБКА: не удалось получить данные из потока WAL: ОШИБКА: слот репликации "test_slot_v1" не был создан в этой базе данных 2020-04-12 16 : 16: 57.890 CEST [712133] LOG: рабочий процесс: рабочий логической репликации для выхода по подписке 245251 (PID 720474) с кодом выхода 1
Я уверен, что создал слот в базе данных "назначение" ", который держит подписку.
Есть идеи? Заранее спасибо.