Восстановление с помощью журнала координатора транзакций
Журнал координатора транзакций (tc_log) используется для координации транзакций, затрагивающих несколько XA-совместимых движков хранения. Одна из основных целей этого журнала — восстановление после сбоя.
Режимы восстановления после сбоя
Существует два режима восстановления после сбоя:
- Автоматическое восстановление после сбоя.
- Ручное эвристическое восстановление, когда
--tc-heuristic-recoverустановлено в значение, отличное отOFF.
Автоматическое восстановление после сбоя
Автоматическое восстановление после сбоя происходит во время запуска, когда MariaDB необходимо восстановить после сбоя, и --tc-heuristic-recover установлено в OFF, что является значением по умолчанию.
Автоматическое восстановление после сбоя с использованием журнала координатора транзакций, основанного на бинарном журнале
Если MariaDB необходимо выполнить автоматическое восстановление после сбоя и если бинарный журнал включен, то в журнале ошибок будут отображаться сообщения, подобные этому:
[Note] Recovering after a crash using cmdb-mariadb-0-bin [Note] InnoDB: Buffer pool(s) load completed at 190313 11:24:29 [Note] Starting crash recovery... [Note] Crash recovery finished.
Автоматическое восстановление после сбоя с использованием журнала координатора транзакций, основанного на файле с отображением в памяти
Если MariaDB необходимо выполнить автоматическое восстановление после сбоя и если бинарный журнал не включен, то в журнале ошибок будут отображаться сообщения, подобные этому:
[Note] Recovering after a crash using tc.log [Note] InnoDB: Buffer pool(s) load completed at 190313 11:26:32 [Note] Starting crash recovery... [Note] Crash recovery finished.
Ручное эвристическое восстановление
Ручное эвристическое восстановление происходит, когда --tc-heuristic-recover установлено в значение, отличное от OFF. Это может потребоваться, если сервер обнаружит подготовленные транзакции во время восстановления после сбоя, которые отсутствуют в журнале координатора транзакций. Например, в журнале ошибок может появиться ошибка такого типа:
[ERROR] Found 1 prepared transactions! It means that mysqld was not shut down properly last time and critical recovery information (last binlog or tc.log file) was manually deleted after a crash. You have to start mysqld with --tc-heuristic-recover switch to commit or rollback pending transactions.
При запуске ручного эвристического восстановления MariaDB проигнорирует информацию о транзакциях в журнале координатора транзакций во время процесса восстановления. Подготовленные транзакции, обнаруженные во время процесса восстановления, будут либо откачены, либо подтверждены в зависимости от значения --tc-heuristic-recover.
При запуске ручного эвристического восстановления в журнале ошибок будет отображаться сообщение, подобное этому:
[Note] Heuristic crash recovery mode
Ручное эвристическое восстановление с использованием журнала координатора транзакций, основанного на бинарном журнале
Если --tc-heuristic-recover установлено в значение, отличное от OFF, и бинарный журнал включен, то MariaDB проигнорирует информацию о транзакциях в бинарном журнале во время процесса восстановления. Подготовленные транзакции, обнаруженные во время процесса восстановления, будут либо откачены, либо подтверждены в зависимости от значения --tc-heuristic-recover.
После завершения процесса восстановления MariaDB создаст новый пустой файл бинарного журнала, чтобы можно было проигнорировать старые поврежденные файлы.
Ручное эвристическое восстановление с использованием журнала координатора транзакций, основанного на файле с отображением в памяти
Если --tc-heuristic-recover установлено в значение, отличное от OFF, и бинарный журнал не включен, то MariaDB проигнорирует информацию о транзакциях в файле с отображением в памяти, определенном параметром --log-tc, во время процесса восстановления. Подготовленные транзакции, обнаруженные во время процесса восстановления, будут либо откачены, либо подтверждены в зависимости от значения --tc-heuristic-recover.
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/heuristic-recovery-with-the-transaction-coordinator-log/