LINUX.ORG.RU

Двухфазный коммит


0

1

Кто-нибудь пробовал делать?

Задача такая: нужно реплицировать данные на N реплик БД (что-то вроде multimaster, но appication level). Я хочу делать через 2PC, но из описания что-то не очень понял как это делать.

Как я понял: вначале пытаемся закоммититься по всем базам, но только еще проставляем всем записям флажок, что запись залочена (пока). Если везде закоммитилось, то коммитим второй раз, уже снимая флажок. При любой попытке доступа к залоченной записи видимо нужно по таймауту делать retry (то же самое касается и начала двухфазного коммита), таким образом будет обеспечена консистентность. Как я понял, основная проблема, это если упадет инициатор транзакции перед второй фазой и будет непонятно что делать с локами на записях.

Делаю на Java.

Еще смотрю на JTA, но я так и не понял как оно работает и что-то не очень доверяю такому решению. Может кто-то пробовал как оно? И какую реализацию посоветуете (пока смотрю на Bitronix)

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

★★★★★
Ответ на: комментарий от Legioner

Меня в первую очередь интересует реализация «ручками», без XA. Да и еще забыл написать - нужно еще как-то хранить undo log, а как это красиво сделать не знаю

dizza ★★★★★
() автор топика

>Как я понял, основная проблема, это если упадет инициатор транзакции перед второй фазой и будет непонятно что делать с локами на записях.

Завести на каждом узле демона/кронтаск и убивать залоченое по дате. Дату придётся хранить, да.

legolegs ★★★★★
()
Ответ на: комментарий от true_admin

может использовать специальный лобдалансер? Типа pgpool есть это постгрес.

С pgpool я пока 2 проблемы вижу: если отваливается одна из реплик во время коммита, то этот коммит накрывается. Какая-то условная отказоустойчивость. И упавшый узел начинает восстанавливаться только если к пгпулу нету запросов.

Если подскажете какую-нить адекватную системы репликации мастре-мастер (синхронную), то будет здорово. Пока вот думаю писать самому, потому как складывется впечатление, что то, что я хочу это Oracle RAC, а постргрес, как его бы не расхваливали не годится для серьезных задач без напильника.

dizza ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.