Сначала, если речь идет о восстановлении базы данных mysql с таблицами разрешений, необходимо запустить сервер с опцией —skip-grant-tables. Иначе сервер выдаст сообщение о невозможности поиска таблиц разрешений. После восстановления таблиц разрешений выполните команду mysqladmin flush-privileges, чтобы заставить сервер загрузить и использовать таблицы разрешений.
· Скопируйте содержимое каталога базы данных в другое место. Оно может потребоваться в будущем для изучения оставшихся данных поврежденных таблиц.
· Загрузите базу данных, используя файлы самых последних архивов. Если эти файлы были созданы программой mysqldump, используйте их в качестве ввода в mysql. Если же восстановление информации выполняется из файлов, непосредственно скопированных из каталога базы данных (например, с помощью команд tar или ср), скопируйте их обратно в каталог данных. В последнем случае перед копированием файлов необходимо временно приостановить работу сервера, а по завершении переноса — снова запустить.
· Используя журналы обновлений, повторно запустите все запросы на изменение базы данных, которые были исполнены с момента последнего резервирования. Для этого содержимое журнала обновлений можно представить в качестве ввода для mysql. Если необходимо, определите опцию —one-database, чтобы сервер mysql исполнил запросы только к той базе данных, которая представляет интерес. Если для восстановления информации необходимо использовать все журналы обновлений, запустите в каталоге с этими журналами следующую команду:
Команда Is воспроизводит список файлов журналов обновлений, отсортированный сервером в порядке создания. (Об этом следует помнить, поскольку неаккуратное изменение имен файлов журналов может привести к восстановлению их запросов в неправильном порядке.)
В большинстве же случаев используются не все, а только часть журналов обновлений. Например, если запросы к базе данных, выполненные после последнего резервирования, хранятся в файлах с именами update.392, update.393 и т.д., повторно запустить их можно с помощью следующих команд:
% mysql —one-database db_name < update.392 % mysql -one-database db_name < update.393
Если процедура восстановления применяется для устранения результатов случайного выполнения операторов DROP database, drop table или delete, не забудьте перед запуском команды удалить эти операторы из журнала!