А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ю Я
0-9 A B C D I F G H IJ K L M N O P Q R S TU V WX Y Z #


Чтение книги "MySQL 5.0. Библиотека программиста" (страница 29)

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

   Согласно нашей стратегии резервного копирования в случае сбоя восстановление утраченных данных проводится в два этапа:
   • вначале нужно восстановить базу данных из резервной копии;
   • затем следует восстановить изменения данных, произошедшие с момента создания резервной копии, из двоичных журналов.
   Перед началом восстановления данных необходимо запустить сервер 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:datafull_backup.sql»

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

   mysql –u root –p < «C:datafull_backup.sql»

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

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

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

   mysql –u root –p mysql < «C:datausers.sql»

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

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

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

   mysqlbinlog “C:dataeugene_pc-bin.000117”
   “C:dataeugene_pc-bin.000118”
   “C:dataeugene_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. Выполните команду

   REPAIR TABLE <Имя таблицы>;

   Затем, если и эта команда не помогла восстановить таблицу, выполните команду

   REPAIR TABLE <Имя таблицы> EXTENDED;

   Если вновь не получилось исправить повреждения, выполните команду

   REPAIR TABLE <Имя таблицы> USE_FRM;

   Параметр USE_FRM должен использоваться только в том случае, если предыдущие действия не дали нужного результата.
   Если таблица так и не была восстановлена, перейдите к следующему пункту.
   4. Откройте файл с полной резервной копией базы данных (созданный в подразделе «Полное резервирование»). Найдите в нем SQL-команду CREATE TABLE для той таблицы, которую нужно восстановить. С помощью этой команды создайте точно такую же таблицу в другой базе данных. Затем переместите файлы <Имя таблицы>.MYI и <Имя таблицы>.frm из папки <Корневая папка MySQL>data<Имя другой базы данных> в папку <Корневая папка MySQL>data<Имя исходной базы данных>. Повторите действия, описанные в п. 3.
   5. Если все попытки исправления таблицы закончились неудачей, вы можете воссоздать таблицу из резервной копии с использованием двоичных журналов. Как это сделать, говорилось в подразделе «Восстановление данных».
   Операции проверки и восстановления таблиц доступны также в графическом интерфейсе утилиты MySQL Administrator. Выполнить их вы можете с помощью следующих действий:
   1. В главном окне MySQL Administrator в левой области щелкните на пункт Catalogs (Каталоги).
   В левом нижнем углу окна появится область Schemata (Базы данных). В этой области щелкните на имени нужной базы данных. В правой области окна на вкладке Schema Tables (Таблицы базы данных) появятся сведения о таблицах выбранной базы данных (рис. 5.15).
   Рис. 5.15. Вкладка Schema Tables

   2. Щелкните на названии таблицы, которую требуется проверить или восстановить. Если нужно проверить или восстановить несколько таблиц, нажмите клавишу Ctrl и, удерживая ее нажатой, выделите мышью нужные таблицы.
   3. Нажмите кнопку Maintenance (Профилактическое обслуживание). На экране появится окно Table Maintenance (рис. 5.16). Установите переключатель Tasks (Задачи) в положение Check Tables (Проверить таблицы) или Repair Tables (Восстановить таблицы). Нажмите кнопку Next (Далее).
   Рис. 5.16. Выбор выполняемой операции

   Если вы выбрали вариант Check Tables, на экране появится окно Check Tables (рис. 5.17). В этом окне нажмите кнопку Check Tables. В окне отобразится результат проверки таблиц (рис. 5.18).
   Рис. 5.17. Окно Check Tables

   Рис. 5.18. Результат проверки таблиц

   Если вы выбрали вариант Repair Tables, на экране появится окно Repiar Tables (рис. 5.19). В этом окне укажите метод восстановления таблиц:
   • при первой попытке восстановления установите флажок Quick (соответствует описанной выше команде REPAIR TABLE <Имя таблицы> QUICK);
   • при второй попытке восстановления флажки не устанавливаются (аналогично команде REPAIR TABLE <Имя таблицы>);
   • при третьей попытке восстановления установите флажок Extended (аналогично команде REPAIR TABLE <Имя таблицы> EXTENDED);
   • при четвертой попытке восстановления установите флажок Use FRM (соответствует команде REPAIR TABLE <Имя таблицы> USE_FRM).
   Рис. 5.19. Окно Repair Tables

   Нажмите кнопку Repair Tables. В окне отобразится результат восстановления таблиц (аналогично рис. 5.18).
   Итак, вы научились проверять и в случае повреждений восстанавливать таблицы с типом MyISAM. Рассмотрим теперь последнюю в этой главе тему – получение информации о событиях, происходящих на сервере MySQL, с помощью различных видов журналов.

   5.5. Просмотр журналов работы

   Журналы работы сервера MySQL по умолчанию находятся в папке data корневой папки MySQL. Здесь вы можете найти следующие виды журналов.
   • Журнал ошибок.
   Файл с именем <Имя хоста>.err. Содержит сведения об ошибках в работе сервера, а также о запусках и остановках сервера. Просмотреть файл вы можете с помощью любого текстового редактора, например Блокнот или WordPad.
   • Двоичные журналы.
   Файлы с именем <Имя хоста>-bin.xxxxxx, где xxxxxx – порядковый номер журнала. Содержат историю изменений данных в базе. Создаются в случае, если сервер запущен с параметром – log-bin (более подробно об этом рассказывалось в подразделе «Двоичные журналы»).
   Для просмотра двоичных журналов откройте окно командной строки Windows и выполните команду

   mysqlbinlog <Список журналов>

   или

   mysqlbinlog <Список журналов> > <Имя файла>

   В первом случае содержимое журналов, представленное в виде SQL-команд, отобразится в окне командной строки, во втором – запишется в указанный файл, который вы можете открыть в любом текстовом редакторе.
   • Общий журнал запросов.
   Файл с именем <Имя хоста>. log. Содержит полную информацию о подключениях и отключениях клиентских приложений и обо всех выполняемых SQL-командах. Создается в случае, если сервер запущен с параметром – log. Просмотреть общий журнал запросов можно с помощью любого текстового редактора, например WordPad или с помощью графической утилиты MySQL Administrator (см. ниже).
   • Журнал медленных запросов.
   Файл с именем <Имя хоста>-slow.log. Содержит информацию об SQL-командах, выполнение которых заняло слишком много времени (по умолчанию – более 10 с), и тем самым позволяет выявлять объекты, требующие оптимизации. Создается в случае, если сервер запущен с параметром – log-slow-queries. Просмотреть журнал медленных запросов можно с помощью любого текстового редактора, например WordPad, или с помощью графической утилиты MySQL Administrator.
   Графическая утилита MySQL Administrator предоставляет удобный интерфейс для изучения общего журнала запросов и журнала медленных запросов (рис. 5.20). Запустив MySQL Administrator, в левой области главного окна щелкните пункт Server Logs (Журналы работы сервера) и откройте нужную вкладку: General Query Log (Общий журнал запросов) или Slow Query Log (Журнал медленных запросов).
   Рис. 5.20. Просмотр журналов работы

   Вверху вкладки вы увидите полосу прокрутки, которая показывает, какой фрагмент журнала вы сейчас просматриваете. В поле Page Content (Содержимое страницы) в правой части вкладки отображаются собственно строки данного фрагмента журнала, а в поле Events of page (События на странице) представлен список событий, облегчающий навигацию по журналу.
   Итак, вы теперь знаете, как найти интересующую вас информацию в журналах работы сервера MySQL. Подведем краткие итоги этой главы.
Чтение онлайн



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 [29] 30 31

Навигация по сайту


Читательские рекомендации

Информация