Size: a a a

pgsql – PostgreSQL

2020 May 28

YS

Yaroslav Schekin in pgsql – PostgreSQL
Виталий Кухарик
Ну без comment он не те данные получит, поэтому...
Ладно буду молчать.
Да, конечно. Я спрашиваю, чтобы узнать оценку планировщика по этому условию.
источник

ВК

Виталий Кухарик... in pgsql – PostgreSQL
Статистика свежая, выше писали
источник

ВК

Виталий Кухарик... in pgsql – PostgreSQL
Оценка это не то на что нужно смотреть в первую очередь
источник

ВК

Виталий Кухарик... in pgsql – PostgreSQL
Планировщик иногда в тумане
источник

T

The in pgsql – PostgreSQL
Yaroslav Schekin
Я, наверное, пропустил часть обсуждения, но:

> Реакция внешнего инструмента кластеризации на самоизоляцию далеко не мгновенная.

Ну и что? При "самоизоляции" (если не считать bugs) и commit-а не будет, т.е. primary просто "встанет", да и всё.

> Тем более, мастер коммитит в clog независимо от slaves даже при синхронной реплике.

Хмм... о чём именно речь (я как-то сходу не вспомнил)? И, тем не менее, см. выше.

Но, вообще, failover на любую реплику — это disaster, т.е. не стоит его рассматривать иначе, IMHO.
primary попишет в clog, потом встанет, master уйдёт на другой инстанс, и там этих транзакций не будет. Потом старый друг воспрянет, сделает rewind, а данные — поминай, как звали.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
The
primary попишет в clog, потом встанет, master уйдёт на другой инстанс, и там этих транзакций не будет. Потом старый друг воспрянет, сделает rewind, а данные — поминай, как звали.
А кому-то ответили, что они committed? ;)
Ведь нет же — значит, проблемы нет.
источник

ВК

Виталий Кухарик... in pgsql – PostgreSQL
The
primary попишет в clog, потом встанет, master уйдёт на другой инстанс, и там этих транзакций не будет. Потом старый друг воспрянет, сделает rewind, а данные — поминай, как звали.
Для этого rewind false. Но та ещё затея данные сверять.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Виталий Кухарик
Оценка это не то на что нужно смотреть в первую очередь
Это вообще единственное, на что смотрит планировщик.
И это то, что стоит улучшать, если это вообще возможно.
Какие-то другие действия — это попытки "обмануть" планировщик, которые, по сути, являются hinting, и потом, бывает, "аукаются".
источник

ВК

Виталий Кухарик... in pgsql – PostgreSQL
Yaroslav Schekin
А кому-то ответили, что они committed? ;)
Ведь нет же — значит, проблемы нет.
Действительно. Только один момент, данные сначала упали на реплику и не успели зафиксировать на мастере, как тогда)
источник

ВК

Виталий Кухарик... in pgsql – PostgreSQL
При том же remote_apply
источник

ВК

Виталий Кухарик... in pgsql – PostgreSQL
Есть у нас данные этой транзакции или их нет?)
источник

ВК

Виталий Кухарик... in pgsql – PostgreSQL
Кто скажет?
источник

ВК

Виталий Кухарик... in pgsql – PostgreSQL
Клиент подумал что не прошла транзакция
источник

ВК

Виталий Кухарик... in pgsql – PostgreSQL
Новому мастеру шлёп retry с insert в биллинг
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Виталий Кухарик
Действительно. Только один момент, данные сначала упали на реплику и не успели зафиксировать на мастере, как тогда)
Так же.
Любая прерванная в COMMIT транзакция должна клиентскими приложениями (и теми, кто их пишет) считаться завершённой с неопределённым результатом, и если они "думают" иначе — это, опять-таки, их проблемы.
На практике это означает, что завершение транзакции должно определяться по данным.
Эта проблема всегда есть (реплика тут ни при чём), и тому, кто написал приложение иначе, стоит исправить в нём подобные ошибки.
источник

ВК

Виталий Кухарик... in pgsql – PostgreSQL
Yaroslav Schekin
Так же.
Любая прерванная в COMMIT транзакция должна клиентскими приложениями (и теми, кто их пишет) считаться завершённой с неопределённым результатом, и если они "думают" иначе — это, опять-таки, их проблемы.
На практике это означает, что завершение транзакции должно определяться по данным.
Эта проблема всегда есть (реплика тут ни при чём), и тому, кто написал приложение иначе, стоит исправить в нём подобные ошибки.
Это да
источник

ВК

Виталий Кухарик... in pgsql – PostgreSQL
Павел П.
не, минимальные настройки не на тот порт сажали
Более развёрнуто желательно. В каких портах запутались при настройке?
источник

П

Павел П. in pgsql – PostgreSQL
Виталий Кухарик
Более развёрнуто желательно. В каких портах запутались при настройке?
вы еще не спите?)
в patroni.yml в разделе postgresql:parameters: выставляю port: 5437. а в postgresql.conf который
# Do not edit this file manually!
# It will be overwritten by Patroni!
всё равно port = '5432'

в postgresql.auto.conf этого параметра нет
источник

ВК

Виталий Кухарик... in pgsql – PostgreSQL
patronictl edit-config
источник

П

Павел П. in pgsql – PostgreSQL
последовательность действий:
systemctl stop patroni.service
правка patroni.yml
systemctl start patroni.service
источник