Чтение онлайн

на главную - закладки

Жанры

MySQL 5.0. Библиотека программиста

Гольцман Виктор

Шрифт:
...

Примечание

Открыв созданный файл с помощью программы Блокнот, вы увидите, что данные в нем представлены в виде SQL-команд CREATE DATABASE, CREATE TABLE и INSERT.

Вы можете также организовать полное резервное копирование по расписанию. Для этого необходимо создать задание Windows, выполняющее команду

mysqldump –u <Имя пользователя> -p<Пароль пользователя> [Опциональные параметры]

<Копируемые базы данных и таблицы>

> <Путь и имя результирующего файла>

О том, как создать

подобное задание, говорилось в подразделе «Двоичные журналы». Обратите внимание, что в команде mysqldump пароль пользователя должен следовать сразу после ключа -p без пробела. Учитывая риск разглашения пароля, рекомендуется выполнять резервное копирование не от имени пользователя root, а от имени специально зарегистрированного пользователя. Этот пользователь должен обладать следующими привилегиями:

• глобальной привилегией RELOAD;

• привилегией SELECT для всех копируемых объектов;

• в случае резервирования с параметром –lock-all-tables или –lock-tables – дополнительно привилегией LOCK_TABLES для всех баз данных, участвующих в копировании.

После создания файла с резервной копией базы данных необходимо позаботиться о переносе этого файла на резервный носитель информации. Этот носитель должен быть надежно защищен от несанкционированного доступа.

Если вы впервые создаете резервную копию, рекомендуется проверить ее корректность, выполнив тестовое восстановление данных. О восстановлении данных мы поговорим в следующем подразделе.

Восстановление данных

Согласно нашей стратегии резервного копирования в случае сбоя восстановление утраченных данных проводится в два этапа:

• вначале нужно восстановить базу данных из резервной копии;

• затем следует восстановить изменения данных, произошедшие с момента создания резервной копии, из двоичных журналов.

Перед началом восстановления данных необходимо запустить сервер MySQL. Если при сбое были повреждены таблицы, управляющие доступом пользователей, при запуске сервера необходимо указать параметр –skip-grant-tables.

Чтобы восстановить базу данных из файла, содержащего полную резервную копию, откроем окно командной строки Windows и выполним команду

mysql –u root –p [<Имя базы данных>] < <Путь и имя файла>

После появления приглашения Enter password (Введите пароль) введем пароль пользователя root.

...

Внимание!

В результате выполнения этой команды будет восстановлено состояние баз данных, существовавшее на момент резервного копирования. Все более поздние изменения будут потеряны.

Имя базы данных необходимо указывать в том случае, если файл содержит копии отдельных таблиц. Эта база данных должна уже существовать на сервере в момент восстановления данных. Если же база данных отсутствует, ее необходимо предварительно создать с помощью SQL-команды CREATE DATABASE (об этой команде вы узнали в разделе «Создание базы данных» главы 2).

Например, если резервная копия была создана с помощью команды

mysqldump –u root –p –single-transaction –flush-logs –databases SalesDept FinanceDept > «C:\data\full_backup.sql»

то восстановить базы данных SalesDept (Отдел продаж) и FinanceDept (Финансовый отдел) можно с помощью команды

mysql –u root –p < «C:\data\full_backup.sql»

Если резервная копия была создана с помощью команды

mysqldump –u root –p –lock-tables –flush-logs mysql user db tables_priv columns_priv > «C:\data\users.sql»

то при восстановлении необходимо указать имя базы данных, в которую будут помещены воссозданные таблицы user, db, tables_priv и columns_priv:

mysql –u root –p mysql <

«C:\data\users.sql»

...

Совет

Поскольку файл с резервной копией содержит данные в виде SQL-команд, вы можете восстанавливать с его помощью отдельные таблицы по своему выбору, просто копируя SQL-команды CREATE TABLE и INSERT в какое-либо клиентское приложение и отправляя их на сервер.

Следующий шаг – восстановление изменений из двоичных журналов, которое выполняется с помощью команды

mysqlbinlog <Список журналов> | mysql –u root -p

В качестве первого журнала необходимо указать тот журнал, ведение которого началось в момент запуска полного резервного копирования. Определить этот журнал можно по дате создания. Далее перечислим имена всех журналов вплоть до последнего, созданного перед сбоем. Например,:

mysqlbinlog “C:\data\eugene_pc-bin.000117”

“C:\data\eugene_pc-bin.000118”

“C:\data\eugene_pc-bin.000119” | mysql –u root -p

После появления приглашения Enter password (Введите пароль) введите пароль пользователя. Итак, теперь вы знаете, как организовать резервное копирование базы данных и как в случае потери данных восстановить их из резервных копий и двоичных журналов. Далее вы узнаете об устранении другого возможного последствия сбоев – повреждения таблиц.

5.4. Профилактическая проверка и восстановление таблиц

Внезапная остановка сервера MySQL, например при отключении электропитания компьютера, может привести к тому, что текущую операцию по изменению данных не удается завершить корректно и таблица оказывается поврежденной.

Таблицы с типом InnoDB автоматически проверяются и восстанавливаются при запуске сервера MySQL с помощью журнала транзакций. Если же повреждена таблица с типом MyISAM, то операции с ней могут вызывать постоянные ошибки. Поэтому после сбоев в работе сервера, а также при появлении подозрительных сообщений об ошибках необходимо проверить таблицу на наличие повреждений. Кроме того, компания-разработчик MySQL рекомендует проверять таблицы MyISAM профилактически, один раз в неделю.

Для проверки таблиц выполните команду

CHECK TABLE <Список таблиц>;

Команда CHECK TABLE отображает результат проверки таблиц. Например, чтобы получить информацию о состоянии таблиц db и user системной базы данных mysql, выполните команду

CHECK TABLE mysql.db, mysql.user;

Результат выполнения этой команды представлен в табл.5.1. Таблица 5.1. Результат выполнения команды CHECK TABLE mysql.db, mysql.user

Если в столбце Msg_text (текст сообщения) содержится значение, отличное от OK или Table is already up to date (Таблица уже проверена), то таблица повреждена. Чтобы восстановить таблицу, выполните следующие действия.

1. Выберите команду REPAIR TABLE <Имя таблицы> QUICK;

Результат выполнения команды REPAIR TABLE содержит те же столбцы, что и результат выполнения команды CHECK TABLE (см. табл. 5.1). Результат может состоять из нескольких строк; если в последней строке в столбце Msg_text (текст сообщения) указано значение OK, это означает, что таблица успешно восстановлена. В противном случае перейдите к следующему пункту.

2. Скопируйте файл <Имя таблицы>.MYD из папки <Корневая папка MySQL>\ data\<Имя базы данных> в любую резервную папку, так как попытки восстановления могут повредить данные, содержащиеся в этом файле.

3. Выполните команду

Поделиться:
Популярные книги

Зубных дел мастер

Дроздов Анатолий Федорович
1. Зубных дел мастер
Фантастика:
научная фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Зубных дел мастер

Бывшие. Война в академии магии

Берг Александра
2. Измены
Любовные романы:
любовно-фантастические романы
7.00
рейтинг книги
Бывшие. Война в академии магии

Идеальный мир для Лекаря 7

Сапфир Олег
7. Лекарь
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 7

Возвышение Меркурия. Книга 3

Кронос Александр
3. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 3

Кодекс Охотника. Книга X

Винокуров Юрий
10. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
6.25
рейтинг книги
Кодекс Охотника. Книга X

Хозяин Теней

Петров Максим Николаевич
1. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней

Опасная любовь командора

Муратова Ульяна
1. Проклятые луной
Фантастика:
фэнтези
5.00
рейтинг книги
Опасная любовь командора

Друд, или Человек в черном

Симмонс Дэн
Фантастика:
социально-философская фантастика
6.80
рейтинг книги
Друд, или Человек в черном

Волхв

Земляной Андрей Борисович
3. Волшебник
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Волхв

Мастер Разума VII

Кронос Александр
7. Мастер Разума
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Мастер Разума VII

Всемирная энциклопедия афоризмов. Собрание мудрости всех народов и времен

Агеева Елена А.
Документальная литература:
публицистика
5.40
рейтинг книги
Всемирная энциклопедия афоризмов. Собрание мудрости всех народов и времен

Сумеречный Стрелок 5

Карелин Сергей Витальевич
5. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный Стрелок 5

Морской волк. 1-я Трилогия

Савин Владислав
1. Морской волк
Фантастика:
альтернативная история
8.71
рейтинг книги
Морской волк. 1-я Трилогия

Прогрессор поневоле

Распопов Дмитрий Викторович
2. Фараон
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Прогрессор поневоле