7.5.6 Создание резервных копий и восстановление баз данных InnoDB
Чтобы обеспечить безопасное управление базами данных, необходимо регулярно
создавать резервные копии.
Существует интерактивный инструмент, который можно использовать для
создания резервных копий своих баз данных InnoDB, когда они открыты, -
InnoDB Hot Backup. Для своей работы InnoDB Hot Backup не требует закрытия
базы данных, блокировки данных или нарушения обычного хода обработки базы
данных. InnoDB Hot Backup является платным дополнительным инструментом, не
входящим в стандартный дистрибутив MySQL. Чтобы получить дополнительную
информацию о нем и просмотреть копии экрана, см. домашнюю страницу InnoDB
Hot Backup http://www.innodb.com/hotbackup.html.
Если у вас есть возможность остановить сервер MySQL, а затем создать
двоичную резервную копию своей базы данных, необходимо выполнить следующие
действия:
-
Закройте свою базу данных MySQL и убедитесь, что закрытие было
произведено без ошибок.
-
Скопируйте все свои файлы данных в безопасное место.
-
Скопируйте все свои файлы журналов InnoDB в безопасное место.
-
Скопируйте свой файл конфигурации `my.cnf' в безопасное место.
-
Скопируйте все файлы `.frm' своих таблиц InnoDB в безопасное место.
На данный момент интерактивных или инкрементных инструментов создания
резервных копий для InnoDB пока еще нет - такие инструменты включены в
список задач к разработке.
В дополнение к двоичным резервным копиям, описанным выше, необходимо также
регулярно создавать дампы своих таблиц при помощи mysqldump
. Дело в том,
что повреждение двоичного файла человеку заметить сложно. Дампы таблиц
сохраняются в текстовых файлах, которые могут прочитать люди и структура
которых намного проще двоичных файлов базы данных. Увидеть повреждение
таблицы в файле дампа легче, и благодаря простоте этого формата
вероятность серьезного повреждения данных меньше.
Дампы лучше всего создавать одновременно с созданием двоичной резервной
копии своей базы данных. Чтобы получить согласованную копию всех своих
таблиц в дампах, необходимо запретить всем клиентам доступ к базе данных.
Затем можно создать двоичную резервную копию и получить согласованные
копии своей базы данных в двух форматах.
Чтобы восстановить исходное состояние своей базы данных InnoDB из
описанной выше двоичной резервной копии, необходимо запустить свою базу
данных MySQL с включенными общим журналом и архивацией журналов MySQL
(здесь под общим журналом подразумевается механизм занесения записей в
журнал сервера MySQL, независимый от журналов InnoDB).
Единственное, что нужно сделать для восстановления процесса MySQL после
сбоя, - перезапустить его. InnoDB автоматически произведет проверку
журналов и выполнит восстановление базы данных, а также автоматически
произведет откат по незавершенным транзакциям, которые проводились на
момент сбоя. Во время восстановления InnoDB будет выводить примерно
следующую информацию:
~/mysqlm/sql > mysqld
InnoDB: Database was not shut down normally.
InnoDB: Starting recovery from log files...
InnoDB: Starting log scan based on checkpoint at
InnoDB: log sequence number 0 13674004
InnoDB: Doing recovery: scanned up to log sequence number 0 13739520
InnoDB: Doing recovery: scanned up to log sequence number 0 13805056
InnoDB: Doing recovery: scanned up to log sequence number 0 13870592
InnoDB: Doing recovery: scanned up to log sequence number 0 13936128
...
InnoDB: Doing recovery: scanned up to log sequence number 0 20555264
InnoDB: Doing recovery: scanned up to log sequence number 0 20620800
InnoDB: Doing recovery: scanned up to log sequence number 0 20664692
InnoDB: 1 uncommitted transaction(s) which must be rolled back
InnoDB: Starting rollback of uncommitted transactions
InnoDB: Rolling back trx no 16745
InnoDB: Rolling back of trx no 16745 completed
InnoDB: Rollback of uncommitted transactions completed
InnoDB: Starting an apply batch of log records to the database...
InnoDB: Apply batch completed
InnoDB: Started
mysqld: ready for connections
Если ваша база данных повреждена или произошел сбой диска, необходимо
произвести восстановление из резервной копии. В случае повреждения сначала
необходимо найти целую резервную копию, а из резервной копии произвести
восстановление по файлам общего журнала MySQL в соответствии с
инструкциями руководства MySQL.
Главы