powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / synchronous multi-master
27 сообщений из 27, показаны все 2 страниц
synchronous multi-master
    #38574690
sterewert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как я понял есть два варианта реализации синхронного мульти-мастера на postgresql. Postgres-XC и PGCluster.
Postgres-XC это обособленная система и в ней нет поддержки триггеров, следовательно имея базу использующую их я не могу построить мульти-мастер. Последний релиз PGCluster аж в 2005 и поддерживает он PostgreSQL8.0.1.

Есть ли еще какие-то варианты реализации этой задачи?
...
Рейтинг: 0 / 0
synchronous multi-master
    #38574707
Фотография Warstone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://postgres-xc.sourceforge.net/docs/1_2_beta/plpgsql-overview.html

В каком месте он не умеет триггеры?..

Row TRIGGER support. By Amit Khandelar and Ashutosh Bapat - http://postgres-xc.sourceforge.net/docs/1_2_beta/release-xc-1-1.html
...
Рейтинг: 0 / 0
synchronous multi-master
    #38574745
Фотография Misha Tyurin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sterewert,

вам не надо этого. какая у вас задача?

не бывает "мультимастеров" в общем виде, от слов совсем и нигде
...
Рейтинг: 0 / 0
synchronous multi-master
    #38574755
sterewert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Warstone,

https://wiki.postgresql.org/wiki/Postgres-XC

Triggers/procedures Procedure: Yes
Trigger not yet
...
Рейтинг: 0 / 0
synchronous multi-master
    #38574761
sterewert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Misha Tyurin,

Нужно. Задачи на пересечении процссинга терминалов и банковского опердня. Обеспечение безотказной работы, без потери данных и простоя. Пока работаем на потоковой репликации, мастер и два слейва (синхронный и асинхронный), сервера распределены территориально, но не очень нравится необходимость ручного переключения мастер/слейв и последующая работа по возвращению мастера на свое место + будет необходимо выключение сервера.
...
Рейтинг: 0 / 0
synchronous multi-master
    #38574766
оно понятно. Вы бы, sterewert, банчок назвали, чтобы случайно не вляпаться.
...
Рейтинг: 0 / 0
synchronous multi-master
    #38574776
sterewert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Охота пуще неволи,,

Это, к счастью, не банк.
...
Рейтинг: 0 / 0
synchronous multi-master
    #38574815
Фотография Warstone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sterewertTrigger not yetИ? А если я на заборе напишу? А я вам показывал официальную доку Пг ХЦ. Ей-то доверять всяко надо.
...
Рейтинг: 0 / 0
synchronous multi-master
    #38574855
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sterewert,

Что я вам со своей колокольник скажу как человек который изучал потроха Postgresql-XC очень плотно.

1)авторсервера распределены территориально
Это 100% и жесткое нет для этой системы... это очень сильносвязанный кластер который КРАЙНЕ чуствителен к сетевым задержкам... и нормально работает только при условии когда они почти нулевые (т.е. только в случае когда весь кластер воткнут в один ВЫДЕЛЕННЫЙ и разумно настроеный коммутатор а не раскиданы непойми где)

2)авторне очень нравится необходимость ручного переключения мастер/слейв
Интересно а почему вы думаетет что в PostgreSQL-XC этого нет? Да там можно сделать надежный кластер но все управление в случае падения нод - оно чисто ручное... и в 10 раз сложнее чем просто при потоковой репликации (там реально очень много возни будет). Да и точек отказа сильно побольше.

PostrgreSQL-XC это не low maintenance высоконадежное решение а решение для случая когда у вас из-за обьема записи один выделенный мастер сервер уже не справляется в принципе... а делать физический шардинг и переделывать приложение изза этого вам не хочется... в таком случае можно попробовать PostgreSQL-XC и получить еще 5-8 раз запас по производительности сделав кластер на 5-10 нод (да и то не всегда в общем то). Но еще раз про требования очень жесткой связности компонент кластера и отсутствия лагов связи.

3)автор+ будет необходимо выключение сервера Это еще зачем? Всегда все (мастер сервер базы) можно было переключать на реплику не останавливая приложение если сделать по уму (максимум 1-2-5 секунд паузы в обработке клиентских запросов).
...
Рейтинг: 0 / 0
synchronous multi-master
    #38575087
sterewert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Warstone,

Полностью с Вами согласен. Но триггеры реализованы в бета версии, которая к тому же не компилится из за отсутствия preproc.h в исходниках (пробовал 2 дня назад). Тикет от 20-го февраля висит на сайте

http://sourceforge.net/p/postgres-xc/mailman/postgres-xc-developers/
...
Рейтинг: 0 / 0
synchronous multi-master
    #38575097
sterewert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,

Спасибо, очень важные комментарии, от человека который с этим сталкивался. Проверять на себе совсем не хотелось бы.
По п.3. я наверное не так выразился, в переключении на реплику при падении основного сервера не проблема, время на создание триггер файла не критично. Проблема в том, что если мы работает в режиме 24/7, то не сможем вернуть мастер обратно на тот сервер где он был изначально, до падения, не останавливая текущий мастер (бывший слейв).
...
Рейтинг: 0 / 0
synchronous multi-master
    #38575194
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sterewertMaxim Boguk,

Спасибо, очень важные комментарии, от человека который с этим сталкивался. Проверять на себе совсем не хотелось бы.
По п.3. я наверное не так выразился, в переключении на реплику при падении основного сервера не проблема, время на создание триггер файла не критично. Проблема в том, что если мы работает в режиме 24/7, то не сможем вернуть мастер обратно на тот сервер где он был изначально, до падения, не останавливая текущий мастер (бывший слейв).

Эээээ?????
" то не сможем вернуть мастер обратно на тот сервер где он был изначально, до падения, не останавливая текущий мастер (бывший слейв)"
Это почему?
Вы кажется что то не так делаете....
...
Рейтинг: 0 / 0
synchronous multi-master
    #38575268
sterewert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,

"Вы кажется что то не так делаете...."
возможно

Упрощенно имеем:
1. Изначально
Сервер А (мастер) - Сервер Б (слейв)
2. После падения сервера А, сервер Б становится мастер
3. После восстановления работоспособности сервера А, каким образом можно его сделать мастером без остановки сервера Б?

Я вижу только вариант:
- делать сервер А слейвом по отношении к серверу Б (мастеру)
- тригер файлом переключать его в режим мастера
- делать сервер Б слейвом по отношению к серверу А (мастеру)

Возможно я не понимаю, как можно без промежуточного этапа вернуть все взад, учитывая невозможность остановки мастера и беспрерывной работы в режиме 24/7
...
Рейтинг: 0 / 0
synchronous multi-master
    #38575292
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sterewertMaxim Boguk,

"Вы кажется что то не так делаете...."
возможно

Упрощенно имеем:
1. Изначально
Сервер А (мастер) - Сервер Б (слейв)
2. После падения сервера А, сервер Б становится мастер
3. После восстановления работоспособности сервера А, каким образом можно его сделать мастером без остановки сервера Б?

Я вижу только вариант:
- делать сервер А слейвом по отношении к серверу Б (мастеру)
- тригер файлом переключать его в режим мастера
- делать сервер Б слейвом по отношению к серверу А (мастеру)

Возможно я не понимаю, как можно без промежуточного этапа вернуть все взад, учитывая невозможность остановки мастера и беспрерывной работы в режиме 24/7

А где в вашем плане проблема? Он совершенно правильный... и максимальный downtime какой там будет секунд 5 (а если аккуратно сделать то 1 секунда).
Т.е. что вам не нравится в той схеме что вы нарисовали?
...
Рейтинг: 0 / 0
synchronous multi-master
    #38575300
Фотография Warstone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sterewertWarstone,

Полностью с Вами согласен. Но триггеры реализованы в бета версии, которая к тому же не компилится из за отсутствия preproc.h в исходниках (пробовал 2 дня назад). Тикет от 20-го февраля висит на сайте

http://sourceforge.net/p/postgres-xc/mailman/postgres-xc-developers/ В каком месте Релиз 1.1 - бета версия?.. Ну прочтите ссылочку-то... 1.1 давно релизнулся.
...
Рейтинг: 0 / 0
synchronous multi-master
    #38575403
sterewert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim BogukА где в вашем плане проблема? Он совершенно правильный... и максимальный downtime какой там будет секунд 5 (а если аккуратно сделать то 1 секунда).
Т.е. что вам не нравится в той схеме что вы нарисовали?

Как я понял, такой downtime возможен лишь когда для реализации
"- делать сервер А слейвом по отношении к серверу Б (мастеру)"
не нужно с мастера на слейв полностью копировать кластер, при помощи pg_basebackup, а лишь подгрузить недостающие транзакции (wal файлы). Если это так, то каким образом можно это проделать?
...
Рейтинг: 0 / 0
synchronous multi-master
    #38575420
sterewert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос снят. Разобрался
...
Рейтинг: 0 / 0
synchronous multi-master
    #38580362
sterewert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все же, не разобрался. Попробовал реализовать востановление реплики без полной передачи кластера с мастера на слейв. Не работает. Слейв пытается подгрузить не существующий файл с совсем другим таймлайном

Код: plsql
1.
2.
cp: cannot stat `/var/backups/postgresql/archive_remote/000000020000000D000000AD': No such file or directory
2014-03-06 12:47:38 EET  4701 FATAL:  timeline 3 of the primary does not match recovery target timeline 2



Вопрос, как можно (если вообще возможно) востановить реплику, после переключения слейва в режим мастера, без полного копирования кластера?

sterewertКак я понял, такой downtime возможен лишь когда для реализации
"- делать сервер А слейвом по отношении к серверу Б (мастеру)"
не нужно с мастера на слейв полностью копировать кластер, при помощи pg_basebackup, а лишь подгрузить недостающие транзакции (wal файлы). Если это так, то каким образом можно это проделать?
...
Рейтинг: 0 / 0
synchronous multi-master
    #38580713
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sterewertВсе же, не разобрался. Попробовал реализовать востановление реплики без полной передачи кластера с мастера на слейв. Не работает. Слейв пытается подгрузить не существующий файл с совсем другим таймлайном

Код: plsql
1.
2.
cp: cannot stat `/var/backups/postgresql/archive_remote/000000020000000D000000AD': No such file or directory
2014-03-06 12:47:38 EET  4701 FATAL:  timeline 3 of the primary does not match recovery target timeline 2



Вопрос, как можно (если вообще возможно) востановить реплику, после переключения слейва в режим мастера, без полного копирования кластера?

sterewertКак я понял, такой downtime возможен лишь когда для реализации
"- делать сервер А слейвом по отношении к серверу Б (мастеру)"
не нужно с мастера на слейв полностью копировать кластер, при помощи pg_basebackup, а лишь подгрузить недостающие транзакции (wal файлы). Если это так, то каким образом можно это проделать?


никак в принципе... а в чем проблема с полным копированием кластера? оно же ничего не стоит кроме сетевого траффика.
И не требует остановки мастера или перерыва в обслуживании.
...
Рейтинг: 0 / 0
synchronous multi-master
    #38580714
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sterewertВсе же, не разобрался. Попробовал реализовать востановление реплики без полной передачи кластера с мастера на слейв. Не работает. Слейв пытается подгрузить не существующий файл с совсем другим таймлайном

Код: plsql
1.
2.
cp: cannot stat `/var/backups/postgresql/archive_remote/000000020000000D000000AD': No such file or directory
2014-03-06 12:47:38 EET  4701 FATAL:  timeline 3 of the primary does not match recovery target timeline 2



Вопрос, как можно (если вообще возможно) востановить реплику, после переключения слейва в режим мастера, без полного копирования кластера?

sterewertКак я понял, такой downtime возможен лишь когда для реализации
"- делать сервер А слейвом по отношении к серверу Б (мастеру)"
не нужно с мастера на слейв полностью копировать кластер, при помощи pg_basebackup, а лишь подгрузить недостающие транзакции (wal файлы). Если это так, то каким образом можно это проделать?\

хотя... что вы имеете в виду?
вам надо старый мастер завести как реплику? или вам надо некоторую третью реплику подключить к новому мастеру?
Второе вполне реально... просто ее надо погасить до того как отключать старый мастер (и до того как переводить основную реплику в режим мастера).
...
Рейтинг: 0 / 0
synchronous multi-master
    #38580752
daevy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot sterewert]
Код: plsql
1.
2.
cp: cannot stat `/var/backups/postgresql/archive_remote/000000020000000D000000AD': No such file or directory
2014-03-06 12:47:38 EET  4701 FATAL:  timeline 3 of the primary does not match recovery target timeline 2


тут можно включить recovery_target_timeline = 'latest' в recovery.conf и перезапустить stand-by.
...
Рейтинг: 0 / 0
synchronous multi-master
    #38581017
sterewert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,

"вам надо старый мастер завести как реплику?"
да

Проблема как раз в сетевом трафике, база достаточно увесистая, а канал между серверами не так широк. В то же время трафик генерируемый при работе, небольшой и пролазит легко в этот канал.
...
Рейтинг: 0 / 0
synchronous multi-master
    #38581087
sterewert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot daevy]sterewert
Код: plsql
1.
2.
cp: cannot stat `/var/backups/postgresql/archive_remote/000000020000000D000000AD': No such file or directory
2014-03-06 12:47:38 EET  4701 FATAL:  timeline 3 of the primary does not match recovery target timeline 2


тут можно включить recovery_target_timeline = 'latest' в recovery.conf и перезапустить stand-by.


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
2014-03-07 11:08:06 EET  5536 LOG:  database system was shut down at 2014-03-07 11:05:31 EET
2014-03-07 11:08:06 EET  5536 LOG:  restored log file "00000003.history" from archive
cp: cannot stat `/var/backups/postgresql/archive_remote/00000004.history': No such file or directory
2014-03-07 11:08:06 EET  5536 LOG:  restored log file "00000003.history" from archive
2014-03-07 11:08:06 EET  5536 LOG:  entering standby mode
cp: cannot stat `/var/backups/postgresql/archive_remote/000000030000000D000000AD': No such file or directory
cp: cannot stat `/var/backups/postgresql/archive_remote/000000020000000D000000AD': No such file or directory
2014-03-07 11:08:06 EET  5536 LOG:  consistent recovery state reached at D/AD000080
2014-03-07 11:08:06 EET  5536 LOG:  record with zero length at D/AD000080
2014-03-07 11:08:06 EET  5534 LOG:  database system is ready to accept read only connections
cp: cannot stat `/var/backups/postgresql/archive_remote/000000030000000D000000AD': No such file or directory
cp: cannot stat `/var/backups/postgresql/archive_remote/000000020000000D000000AD': No such file or directory
cp: cannot stat `/var/backups/postgresql/archive_remote/00000004.history': No such file or directory
2014-03-07 11:08:06 EET  5556 LOG:  streaming replication successfully connected to primary
2014-03-07 11:08:06 EET [unknown] 5557 [local]LOG:  incomplete startup packet



Реплика вроде как включилась, не смотря, что отсутствуют некоторые файлы логов (отсутствуют впринципе, а не на слейве).
Но данные не реплицируются. sent_location меняется.

select sent_location, write_location, flush_location, replay_location from pg_stat_replication
Код: plsql
1.
"D/AD000000";"D/AD000080";"D/AD000080";"D/AD000080"
...
Рейтинг: 0 / 0
synchronous multi-master
    #38581100
daevy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sterewert"вам надо старый мастер завести как реплику?"
да

sterewertРеплика вроде как включилась, не смотря, что отсутствуют некоторые файлы логов (отсутствуют впринципе, а не на слейве).
Но данные не реплицируются. sent_location меняется.

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

и еще раз про заведение бывших мастеров в качестве реплик...
На данный момент, штатными средствами это сделать невозможно. Есть pg_rewind, но он имхо сыроват и его требуется настраивать до всяких манипулация с переключениями.
...
Рейтинг: 0 / 0
synchronous multi-master
    #38581109
sterewert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
daevy,

стрый мастер хочу завести как реплику, без полного копирования кластера с нового мастера, а лишь догрузив недостающие логи.
...
Рейтинг: 0 / 0
synchronous multi-master
    #38581117
sterewert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
daevy,

Пожохе что pg_rewind, в теории делает то, что мне нужно. Спасибо, посмотрю на него.
...
Рейтинг: 0 / 0
synchronous multi-master
    #38581130
daevy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sterewertdaevy,

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

как я уже написал выше, на данный момент это невозможно. только переинициализация с полным копированием мастера.
...
Рейтинг: 0 / 0
27 сообщений из 27, показаны все 2 страниц
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / synchronous multi-master
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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