powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Почему-то не работает синхронная репликация (всё работает асинхронно)
7 сообщений из 7, страница 1 из 1
Почему-то не работает синхронная репликация (всё работает асинхронно)
    #39988589
MinistrBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет, может кто подскажет, почему-то не работает синхронная репликация (всё работает асинхронно)

Настройки на мастере
wal_level = replica
fsync = on
synchronous_commit = on
max_wal_senders = 10
wal_keep_segments = 512
synchronous_standby_names = 'ANY 1 (post122, post124)'


Слейв 1:
wal_level = replica
fsync = on
synchronous_commit = on
max_wal_senders = 10
wal_keep_segments = 512
primary_conninfo = 'host=10.128.241.123 port=5432 user=replica application_name=app124'
primary_slot_name = 'slot124'
hot_standby = on

Слейв 2:
wal_level = replica
fsync = on
synchronous_commit = on
max_wal_senders = 10
wal_keep_segments = 512
primary_conninfo = 'host=10.128.241.123 port=5432 user=replica application_name=app122'
primary_slot_name = 'slot122'
hot_standby = on

Если выполнить запрос
Код: plsql
1.
SELECT pg_wal_lsn_diff(pg_current_wal_lsn(), s.sent_lsn) AS send_byte_lag, pg_wal_lsn_diff(s.sent_lsn,s.replay_lsn) AS replay_byte_lag, * FROM pg_stat_replication s;


то видно что sync_state = async для всех узлов.
А еще показалось подозрительным такой момент, в настройках slave указаны application_name=app124 а в select application_name=walreceiver как-будто application_name не распознаётся.

"send_byte_lag""replay_byte_lag""pid""usesysid""usename""application_name""client_addr""client_hostname""client_port""backend_start""backend_xmin""state""sent_lsn""write_lsn""flush_lsn""replay_lsn""write_lag""flush_lag""replay_lag""sync_priority""sync_state""reply_time""0""0"1491469296"replica""walreceiver""10.128.241.122"NULL60010"2020-07-27 11:49:35.202751+03"NULL"streaming""BA5/D20002D0""BA5/D20002D0""BA5/D20002D0""BA5/D20002D0"NULLNULLNULL0"async""2020-08-11 11:05:22.398199+03""0""0"1491369296"replica""walreceiver""10.128.241.124"NULL47916"2020-07-27 11:49:35.202262+03"NULL"streaming""BA5/D20002D0""BA5/D20002D0""BA5/D20002D0""BA5/D20002D0"NULLNULLNULL0"async""2020-08-11 11:05:21.838096+03""0"NULL1495285885"streaming_barman""barman_receive_wal""10.128.241.223"NULL53304"2020-07-27 11:50:01.795733+03"NULL"streaming""BA5/D20002D0""BA5/D20002D0""BA5/D2000000"NULL"00:00:07.658259""65:31:39.378476""359:15:13.971633"0"async""2020-08-11 11:05:15.781336+03"

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

Код: sql
1.
select name, setting from pg_settings where name in ('synchronous_commit','synchronous_standby_names');
...
Рейтинг: 0 / 0
Почему-то не работает синхронная репликация (всё работает асинхронно)
    #39988613
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MinistrBob

synchronous_standby_names = 'ANY 1 ( post122, post124 )'

primary_conninfo = 'host=10.128.241.123 port=5432 user=replica application_name= app124 '
primary_conninfo = 'host=10.128.241.123 port=5432 user=replica application_name= app122 '


https://www.postgresql.org/docs/current/runtime-config-replication.html#GUC-SYNCHRONOUS-STANDBY-NAMES
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.

Так почему эти реплики в принципе могут быть кандидатами для синхронной репликации?

MinistrBob
А еще показалось подозрительным такой момент, в настройках slave указаны application_name=app124 а в select application_name=walreceiver как-будто application_name не распознаётся.

Проверьте сколько раз у вас primary_conninfo указан в конфигах.
Код: sql
1.
select * from pg_file_settings where name ='primary_conninfo';


В частности
...
Рейтинг: 0 / 0
Почему-то не работает синхронная репликация (всё работает асинхронно)
    #39988628
MinistrBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Guzya,

Код: plaintext
1.
"synchronous_commit"	"on"
"synchronous_standby_names"	"ANY 1 (post122, post124)"
...
Рейтинг: 0 / 0
Почему-то не работает синхронная репликация (всё работает асинхронно)
    #39988630
MinistrBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkij,

Вот я шляпа, уже post от app не отличаю. Глаз замылился совершенно. Сейчас исправлю.
...
Рейтинг: 0 / 0
Почему-то не работает синхронная репликация (всё работает асинхронно)
    #39988631
Guzya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не могу не спросить, а почему репликация не висла, ведь подтверждения не было?
...
Рейтинг: 0 / 0
Почему-то не работает синхронная репликация (всё работает асинхронно)
    #39988690
MinistrBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался:

1) Была опечатка. Спасибо @Melkij. В synchronous_standby_names на master использовался application_name (post122, post124) а на slave в primary_conninfo (app122, app124).
Сделал на master
synchronous_standby_names = 'FIRST 1 (app124, app122, barman_receive_wal)'

Но это не помогло, потому что

2) В postgresql.auto.conf был еще один primary_conninfo на обоих slave.
Убрал через ALTER SYSTEM RESET ALL

Синхронная репликация заработала.

Теперь такие настройки (synchronous_commit решил выставить в remote_write)

Настройки на Master
wal_level = replica
fsync = on
synchronous_commit = remote_write
max_wal_senders = 10
wal_keep_segments = 512
synchronous_standby_names = 'FIRST 1 ( app124, app122 , barman_receive_wal)'


Slave 1:
wal_level = replica
fsync = on
synchronous_commit = remote_write
max_wal_senders = 10
wal_keep_segments = 512
primary_conninfo = 'host=10.128.241.123 port=5432 user=replica application_name=app124'
primary_slot_name = 'slot124'
hot_standby = on

Slave 2:
wal_level = replica
fsync = on
synchronous_commit = remote_write
max_wal_senders = 10
wal_keep_segments = 512
primary_conninfo = 'host=10.128.241.123 port=5432 user=replica application_name=app122'
primary_slot_name = 'slot122'
hot_standby = on

"send_byte_lag""replay_byte_lag""pid""usesysid""usename""application_name""client_addr""client_hostname""client_port""backend_start""backend_xmin""state""sent_lsn""write_lsn""flush_lsn""replay_lsn""write_lag""flush_lag""replay_lag""sync_priority""sync_state""reply_time""0""0"3826969296"replica""app124""10.128.241.124"NULL46536"2020-08-11 15:39:26.610345+03"NULL"streaming""BA5/D7010708""BA5/D7010708""BA5/D7010708""BA5/D7010708"NULLNULLNULL1"sync""2020-08-11 15:57:01.972806+03""0""0"3827069296"replica""app122""10.128.241.122"NULL58578"2020-08-11 15:39:26.626625+03"NULL"streaming""BA5/D7010708""BA5/D7010708""BA5/D7010708""BA5/D7010708"NULLNULLNULL2"potential""2020-08-11 15:57:01.97172+03""0"NULL3831185885"streaming_barman""barman_receive_wal""10.128.241.223"NULL50770"2020-08-11 15:40:02.10472+03"NULL"streaming""BA5/D7010708""BA5/D7010708""BA5/D7010708"NULL"00:00:00.00168""00:00:00.00168""00:16:59.671909"3"potential""2020-08-11 15:57:01.789078+03"
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Почему-то не работает синхронная репликация (всё работает асинхронно)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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