powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Асинхронная двухсторонняя репликация
22 сообщений из 22, страница 1 из 1
Асинхронная двухсторонняя репликация
    #35157438
pg_man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
Начальство "сказало" переходить на бесплатную СУБД, сейчас все крутится на MS SQL 2000. Рассматриваем FireBird и PostgreSQL. Напарник ищет плюсы/минусы FireBird, я соотвественно PostgreSQL. Все нравилось пока не нашел ничего по поводу асинхронной двухсторонней репликации, напарник говорит, что в FB есть. Плохо искал или действительного ничего нет?
slonyII - мертв?
PGCluster - синхронная
pgpool-II - ничего не нашел про асинхронность, значит нету.

У нас 8 филиалов и документы изменяются на разных узлах.
...
Рейтинг: 0 / 0
Асинхронная двухсторонняя репликация
    #35157535
Thamerlan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Асинхронный master<->master? Как вы себе это представляете?
...
Рейтинг: 0 / 0
Асинхронная двухсторонняя репликация
    #35157559
pg_man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как merge в MS SQL. Один и тот же документ может исправляться на любом узле. Способ разрешения конфликтов на усмотрение разработчика.
...
Рейтинг: 0 / 0
Асинхронная двухсторонняя репликация
    #35157599
iz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
iz
Гость
Готового решения асинхронного мультимастера с мануальным разрешением конфликтов в PostgreSQL не существует -- нужно делать самому. Помочь в этом могут, например, SkyTools, смотреть в сторону Londiste (движок для организации потабличной репликации с возможностью двухстороннего сравнения таблиц) и PgQ (обобщенная очередь в PostgreSQL). https://developer.skype.com/SkypeGarage/DbProjects/SkyTools .
...
Рейтинг: 0 / 0
Асинхронная двухсторонняя репликация
    #35157655
pg_man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
izнужно делать самомуГрустно:-(. Не подскажите, разрабатываются такие продукты ,если да, то как скоро их можно пощупать? Боюсь, что написание своей репликации может занять больше времени, чем перевод БД с MS SQL->PostgreSQL.
...
Рейтинг: 0 / 0
Асинхронная двухсторонняя репликация
    #35157827
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
Мультимастер в постгресе большая идеологическая проблема, поскольку постгрес версионник. Представьте, что на каждом сервере один и тот же документ существует в нескольких версиях (в незафиксированных транзациях), да еще нужно выполнить синхронизацию между серверами. Даже в теории выполнить синхронизацию можно только тогда, когда ни на одном из серверов нет ни одной модифицирующей транзакции на таблице документов или связанных таблицах.

Резюме - для создания распределенной системы используйте блокировочные СУБД, а не версионники. Если же хотите открытый движок с очень высокой производительностью, гляньте на berkeley db и sqlite, хотя разработка на них будет посложнее.
...
Рейтинг: 0 / 0
Асинхронная двухсторонняя репликация
    #35157875
pg_man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MBGРезюме - для создания распределенной системы используйте блокировочные СУБД, а не версионники. Если же хотите открытый движок с очень высокой производительностью, гляньте на berkeley db и sqlite, хотя разработка на них будет посложнее.
Короче, если писать распределенную систему на PostgreSQL надо изобретать навороченный велосипед под названием "Репликация" или создавать на другой СУБД, где это уже реализовано.
Всем спасибо.
...
Рейтинг: 0 / 0
Асинхронная двухсторонняя репликация
    #35158016
Thamerlan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pg_man MBGРезюме - для создания распределенной системы используйте блокировочные СУБД, а не версионники. Если же хотите открытый движок с очень высокой производительностью, гляньте на berkeley db и sqlite, хотя разработка на них будет посложнее.
Короче, если писать распределенную систему на PostgreSQL надо изобретать навороченный велосипед под названием "Репликация" или создавать на другой СУБД, где это уже реализовано.
Всем спасибо.

Ну если есть интерес к синхронной мультимастер репликации, то можете посмотреть на Cybercluster .
Cybertec is a PostgreSQL replication solution which makes sure that the database cluster is consistent at every point in time. We rely on a shared-nothing architecture which is perfectly suitable for synchronous multimaster replication.

Сам не пробовал и услышал про такое довольно недавно.
...
Рейтинг: 0 / 0
Асинхронная двухсторонняя репликация
    #35158071
pg_man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ThamerlanНу если есть интерес к синхронной мультимастер репликации, то можете посмотреть на Cybercluster А если связи не будет, потом подымать бэкапы, синхронизировать...и все практически вручную. Хотя если все это автоматизировать получится асинхронная репликация:-)
...
Рейтинг: 0 / 0
Асинхронная двухсторонняя репликация
    #35158245
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
pg_man ThamerlanНу если есть интерес к синхронной мультимастер репликации, то можете посмотреть на Cybercluster А если связи не будет, потом подымать бэкапы, синхронизировать...и все практически вручную. Хотя если все это автоматизировать получится асинхронная репликация:-)

Допилить не получится. Синхронная репликация работает на двухфазном коммите транзакций, т.е. каждая транзакция выполняется _на всех_ узлах кластера. Соответственно, не удастся распределить нагрузку между серверами или сделать этот процесс асинхронным. Смысл названного решения в создании серверов горячего резерва (притом необходимо наличие надежного канала между всеми серверами, что требует установки всех серверов в одном дата-центре). Предполагается, что можно запросы select выполнять на любом из серверов, но в случае, когда используются обращения к хранимым процедурам, не получится и это, поскольку хранимая процедура может не только возвращать наборы данных, но и модифицировать хранимые данные и структуру БД.
...
Рейтинг: 0 / 0
Асинхронная двухсторонняя репликация
    #35158619
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MBGМультимастер в постгресе большая идеологическая проблема, поскольку постгрес версионник. Представьте, что на каждом сервере один и тот же документ существует в нескольких версиях (в незафиксированных транзациях), да еще нужно выполнить синхронизацию между серверами. Даже в теории выполнить синхронизацию можно только тогда, когда ни на одном из серверов нет ни одной модифицирующей транзакции на таблице документов или связанных таблицах.почему идеологическая проблема ? %) документ существует только в зафиксированном виде и синхронизировать нужно именно его, документы в незафиксированных транзациях - не существуют.

ps: хотя я может быть просто не понимаю о чём идёт речь %)
...
Рейтинг: 0 / 0
Асинхронная двухсторонняя репликация
    #35158726
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
Ёш MBGМультимастер в постгресе большая идеологическая проблема, поскольку постгрес версионник. Представьте, что на каждом сервере один и тот же документ существует в нескольких версиях (в незафиксированных транзациях), да еще нужно выполнить синхронизацию между серверами. Даже в теории выполнить синхронизацию можно только тогда, когда ни на одном из серверов нет ни одной модифицирующей транзакции на таблице документов или связанных таблицах.почему идеологическая проблема ? %) документ существует только в зафиксированном виде и синхронизировать нужно именно его, документы в незафиксированных транзациях - не существуют.

ps: хотя я может быть просто не понимаю о чём идёт речь %)

Транзакция, которая будет выполнять синхронизацию, тоже до коммита не существует. Например, в 11:59 начинаем транзакцию сохранения новой версии документа, а в 12:00 начинаем транзакцию синхронизации. В 12:01 на сервер сохраняется новая версия документа, но транзакция синхронизации эту новую версию не видит, поскольку внутри транзакции состояние базы "заморожено" на момент начала транзакции. В 12:02 завершается транзакция синхронизации. Вот вам и принципиальная проблема - непонятно даже, как идеологически решать, то ли надо откатывать транзакцию синхронизации, то ли подтверждать. В любом случае сложно предсказать, какая же версия документа окажется на каждом из серверов после их синхронизации. Даже на момент начала синхронизации не удастся точно определить, какая версия документа находится на сервере, так как могут существовать транзакции, изменяющие этот документ, а предсказать заранее, будут ли эти транзакции зафиксированы, нельзя.

Конечно, можно накладывать блокировки разных уровней на синхронизируемые таблицы, но это нарушит нормальную работу системы, да к тому же не поможет разобраться с уже начатыми транзакциями, которые на время блокировки приостановят выполнение.
...
Рейтинг: 0 / 0
Асинхронная двухсторонняя репликация
    #35158821
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MBG
Транзакция, которая будет выполнять синхронизацию, тоже до коммита не существует. Например, в 11:59 начинаем транзакцию сохранения новой версии документа, а в 12:00 начинаем транзакцию синхронизации. В 12:01 на сервер сохраняется новая версия документа, но транзакция синхронизации эту новую версию не видит, поскольку внутри транзакции состояние базы "заморожено" на момент начала транзакции. В 12:02 завершается транзакция синхронизации. Вот вам и принципиальная проблема - непонятно даже, как идеологически решать, то ли надо откатывать транзакцию синхронизации, то ли подтверждать. В любом случае сложно предсказать, какая же версия документа окажется на каждом из серверов после их синхронизации. Даже на момент начала синхронизации не удастся точно определить, какая версия документа находится на сервере, так как могут существовать транзакции, изменяющие этот документ, а предсказать заранее, будут ли эти транзакции зафиксированы, нельзя.

Конечно, можно накладывать блокировки разных уровней на синхронизируемые таблицы, но это нарушит нормальную работу системы, да к тому же не поможет разобраться с уже начатыми транзакциями, которые на время блокировки приостановят выполнение.
Че-то странное Вы пишете, уважаемый. А какая нам фтопку разницо?
Есть изменения - должны быть реплицированы на все базы, есть удаления - аналогично, есть вставки - та же фигня.

У нас работает на Оракле (тоже вроде не блокировщик) асинхронная мультимастер репликация и не жужжит. Нормально работает. Хуже с софтом - там много заморочек, например FK, или триггера, коороые зависят от последовательности выполнений... в общем, проблем очень много, но совершенно в другой области.
...
Рейтинг: 0 / 0
Асинхронная двухсторонняя репликация
    #35158923
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
Andrey Daeron
Че-то странное Вы пишете, уважаемый. А какая нам фтопку разницо?
Есть изменения - должны быть реплицированы на все базы, есть удаления - аналогично, есть вставки - та же фигня.

Если вы пишете свою систему репликации, разница есть. Если берете готовую, тогда дело совести - разбираться, как работает или "на авось".

Andrey Daeron
У нас работает на Оракле (тоже вроде не блокировщик) асинхронная мультимастер репликация и не жужжит. Нормально работает. Хуже с софтом - там много заморочек, например FK, или триггера, коороые зависят от последовательности выполнений... в общем, проблем очень много, но совершенно в другой области.

И как написанную без учета репликации БД в оракл запустить на мультимастере? Даже не стоит обсуждать. В блокировочнике проще. Раз уж вы упомянули оракл, то в качестве примера назову недавно ими купленную berkeleydb - там подобных заморочек с репликацией нет и быть не может. Насколько мне известно, mysql использует подобную низкоуровневую систему. А в оракле это реализуется намного сложнее, и необходимо переписывать базу (функции, триггеры и т.п.).
...
Рейтинг: 0 / 0
Асинхронная двухсторонняя репликация
    #35159545
darkpiper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извиняюсь немного не в тему....
У FB с репликацией еще хуже чем у PostgreSQL
у FB нет никаких встроенных средств, существуют только костыли внешние
PS Или я плохо искал
...
Рейтинг: 0 / 0
Асинхронная двухсторонняя репликация
    #35159561
непонимайу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
darkpiperPS Или я плохо искал плохо
...
Рейтинг: 0 / 0
Асинхронная двухсторонняя репликация
    #35159636
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MBG
И как написанную без учета репликации БД в оракл запустить на мультимастере? Даже не стоит обсуждать. В блокировочнике проще. Раз уж вы упомянули оракл, то в качестве примера назову недавно ими купленную berkeleydb - там подобных заморочек с репликацией нет и быть не может. Насколько мне известно, mysql использует подобную низкоуровневую систему. А в оракле это реализуется намного сложнее, и необходимо переписывать базу (функции, триггеры и т.п.).
Еще раз. Я не вижу принципиальных различий между блокировочником и версионником в данном контексте. Если БД не расчитана на мультимастер, то будь-то Оракл, Постгрес или MS SQL и BDB - будут проблемы, при решении которых структура БД изменится. Если репликация встроена в БД или являются синхронной - тогда всё гораздо проще, тогда механизмы репликации просто скрыты от глаз программиста/пользователя.
...
Рейтинг: 0 / 0
Асинхронная двухсторонняя репликация
    #35159712
alex212
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как насчет этого ?
...
Рейтинг: 0 / 0
Асинхронная двухсторонняя репликация
    #35160249
pg_man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex212А как насчет этого ?Кто нибудь пробывал? Как поставить под Windows, а то *nix-ов боюсь?
...
Рейтинг: 0 / 0
Асинхронная двухсторонняя репликация
    #35161903
Nick Gazaloff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bucardo Limitations

Bucardo, like all replication systems, has limitations, including:

* Requires Postgres 8.1 or better, with Pl/Perl and Pl/pgsql. Version 8.2 or better is recommended.
* Requires recent versions of Perl and DBD::Pg.
* Replicates tables only, not the entire database.
* Does not replicate DDL.
* Cannot handle more than two master nodes at a time (no master-master-master replication yet).
* Requires a primary key on each table to be replicated.
* Step by step data changes are not tracked, so busy sites with large network disconnect times may require expensive locking to "catch back up"
...
Рейтинг: 0 / 0
Асинхронная двухсторонняя репликация
    #35162105
pg_man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bucardo Limitations
* Cannot handle more than two master nodes at a time (no master-master-master replication yet).
Что мешает назначить "главный" сервер и по очереди синхронизировать данные?
Bucardo Limitations
* Step by step data changes are not tracked, so busy sites with large network disconnect times may require expensive locking to "catch back up"Вот это не понял, объясните пожалуйста.
...
Рейтинг: 0 / 0
Асинхронная двухсторонняя репликация
    #35162395
Nick Gazaloff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pg_man alex212А как насчет этого ?Кто нибудь пробывал? Как поставить под Windows, а то *nix-ов боюсь?

Документацию читать уже не модно?

Currently, Bucardo has only been tested on Linux distributions. In theory, it should work fine on most other unix-like systems. It will not run on Windows without some minor modifications to code involving system calls.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Асинхронная двухсторонняя репликация
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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