В ходе тестирования утилиты резервного копирования Linux In In Time мне стало известно, что я не могу понять, как MariaDB на самом деле сохраняет данные.

После добавления фиктивной записи в таблицу и оставления ее до следующего снимка я с удивлением обнаружил, что восстановление более старого снимка (сделанного до добавления фиктивной записи) не привело к удалению фиктивной записи.

Я попробовал это еще два раза: добавлена фиктивная новая запись, происходит моментальный снимок (автоматически, потому что это то, что я сказал Back In Time) ... и восстановление не делает то, что я ожидал.

Глядя на настоящие файлы "Modified by", в главном каталоге (где все базы данных являются подкаталогами) я обнаружил, что изменились только два файла: ib_logfile0 и ib_logfile1 . При настройке моей работы Back In Time я сознательно пропустил их из конфигурации, потому что я предположил, что они были "просто журналами". Ясно, что нет.

Чтобы решить мою непосредственную проблему, кажется, что все, что мне нужно сделать, это включить эти два файла в мои снимки. Но как или каким образом ibdata1 обновляется с новой информацией? Возможно, когда служба MySQL закрыта? Или пустили?

Что странно, так это то, что я не нахожу много информации об этом.

1 ответ1

0

Вы не можете использовать универсальную утилиту резервного копирования, такую как Back in Time, для резервного копирования баз данных.

Как вы обнаружили, вам нужен непротиворечивый снимок файлов базы данных, чтобы иметь работоспособную резервную копию. Без этого вы получите что-то неправильное или просто не запускающееся. Проблема в том, что ib_logfile* временно хранятся, а затем переносятся в табличные пространства. Вы можете удалить их, только если вы чисто завершили работу (что больше, чем systemctl stop mysqld), чего, очевидно, не произошло, когда вы делали резервную копию.

Таким образом, вкратце для MySQL, используйте программу резервного копирования, которая знает о MySQL (mysqldump, mydumper, xtrabackup), или инструмент согласованного снимка (снимки llvm или согласованную функциональность снимка на основе файловой системы) или подчиненный репликации один из предыдущих методов.

Возникновение файлов данных MySQL извне MySQL приведет только к потере данных. Не делай этого.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .