powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Разбираюсь с лог. репликацией.
26 сообщений из 26, показаны все 2 страниц
Разбираюсь с лог. репликацией.
    #39942885
комит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На мастере (издатель)

Доброго дня, коллеги.

Код: sql
1.
2.
3.
4.
5.
create table test_replication(id int);

INSERT INTO test_replication SELECT * FROM generate_series(1000,2000);

CREATE PUBLICATION mypublication FOR TABLE test_replication;




На слэйве (подписчик)

Код: sql
1.
2.
3.
4.
5.
6.
7.
create table test_replication(id int);

CREATE SUBSCRIPTION mysub
         CONNECTION 'host=10.0.0.1 port=5432 user=postgres password=postgres dbname=test_replication1'
        PUBLICATION mypublication
WITH (create_slot=false)
        ;



При этом при добавлении новых строк в test_replication в издателе, у подписчика как была пустая таблица так и остается.


Подскажите как сделать чтобы у подписчика таблица имела изменения с издателя?
...
Рейтинг: 0 / 0
Разбираюсь с лог. репликацией.
    #39942941
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
комит,

wal_level меняли?
...
Рейтинг: 0 / 0
Разбираюсь с лог. репликацией.
    #39942942
комит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Лузанов
комит,

wal_level меняли?


нет, стоит реплика.

я хотел чтобы он как-нибудь без слота репликации заработал. Это невозможно?
...
Рейтинг: 0 / 0
Разбираюсь с лог. репликацией.
    #39942944
комит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Лузанов,

поменял на лоджикал





Теперь при создании


Код: sql
1.
2.
3.
4.
CREATE SUBSCRIPTION mysub
         CONNECTION 'host=10.0.0.1 port=5432 user=postgres password=postgres dbname=test_replication1'
        PUBLICATION mypublication
        ;



висит на

LibPQWalReceiverReceive



Посмотрел, это ждет что-то от WAL .


WAL переключил.

но все равно висит.


издатель и подписчик на одном кластере в разных БД.
...
Рейтинг: 0 / 0
Разбираюсь с лог. репликацией.
    #39942948
комит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
висит уже 15 минут.

что делать? о_О
...
Рейтинг: 0 / 0
Разбираюсь с лог. репликацией.
    #39942955
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
комит,

1. wal_level=locical нужно на сервере публикации поставить.
2. Я бы удалил и пересоздал саму публикацию.
3. После этого уже создавать подписку. Причем со слотом, если вы не собираетесь слот создавать позже и подключать отдельно.
...
Рейтинг: 0 / 0
Разбираюсь с лог. репликацией.
    #39942958
комит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Лузанов
комит,

1. wal_level=locical нужно на сервере публикации поставить.
2. Я бы удалил и пересоздал саму публикацию.
3. После этого уже создавать подписку. Причем со слотом, если вы не собираетесь слот создавать позже и подключать отдельно.



1 Поставил

2 публикацию не пересоздавал.

Создал слот репликации вручную.

3 Подписка создалась
WITH (create_slot=false, slot_name=node_a_slot)





Но в таблице подписчика все равно пусто, даже при добавлении новых строк в таблицу в издателе.


Как сделать чтобы строки в таблице появились?
...
Рейтинг: 0 / 0
Разбираюсь с лог. репликацией.
    #39942961
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
комит,

Вопрос банальный, но всё-таки: после установки wal_level сервер издателя перезагружали?

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

И только потом заниматься подпиской.
...
Рейтинг: 0 / 0
Разбираюсь с лог. репликацией.
    #39942966
комит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Лузанов
комит,

Вопрос банальный, но всё-таки: после установки wal_level сервер издателя перезагружали?

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

И только потом заниматься подпиской.


Да, конечно перезапускал.

Первичный ключ отсуствует сейчас создам.

Сейчас стараюсь наступить на как можно большее количество граблей специально.
...
Рейтинг: 0 / 0
Разбираюсь с лог. репликацией.
    #39942974
комит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Лузанов
комит,

Вопрос банальный, но всё-таки: после установки wal_level сервер издателя перезагружали?

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

И только потом заниматься подпиской.




Создал первыичный ключ на обоих таблицах (издатель и подписчик).

Пересоздал публикацию.

Пересоздал подписку.



Перезаполнил таблицу у издателя данными.



У подписчика данные не появляются.



Что делать? о_о
...
Рейтинг: 0 / 0
Разбираюсь с лог. репликацией.
    #39942976
комит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT * from pg_replication_slots


показывает что слот есть, но active у него f

Код: sql
1.
2.
slot_name;plugin;slot_type;datoid;database;temporary;active;active_pid;xmin;catalog_xmin;restart_lsn;confirmed_flush_lsn
node_a_slot;;physical;;;f;f;;;;;
...
Рейтинг: 0 / 0
Разбираюсь с лог. репликацией.
    #39942978
комит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Слот создавал так:


Код: sql
1.
SELECT * FROM pg_create_physical_replication_slot('node_a_slot');
...
Рейтинг: 0 / 0
Разбираюсь с лог. репликацией.
    #39942979
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
комит,

Вы же специально решили на все грабли наступать?
Слот нужен логический, а не физический.
...
Рейтинг: 0 / 0
Разбираюсь с лог. репликацией.
    #39942980
комит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Лузанов
комит,

Вы же специально решили на все грабли наступать?
Слот нужен логический, а не физический.


Вот жеж.....



сейчас будет логический)
...
Рейтинг: 0 / 0
Разбираюсь с лог. репликацией.
    #39942989
комит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Лузанов,

так, поспешил с "сейчас будет..."





Создаёт новый логический (декодирующий) слот репликации с именем slot_name, используя модуль вывода plugin.








При создании логического слота требуется второй обязательный параметр, плагин.


А где его брать? о_О


pg_create_logical_replication_slot('my_slot', 'wal2json');


так не работает:

ОШИБКА: нет доступа к файлу "wal2json": Нет такого файла или каталога



Что можно указать чтобы работало?
...
Рейтинг: 0 / 0
Разбираюсь с лог. репликацией.
    #39942992
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
комит,

Например можно создать подписку со слотом, а затем посмотреть с какой plugin используется.
...
Рейтинг: 0 / 0
Разбираюсь с лог. репликацией.
    #39943060
комит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Лузанов
комит,

Например можно создать подписку со слотом, а затем посмотреть с какой plugin используется.



Так и сделал.


плагин там:
pgoutput



НО таблица в подписчике все равно пустая и при добавлении данных в издателя все равно пустая (((
...
Рейтинг: 0 / 0
Разбираюсь с лог. репликацией.
    #39943062
комит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
первичные ключи есть и на подписчике и на издателе ((
...
Рейтинг: 0 / 0
Разбираюсь с лог. репликацией.
    #39943064
комит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Публикацию пересоздавал.
...
Рейтинг: 0 / 0
Разбираюсь с лог. репликацией.
    #39943065
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
комит,

Где создаете слот? Надеюсь на издателе.

Посмотрите пример настройки логической репликации, может найдете причину.
...
Рейтинг: 0 / 0
Разбираюсь с лог. репликацией.
    #39943070
комит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Лузанов
комит,

Где создаете слот? Надеюсь на издателе.

Посмотрите пример настройки логической репликации, может найдете причину.



Слот создался автоматически на издателе.
Строка соединения рабочая - проверил на дблинке.

Смотрю ссылочку.
...
Рейтинг: 0 / 0
Разбираюсь с лог. репликацией.
    #39943072
комит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Лузанов,

Посомтрел сылочку.

Я так же и делаю.

Но в pg_stat_subscription пусто на подписчике.

Сейчас попробую 1 в 1 оттуда взять.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Разбираюсь с лог. репликацией.
    #40087237
Guzya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Удалось ли решить проблему?

У меня все то же самое.

Создаю слот руками, потом создаю подписку, но слот остается не активным и ни чего не происходит.
...
Рейтинг: 0 / 0
Разбираюсь с лог. репликацией.
    #40087272
Guzya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
После create subscription не появляется процесс logical replication worker.

Код: sql
1.
select * from pg_stat_activity where backend_type ~'logical replication worker' \gx



дает 0.

При этом на другом менее загруженном тестовом сервере все нормально отработало.
А на этом (загруженном) тестовом сервере, все создается, но не работает.
...
Рейтинг: 0 / 0
Разбираюсь с лог. репликацией.
    #40087358
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Guzya,

смотрите логи базы.
...
Рейтинг: 0 / 0
Разбираюсь с лог. репликацией.
    #40087384
Guzya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В логе ни чего такого не вижу

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
cat /var/log/postgresql/postgresql-11-main.log.1|grep -B1 -A1 'logical'

2021-07-30 02:04:19.361 AST [971] LOG:  background worker "pgsentinel" (PID 22722) exited with exit code 1
2021-07-30 02:04:19.793 AST [30658] postgres@db_master LOG:  logical decoding found initial consistent point at DDB/7EE1D998
2021-07-30 02:04:19.793 AST [30658] postgres@db_master DETAIL:  Waiting for transactions (approximately 4) older than 3507682729 to end.
2021-07-30 02:04:19.793 AST [30658] postgres@db_master STATEMENT:  SELECT pg_create_logical_replication_slot('db_master_slot', 'pgoutput');
2021-07-30 02:04:20.008 AST [30658] postgres@db_master LOG:  logical decoding found consistent point at DDB/7EE34F78
2021-07-30 02:04:20.008 AST [30658] postgres@db_master DETAIL:  There are no old transactions anymore.
2021-07-30 02:04:20.008 AST [30658] postgres@db_master STATEMENT:  SELECT pg_create_logical_replication_slot('db_master_slot', 'pgoutput');
2021-07-30 02:04:21.370 AST [23080] LOG:  starting bgworker pgsentinel
--
2021-07-30 03:12:25.808 AST [971] LOG:  background worker "pgsentinel" (PID 2585) exited with exit code 1
2021-07-30 03:12:25.939 AST [648] postgres@db_master LOG:  logical decoding found initial starting point at DDB/DCEF2D80
2021-07-30 03:12:25.939 AST [648] postgres@db_master DETAIL:  Waiting for transactions (approximately 12) older than 3508856238 to end.
2021-07-30 03:12:25.939 AST [648] postgres@db_master STATEMENT:  SELECT pg_create_logical_replication_slot('db_master_slot', 'pgoutput');
2021-07-30 03:12:27.812 AST [2933] LOG:  starting bgworker pgsentinel
--
2021-07-30 03:14:17.022 AST [971] LOG:  background worker "pgsentinel" (PID 14812) exited with exit code 1
2021-07-30 03:14:17.084 AST [648] postgres@db_master LOG:  logical decoding found initial consistent point at DDB/E0F94960
2021-07-30 03:14:17.084 AST [648] postgres@db_master DETAIL:  Waiting for transactions (approximately 7) older than 3508891651 to end.
2021-07-30 03:14:17.084 AST [648] postgres@db_master STATEMENT:  SELECT pg_create_logical_replication_slot('db_master_slot', 'pgoutput');
2021-07-30 03:14:19.026 AST [15144] LOG:  starting bgworker pgsentinel
--
2021-07-30 03:16:44.807 AST [409] LOG:  starting bgworker pgsentinel
2021-07-30 03:16:46.046 AST [648] postgres@db_master LOG:  logical decoding found consistent point at DDB/E35A1B38
2021-07-30 03:16:46.046 AST [648] postgres@db_master DETAIL:  There are no old transactions anymore.
2021-07-30 03:16:46.046 AST [648] postgres@db_master STATEMENT:  SELECT pg_create_logical_replication_slot('db_master_slot', 'pgoutput');
2021-07-30 03:16:46.664 AST [409] ERROR:  backend with pid=405 not found
...
Рейтинг: 0 / 0
26 сообщений из 26, показаны все 2 страниц
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Разбираюсь с лог. репликацией.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]