1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/gitcrazy-cetus

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
cetus-xa.md 6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 15:50 8feb600

Cetus xa悬挂处理工具

简介

Промежуточное ПО Cetus, обрабатывающее распределённые транзакции, может быть прервано из-за проблем с сетью или узлами, что приводит к зависанию транзакций XA. Инструмент для обработки зависаний XA Cetus разработан на языке Python и предназначен для автоматического исправления зависших транзакций при возникновении зависания распределённой транзакции в Cetus.

原理

Инструмент включает в себя два основных модуля: поиска зависших транзакций и обработки зависших транзакций. Модуль поиска зависших транзакций считывает результаты xa recover из MySQL, получает список транзакций XID, которые долго находятся в состоянии зависания, объединяет все XID зависших транзакций на всех конечных точках и удаляет дубликаты. Затем он считывает содержимое журнала binlog на конечных точках, чтобы получить окончательное состояние всех зависших транзакций XA по их XID. Модуль обработки зависших транзакций выполняет простую обработку зависших транзакций в соответствии с полученным окончательным состоянием. Если окончательное состояние зависшей транзакции — PREPARE, ROLLBACK, END или START, выполняется операция отката. Если же окончательное состояние — COMMIT, выполняется операция фиксации.

Установка и запуск

Установка зависимостей

  • Python
  • Модуль Pool, необходимый для Python
  • Модуль MySQLdb, необходимый для Python

Перед использованием инструмента для обработки зависших транзакций Cetus необходимо установить соответствующие зависимости.

Шаги запуска

  • Конфигурация: информация о пути к журналу регистрации инструмента для обработки зависших транзакций, пути к файлу конфигурации запуска Cetus, файлу пользовательских настроек Cetus и пути к временным файлам записывается в раздел CONFIG в начале инструмента для обработки зависших транзакций следующим образом:
CONFIG = {"logs": "/data/cetus/xa_suspension_logs/xa-suspension.log",
          "backend": "/home/mysql-cetus/cetus_install/conf/cetus.conf",
          "user": "/home/mysql-cetus/cetus_install/conf/users.json",
          "temp_file": "/data/cetus/xa_suspension_logs/"
         }
  • Запуск: инструмент для обработки зависших транзакций устанавливается как исполняемый файл и запускается в фоновом режиме с помощью следующей команды:
chmod +x xa-suspension.py
nohup ./xa-suspension.py &

Примечания

  • Инструмент в основном используется для обработки зависших транзакций XA в сочетании с программным обеспечением Cetus, поэтому перед его использованием необходимо запустить Cetus.
  • Инструмент предназначен для обработки зависших транзакций за текущий день. Если требуется обрабатывать зависшие транзакции одновременно с запуском Cetus, необходимо своевременно запустить инструмент.
  • Необходимо обеспечить синхронизацию времени сервера Cetus и сервера MySQL и их нахождение в одном часовом поясе.
  • Если соединение между сервером Cetus и сервером MySQL требует использования механизма поддержания активности, рекомендуется настроить keepalive на уровне TCP на сервере Cetus. На сервере MySQL эту настройку делать не следует, иначе могут возникнуть проблемы с несогласованностью данных в случае сетевой изоляции.
  • После того как сеть, в которой находится сервер Cetus, и сеть сервера MySQL станут изолированными (не будут взаимодействовать друг с другом), инструмент для обработки зависших транзакций больше не сможет выполнять откат зависших транзакций. В этом случае необходимо остановить инструмент, завершить зависшие потоки на сервере MySQL или перезапустить сервер MySQL. Затем следует выполнить откат зависших транзакций MySQL на основе журнала XA сервера Cetus.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/gitcrazy-cetus.git
git@api.gitlife.ru:oschina-mirror/gitcrazy-cetus.git
oschina-mirror
gitcrazy-cetus
gitcrazy-cetus
master