Программирование >>  Программный интерфейс приложений 

1 ... 173 174 175 [ 176 ] 177 178 179 ... 264


министраторы, не знакомые с использованием команды сгоп, могут почитать о ней на соответствующих страницах справочного руководства;

% man сгоп % man crontab

3. Организуйте проверку таблиц баз данных в процессе загрузки системы перед запуском сервера. Иногда компьютер перезафужается после сбоя, в результате которого таблицы могут оказаться поврежденными.

Для запуска автоматической проверки таблицы необходимо написать сценарий, который заменит каталог на каталог данных сервера и запустит утилиты myisamchk И isamchk ДЛЯ Таблиц всех баз данных. В представленном далее сценарии используются обе профаммы. Если в рабочей базе данных содержатся только MylSAM или только ISAM-таблицы, достаточно только одной профаммы. Вторую утилиту можно вообще убрать из сценария.

В процессе проверки таблиц утилиты myisamchk и isamchk выводят информацию о том, какие таблицы уже проверены (даже если с ними все в порядке). Для записей файла crontab подобную информацию лучше выводить только для тех таблиц, в которых обнаружены ошибки. (В процессе своей работы команда сгоп генерирует почтовое сообщение с результатами работы. Согласитесь, неинтересно постоянно получать почтовое сообщение с информацией об отсутствии проблем.) Вызов любой утилиты с опцией -silent приводит к выводу результатов только при обнаружении ошибок. Кроме того, утилита myisamchk поддерживает опцию --fast, которая позволяет пропускать все таблицы, не измененные с момента последней проверки.

Для проверки всех файлов таблиц, расположенных внутри каталога данных сервера, можно воспользоваться следующим простым сценарием (DATADIR следует заменить соответствующим именем каталога данных в своей системе):

#1 /bm/sh cd datadir

myisamchk -silent -fast */*.MYI isamchk -silent */*.ISM

Этот сценарий, однако, имеет одну потенциальную проблему. Если в проверяемом каталоге данных размещается большое количество таблиц, запись */*.MYl или */*.iSM может привести к выюду ошибок со слишком большим числом аргументов . Поэтому можно воспользоваться альтернативным сценарием (снова же заменив DATADIR на имя каталога данных):

#! /bm/sh datadir=DArADIJ?

find $datadir -name *.MYI -print xargs myisamchk -silent -fast

find $datadir -name *.ISM -print xargs myisamchk -silent -fast



Выбрав одну из форм сценария, присвойте ему имя check mysql tables. Не забудьте также изменить режим, сделав его запускаемым. После этого следует вручную запустить сценарий, чтобы убедиться в его работоспособности:

% chmod +х check mysql tables % check mysql tables

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

В следующих разделах рассказывается, как настроить автоматический запуск сценария с помощью процесса сгоп и опций запуска системы. В примерах этого раздела предполагается, что сценарий инсталлирован в каталог /usr/users/mysqladmin/bm. Администраторам необходимо изменить этот путь в соответствии со своими установками.

Если на одном компьютере запущено несколько серверов одновременно, администратор должен изменить процедуру таким образом, чтобы последовательно проверять таблицы в каталоге данных каждого сервера. Это можно реализовать посредством создания нескольких копий сценария check mysql tables ИЛИ изменения его таким образом, чтобы с помощью аргумента командной строки задавать имя проверяемого каталога данных.

Периодическая проверка таблиц с помощью программы сгоп

Предположим, что необходимо вызывать сценарий check mysql tables из файла crontab пользователя mysqladm. Зарегистрируйтесь под именем этого пользователя, а затем отредактируйте файл crontab, используя следующую команду:

% crontab -е

Эта команда приведет к открытию редактора и загрузке в него копии текущего файла crontab (который может быть совсем пустым, если ранее не использовался). Добавьте в этот файл следующую строку:

0 3**0 /usr/users/n!ysqladn!in/bin/check raysql tables

Эта строка указывает программе сгоп запускать сценарий в 3 часа утра каждого воскресенья. В случае необходимости время и день недели можно изменить. Для правильной записи формата внимательно прочитайте страницу справочного руководства, посвященную файлу crontab.



проверка таблиц во время загрузки системы

Администраторы BSD-систем, добавившие команду запуска сервера в файл /etc/rc. local (или его эквивалент), могут с таким же успехом вызывать из этого же файла и сценарий check mysql tables. Вызывать этот сценарий следует перед запуском сервера.

Если же администратор использует метод запуска ОС System V, при котором сценарий mysql.server вызывается из одного из каталогов etc/red, процедура запуска усложняется. Сценарии запусков из этих каталогов должны правильно обрабатывать аргументы start и stop, чтобы выполнять правильные действия по запуску и завершению работы системы. Для вьшолнения проверки таблиц можно написать сценарий, который, в свою очередь, вызывает сценарий check mysql tables при получении аргумента start и ничего не делает при получении аргумента stop. Присвойте представленному ниже сценарию имя mysql. check:

#! /bm/sh

# см. как это вызывается case $1 m start)

echo -n Checking MySQL tables:

if [ -X /usr/users/mysqladmin/bin/check mysql tables ]; then /usr/users/mysqladmin/bin/check mysql tables

stop)

# ничего не делать

echo Usage: $0 {startstop} exit 1

esac exit 0

Теперь можно инсталлировать сценарий mysql. check, воспользовавшись одной из процедур, описанных в главе И, Общее администрирование MySQL , при описании инсталляции mysql. server. Не забудьте присвоить сценарию mysql. check меньший номер префикса в каталоге уровня запуска, чтобы он запускался перед mysql. server. Например, если связь с ту sql. serve г осуществляется с помощью имени S99mysql. server из каталога уровня запуска, для связи с mysql. check можно использовать имя S98mysql. check.



1 ... 173 174 175 [ 176 ] 177 178 179 ... 264

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика