|
Программирование >> Программный интерфейс приложений
министраторы, не знакомые с использованием команды сгоп, могут почитать о ней на соответствующих страницах справочного руководства; % 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.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |