Восстановление из WAL со смешанными транзакциями при обновлении до 2.11.0
Это руководство по устранению специфической проблемы, которая может возникнуть при обновлении с версии Tarantool 2.1.2–2.2.0 до версии 2.8.1 или новее. Описанное решение применимо начиная с версии 2.11.0.
Проблема описана в задаче 7932. Если в Tarantool 2.1.2–2.2.0 одновременно выполнялись две или более транзакции,
их операции могли быть записаны в журнал упреждающей записи (WAL) вперемешку друг с другом. Начиная с версии 2.8.1 Tarantool
восстанавливает транзакции атомарно и ожидает, что все записи WAL между операциями begin и commit транзакции
принадлежат одной транзакции. При обнаружении операции, принадлежащей другой транзакции, Tarantool не может
восстановиться из такого WAL.
Начиная с версии 2.11.0 в Tarantool доступно восстановление из WAL со смешанными транзакциями в режиме force_recovery.
Если после обновления до версии 2.11 или новее все или некоторые экземпляры не запускаются из-за ошибки восстановления:
-
Запустите эти экземпляры с параметром force_recovery, установленным в
true. -
Создайте новые снимки на этих экземплярах, чтобы старые WAL со смешанными транзакциями больше не использовались для восстановления. Для этого вызовите функцию box.snapshot().
-
Верните параметру
force_recoveryзначениеfalse.
Даже после успешного запуска некоторые экземпляры могут не получать данные от других из-за WAL со смешанными транзакциями. Чтобы устранить проблемы с репликацией, выполните повторную начальную загрузку экземпляров, на которых не работает репликация.