Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
 Физическая репликация. Syncronuos_commit  [new]
vital8111
Member

Откуда:
Сообщений: 18
Добрый вечер.
Postgresql 11(но пробовал на разныхот 9.6 до 13. поведение идентичное)
Настроил физическую репликацию.
Как только включаю synchronous_commit транзакции виснут. Изменения на реплике видны. но на мастере транзакция висит ожидает сигнала с реплики.
значение synchronous_standby_names совпадает с именем replication_slot.
При отмене сообщение
WARNING: canceling wait for synchronous replication due to user request
DETAIL: The transaction has already committed locally, but might not have been replicated to the standby.
На реплике все есть но сигнал о получении не получен.
Подскажите плз куда рыть

Сообщение было отредактировано: 22 апр 21, 21:00
22 апр 21, 21:05    [22312803]     Ответить | Цитировать Сообщить модератору
 Re: Физическая репликация. Syncronuos_commit  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 4719
vital8111
Добрый вечер.
Postgresql 11(но пробовал на разныхот 9.6 до 13. поведение идентичное)
Настроил физическую репликацию.
Как только включаю synchronous_commit транзакции виснут. Изменения на реплике видны. но на мастере транзакция висит ожидает сигнала с реплики.
значение synchronous_standby_names совпадает с именем replication_slot.
При отмене сообщение
WARNING: canceling wait for synchronous replication due to user request
DETAIL: The transaction has already committed locally, but might not have been replicated to the standby.
На реплике все есть но сигнал о получении не получен.
Подскажите плз куда рыть


1)покажите что у вас в select * from pg_stat_replication; на мастере

2)покажите что ИМЕННО у вас в конфиге написано для synchronous_standby_names, synchronous_commit

3)что прописано в primary_conninfo на синхронной реплике

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
22 апр 21, 22:59    [22312846]     Ответить | Цитировать Сообщить модератору
 Re: Физическая репликация. Syncronuos_commit  [new]
vital8111
Member

Откуда:
Сообщений: 18

-[ RECORD 1 ]----+------------------------------
pid | 4652
usesysid | 16384
usename | username
application_name | walreceiver
client_addr | IP
client_hostname |
client_port | 58246
backend_start | 2021-04-23 07:45:47.191778+03
backend_xmin |
state | streaming
sent_lsn | 0/58C46578
write_lsn | 0/58C46578
flush_lsn | 0/58C46578
replay_lsn | 0/58C46578
write_lag |
flush_lag |
replay_lag |
sync_priority | 0
sync_state | async



synchronous_commit = 'on'
synchronous_standby_names = 'replica'



standby_mode = 'on'
primary_conninfo = 'user=username password=password channel_binding=prefer host=IP port=5432 sslmode=prefer sslcompression=0 ssl_min_protocol_version=TLSv1.2 gssencmode=prefer krbsrvname=postgres target_session_attrs=any'
primary_slot_name = 'replica'


Сообщение было отредактировано: 23 апр 21, 08:34
23 апр 21, 08:40    [22312935]     Ответить | Цитировать Сообщить модератору
 Re: Физическая репликация. Syncronuos_commit  [new]
vital8111
Member

Откуда:
Сообщений: 18
Если ставлю
synchronous_standby_names = '*'
то вроде переключается на sync но работает как то странно
Можно поймать момент когда на реплике нет данных с мастера
23 апр 21, 10:08    [22312983]     Ответить | Цитировать Сообщить модератору
 Re: Физическая репликация. Syncronuos_commit  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 4719
vital8111,

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

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
23 апр 21, 10:09    [22312986]     Ответить | Цитировать Сообщить модератору
 Re: Физическая репликация. Syncronuos_commit  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 4719
vital8111
Если ставлю
synchronous_standby_names = '*'
то вроде переключается на sync но работает как то странно
Можно поймать момент когда на реплике нет данных с мастера


а собственно synchronous_commit = 'on' и не гарантирует что на реплике будет автоматически видно то что вы на мастере закомитили.
он не про это (в умолчательном поведении).
Еще раз рекомендую почитать документацию на этот раз про synchronous_commit в части
https://www.postgresql.org/docs/13/runtime-config-wal.html#GUC-SYNCHRONOUS-COMMIT

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
23 апр 21, 10:12    [22312991]     Ответить | Цитировать Сообщить модератору
 Re: Физическая репликация. Syncronuos_commit  [new]
vital8111
Member

Откуда:
Сообщений: 18
Maxim Boguk
vital8111,

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

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru


Так как я сделал меня научили на курсах. Говорили делать именно так.
Да и курсы то не в шараге были а во вполне серьезной организации. У всех на курсе заработало кроме меня)
23 апр 21, 10:40    [22313009]     Ответить | Цитировать Сообщить модератору
 Re: Физическая репликация. Syncronuos_commit  [new]
vital8111
Member

Откуда:
Сообщений: 18
Maxim Boguk
vital8111
Если ставлю
synchronous_standby_names = '*'
то вроде переключается на sync но работает как то странно
Можно поймать момент когда на реплике нет данных с мастера


а собственно synchronous_commit = 'on' и не гарантирует что на реплике будет автоматически видно то что вы на мастере закомитили.
он не про это (в умолчательном поведении).
Еще раз рекомендую почитать документацию на этот раз про synchronous_commit в части
https://www.postgresql.org/docs/13/runtime-config-wal.html#GUC-SYNCHRONOUS-COMMIT

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru


Благодарю. Прочитаю
23 апр 21, 10:42    [22313012]     Ответить | Цитировать Сообщить модератору
 Re: Физическая репликация. Syncronuos_commit  [new]
Melkij
Member

Откуда: Санкт-Петербург
Сообщений: 1285
Вроде же более чем однозначно указано для 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. In case of a physical replication standby, this should be set in the primary_conninfo setting; the default is the setting of cluster_name if set, else walreceiver.

С чего вы решили, что оно как-то связано с primary_slot_name?
23 апр 21, 10:47    [22313016]     Ответить | Цитировать Сообщить модератору
 Re: Физическая репликация. Syncronuos_commit  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 4719
vital8111
Maxim Boguk
vital8111,

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

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru


Так как я сделал меня научили на курсах. Говорили делать именно так.
Да и курсы то не в шараге были а во вполне серьезной организации. У всех на курсе заработало кроме меня)


При любых вопросах начинайте с документации официальной... сэкономит кучу времени.
А курсы... курсы люди пишут и слушают... и ошибаются.


--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
23 апр 21, 10:52    [22313022]     Ответить | Цитировать Сообщить модератору
 Re: Физическая репликация. Syncronuos_commit  [new]
vital8111
Member

Откуда:
Сообщений: 18
Спасибо. В синхронный режим переключилось
Поставил remote_apply. Тестировщики будут тестить
Теперь осталось понять как поменять application_name
А то 'walreceiver' ак то не интересно
23 апр 21, 11:02    [22313026]     Ответить | Цитировать Сообщить модератору
 Re: Физическая репликация. Syncronuos_commit  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 4719
vital8111
Спасибо. В синхронный режим переключилось
Поставил remote_apply. Тестировщики будут тестить
Теперь осталось понять как поменять application_name
А то 'walreceiver' ак то не интересно


вам же уже процитировали с документации...

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. In case of a physical replication standby, this should be set in the primary_conninfo setting; the default is the setting of cluster_name if set, else walreceiver.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
23 апр 21, 11:05    [22313030]     Ответить | Цитировать Сообщить модератору
 Re: Физическая репликация. Syncronuos_commit  [new]
vital8111
Member

Откуда:
Сообщений: 18
Maxim Boguk
vital8111
Спасибо. В синхронный режим переключилось
Поставил remote_apply. Тестировщики будут тестить
Теперь осталось понять как поменять application_name
А то 'walreceiver' ак то не интересно


вам же уже процитировали с документации...

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. In case of a physical replication standby, this should be set in the primary_conninfo setting; the default is the setting of cluster_name if set, else walreceiver.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru


Да это то я понял. Надо пример накопать как настраивается

З.Ы. Все разобрался. Спасибо огромное

Сообщение было отредактировано: 23 апр 21, 11:32
23 апр 21, 11:37    [22313058]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить