172 похожих чатов

Всем привет! поменял тип репликации между двумя серверами на синхронную

(раскомментировал synchronous_standby_names ), и выставил
synchronous_standby_names = 'main'
, где main - имя кластера на стендбае. Сделал pg_con_reload() на мастере, и на стендбае.

Проблема - при создании тестовых объектов на мастере, и/или заполнении их тестовыми данными, выражение как будто не может отработать. Висит себе в бесконечном ожидании чего-то. При нажатии Ctrl+C кидает предупреждение:
отмена ожидания синхронной репликации по запросу пользователя
DETAIL: Транзакция уже была зафиксирована локально, но возможно не была реплицирована на резервный сервер

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

Настройки, касающиеся репликации.
Мастер:
archive_command pgbackrest --stanza=crm-banners archive-push %p
archive_mode on
cluster_name 12/main
listen_addresses *
synchronous_commit on
wal_keep_segments 16
wal_level hot_standby
synchronous_standby_names = 'main'

Стендбай:
archive_command pgbackrest --stanza=crm-banners archive-push %p
archive_mode on
cluster_name 12/main
listen_addresses *
max_wal_senders 10
primary_conninfo user=replica passfile='/var/lib/postgresql/.pgpass' host='мой хост' port=5432 sslmode=prefer sslcompression=0 gssencmode=prefer krbsrvname=postgres target_session_attrs=any

primary_slot_name replication_slot
synchronous_commit on
wal_keep_segments 16
wal_level hot_standby

3 ответов

32 просмотра

Судя по конфигурации имя стендбая не main

вам нужно указывать не имя кластера, а конкретную реплику см. документацию. The name of a standby server for this purpose is the application_name setting of the standby, as set in the standby's connection information.

max-chistyakov Автор вопроса

спасибо!

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
Карта сайта