Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с XA aka Distributed transaction в php 
:(
    Опции темы
02077461
Дата 16.3.2012, 16:29 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



Добрый день.
Случилось мне использовать распределенные транзакции в php скрипте. Насколько я понял из доки имея несколько коннектов к бд в каждом мы должны открыть XA транзакцию с уникальным идентификатором, затем завершить ее, подготовить и закоммитить.
т.е. выглядит так:
Код

[localhost] XA START 'tx-4f633bd5cfd9c7.06037054'
[192.168.56.10] XA START 'tx-4f633bd5cfd9c7.06037054'
[localhost] INSERT INTO `some_table` (field, value) VALUES ('field 191', '845')
[192.168.56.10] INSERT INTO `some_table` (field, value) VALUES ('field 191', '558')
[localhost] XA END 'tx-4f633bd5cfd9c7.06037054'
[localhost] XA PREPARE 'tx-4f633bd5cfd9c7.06037054'
[192.168.56.10] XA END 'tx-4f633bd5cfd9c7.06037054'
[192.168.56.10] XA PREPARE 'tx-4f633bd5cfd9c7.06037054'
[localhost] XA COMMIT 'tx-4f633bd5cfd9c7.06037054'
[192.168.56.10] XA COMMIT 'tx-4f633bd5cfd9c7.06037054'

Код который так делает можете найти в аттаче. 
Все работает как надо когда все работает как надо. Но когда я опускаю один сервер после того как сделал END и PREPARE  и непосредственно перед тем как делать COMMIT я получаю следующее сообщение:

Код

LAST INT: 325
[localhost] XA START 'tx-4f633eb70ca183.03963688'
[192.168.56.10] XA START 'tx-4f633eb70ca183.03963688'
[localhost] INSERT INTO `some_table` (field, value) VALUES ('field 325', '818')
[192.168.56.10] INSERT INTO `some_table` (field, value) VALUES ('field 325', '677')
[localhost] XA END 'tx-4f633eb70ca183.03963688'
[localhost] XA PREPARE 'tx-4f633eb70ca183.03963688'
[192.168.56.10] XA END 'tx-4f633eb70ca183.03963688'
[192.168.56.10] XA PREPARE 'tx-4f633eb70ca183.03963688'
Sleep. Press enter...

Done. Commiting.
[localhost] XA COMMIT 'tx-4f633eb70ca183.03963688'
[192.168.56.10] XA COMMIT 'tx-4f633eb70ca183.03963688'
[192.168.56.10] ERROR: MySQL server has gone away


По логам все правильно, вот только на первом сервере в базу строка вставилась, а на втором сервере -- нет. Кроме того нет транзации в RECOVERY.

Код

LOCALHOST:

mysql> select * from some_table;
+----+-----------+-------+
| id | field     | value |
+----+-----------+-------+
|  1 | field 325 | 818   |
+----+-----------+-------+
1 row in set (0.00 sec)

mysql> XA RECOVER;
Empty set (0.00 sec)


Код

192.168.56.10

mysql> select * from some_table;
Empty set (0.00 sec)

mysql> xa recover;
Empty set (0.00 sec)



Т.е. от транзакции никакого проку нет. С чем это может быть связано? Можно конечно следить кодом за тем что бы не было ошибок в логе, но тогда вообще нет смысла в транзакциях. 
PM   Вверх
aborod
Дата 7.12.2012, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 7.12.2012

Репутация: нет
Всего: нет



Здравствуйте!

Тоже интересует реализация XA в MySQL. Подскажите, какой версии у вас MySQL? На забугорных форумах пишут, что они вроде сначала добавили интерфейс, и лишь несколько выпусков спустя сделали полноценную поддержку. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.1017 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.