Re: Re[4]: [Comm] Идеальный скрипт перезапуска mysqld

elecom =?iso-8859-1?q?vod_=CE=C1_elecom=2Eru?=
Сб Янв 15 18:01:48 MSK 2005


----- Original Message -----
From: "Михаил Монашёв" <michael на softsearch.ru>
To: "Denis Kirienko" <community на altlinux.ru>
Sent: Friday, January 14, 2005 2:51 AM
Subject: Re[4]: [Comm] Идеальный скрипт перезапуска mysqld


> Здравствуйте Денис
>
> >> Мне нужен простой sh скриптик с параметрами start|stop|restart
>
> DK> Вы шутите?
> DK> /etc/init.d/mysql start|stop|restart
>
> Всё дело в том, что одновременно запущено несколько mysql и хотелось
> бы обращаться к ним например вот так:
> mysql5 restart
>
> а не писать кучу параметров: пароль, юзера, сокет, ссылку на конфиг и т.д.
Тогда все-таки стоит потрудиться и написать /etc/init.d/mysqld1
/etc/init.d/musqld2 , как вам уже посоветовали.
Я делал такой вариант для httpd, radiusd, и он нормально работает. Методика
в общем проста:
Необходимо следующее:
1. непосредственно для разных экземпляров сервиса, безотносительно к
скриптам его запуска, обеспечить
различные конфигурационные файлы, рабочие каталоги, лог-файлы, pid файлы.
2. сделать по одному экземпляру скрипта в /etc/init.d для каждого экземпляра
сервиса.
3. обеспечить соответствие пересекающихся по смыслу параметров (например,
pid-файлы) в скриптах запуска и
конфигурационных файлах серевера.

Основная работа состоит в модификации скриптов запуска так, чтобы команды
start, stop и т.д. посыла-
лись нужному экземпляру сервиса, и сервис запускался с нужным
конфигурационным файлом.
Для httpd это делается так:
1. создаем линк на http, имеющий другое имя, например: ln -s /usr/sbin/httpd
/usr/sbin/httpd-test
(кто-то в этом треде упоминал про проблему killall в скрипте, так линк как
раз для этого)
2. прикладываем патч (см. аттач), который модифицирует скрипт запуска,
добавляя возможность иметь разные
конфиги и делать start/stop отдельным экземплярам
3. тиражируем скрипт n раз. У меня например /etc/init.d/httpd и
/etc/init.d/httpd-test различаются только этим
< BINARY=/usr/sbin/httpd
< PIDFILE=/var/run/httpd.pid
< PERLPIDFILE=/var/run/httpd-perl.pid
< LOCKFILE=/var/lock/subsys/httpd
---
> BINARY=/usr/sbin/httpd-test
> PIDFILE=/var/run/httpd-test.pid
> PERLPIDFILE=/var/run/httpd-perl-test.pid
> LOCKFILE=/var/lock/subsys/httpd-test
23c23
< CFGFILE=/etc/httpd/conf/httpd.conf
---
> CFGFILE=/home/test/httpd/conf/httpd.conf
33c33
< STATUSURL="http://localhost/server-status"
---
> STATUSURL="http://www.test.ru/server-status"

Правда, в вашем случае дело осложняется тем, что mysqld пускается через
safe-mysqld, но это тоже
решаемая проблема

----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : httpd.diff
Тип     : application/octet-stream
Размер  : 1301 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/community/attachments/20050115/2b52046d/attachment-0002.obj>


Подробная информация о списке рассылки community