Привет. Обычно я пользуюсь FreeBSD, поэтому, возможно, ответ на мой вопрос будет тривиальным. Мне нужно установить два MySQL сервера на одну CentOS. Всё работает, но при перезапуске системы запускается только один MySQL.
Вот описание того, как я проводил установку. Сначала я установил MySQL и добавил сервис к автозапуску при перезагрузке:
>yum install mysql-server.i386
>chkconfig mysqld on
>service mysqld start
Всё работает и MySQL запускается и при перезапуске системы, и из шелла.
Потом я начал разделение на два сервера. В качестве руководства использовалась статья http://blog.mydream.com.hk/howto/linux/ … ntos-howto. Для первого сервера файлы были переименованы следующим образом:
>mv /etc/my.cnf /etc/my1.cnf
>rm -rf /var/lib/mysql
>mv /etc/init.d/mysqld /etc/init.d/mysqld1
>chkconfig --add mysqld1
>chkconfig mysqld1 on
>rm /var/log/mysqld.log
Отредактированные my1.cnf и mysqld1 я приаттачиваю к посту. Если в двух словах, я поменял пути к сокету, локу, логу, директории с БД, добавил added "port=3306" в my1.cnf и "--defaults-file=/etc/my1.cnf" в mysqld1.
Всё по-прежнему работает, первый сервер нормально запускается и при перезапуске системы, и из шелла.
Настройка второго сервера на порту 3307:
>cp -vp /etc/init.d/mysqld1 /etc/init.d/mysqld2
>chkconfig --add mysqld2
>chkconfig mysqld2 on
>semanage port -a -t mysqld_port_t -p tcp 3307
Отредактированные my2.cnf и mysqld2 тоже есть в архиве. Единственное отличие от конфига для первого MySQL — пути содержат 2 вместо 1 и порт изменён на 3307.
Оба сервера нормально стартуют из шелла, но только первый запускается при перезагрузке. В логах ничего вразумительного. Второй сервер запускается и сразу останавливается:
111106 02:32:32 mysqld started
111106 02:32:32 mysqld ended
111106 02:38:29 mysqld started
111106 02:38:29 mysqld ended
111106 02:44:50 mysqld started
111106 02:44:51 mysqld ended
111106 02:48:21 mysqld started
111106 02:48:21 mysqld ended
111106 02:56:23 mysqld started
111106 02:56:23 mysqld ended
111106 03:06:31 mysqld started
111106 03:06:31 mysqld ended
Есть у вас хоть какие-то идеи, что я сделал не так? Вроде как это не проблема с правами или владельцем файлов. Для меня это выглядит как какой-то подозрительный глюк MySQL или неправильно настроенный перезапуск сервиса из-за того, что у меня нет опыта работы с CentOS.
Конфиг CentOS практически ничем не отличается от дефолтного. Я отключил ip6tables и добавил pc.lan в /etc/hosts и/etc/sysconfig/network.
mysqld1 0:off 1:off 2:on 3:on 4:on 5:on 6:off
>chkconfig --list mysqld2
mysqld2 0:off 1:off 2:on 3:on 4:on 5:on 6:off
lrwxrwxrwx 1 root root 17 Nov 6 02:54 K36mysqld1 -> ../init.d/mysqld1
lrwxrwxrwx 1 root root 17 Nov 6 03:27 K36mysqld2 -> ../init.d/mysqld2
lrwxrwxrwx 1 root root 17 Nov 6 02:54 K36mysqld1 -> ../init.d/mysqld1
lrwxrwxrwx 1 root root 17 Nov 6 03:27 K36mysqld2 -> ../init.d/mysqld2
lrwxrwxrwx 1 root root 17 Nov 6 03:27 K36mysqld2 -> ../init.d/mysqld2
lrwxrwxrwx 1 root root 17 Nov 6 02:54 S64mysqld1 -> ../init.d/mysqld1
lrwxrwxrwx 1 root root 17 Nov 6 03:27 K36mysqld2 -> ../init.d/mysqld2
lrwxrwxrwx 1 root root 17 Nov 6 02:54 S64mysqld1 -> ../init.d/mysqld1
lrwxrwxrwx 1 root root 17 Nov 6 03:27 K36mysqld2 -> ../init.d/mysqld2
lrwxrwxrwx 1 root root 17 Nov 6 02:54 S64mysqld1 -> ../init.d/mysqld1
lrwxrwxrwx 1 root root 17 Nov 6 03:27 K36mysqld2 -> ../init.d/mysqld2
lrwxrwxrwx 1 root root 17 Nov 6 02:54 S64mysqld1 -> ../init.d/mysqld1
lrwxrwxrwx 1 root root 17 Nov 6 02:54 K36mysqld1 -> ../init.d/mysqld1
lrwxrwxrwx 1 root root 17 Nov 6 03:27 K36mysqld2 -> ../init.d/mysqld2
Linux pc.lan 2.6.18-274.7.1.el5 #1 SMP Thu Oct 20 16:20:37 EDT 2011 i686 i686 i386 GNU/Linux
>rpm -qa | grep mysql
mysql-5.0.77-4.el5_6.6
mysql-server-5.0.77-4.el5_6.6
2,4c2,4
< port=3306
< datadir=/var/lib/mysql1
< socket=/var/lib/mysql1/mysql.sock
---
> port=3307
> datadir=/var/lib/mysql2
> socket=/var/lib/mysql2/mysql.sock
16,17c16,17
< log-error=/var/lib/mysql1/mysqld.log
< pid-file=/var/run/mysqld/mysqld1.pid
---
> log-error=/var/lib/mysql2/mysqld.log
> pid-file=/var/run/mysqld/mysqld2.pid
[console]>diff /etc/init.d/mysqld1 /etc/init.d/mysqld2
9,10c9,10
< # config: /etc/my1.cnf
< # pidfile: /var/run/mysqld/mysqld1.pid
---
> # config: /etc/my2.cnf
> # pidfile: /var/run/mysqld/mysqld2.pid
19c19
< prog="MySQL1"
---
> prog="MySQL2"
34c34
< get_mysql_option mysqld datadir "/var/lib/mysql1"
---
> get_mysql_option mysqld datadir "/var/lib/mysql2"
38c38
< get_mysql_option mysqld_safe log-error "/var/lib/mysql1/mysqld.log"
---
> get_mysql_option mysqld_safe log-error "/var/lib/mysql2/mysqld.log"
40c40
< get_mysql_option mysqld_safe pid-file "/var/run/mysqld/mysqld1.pid"
---
> get_mysql_option mysqld_safe pid-file "/var/run/mysqld/mysqld2.pid"
61c61
< /usr/bin/mysqld_safe --defaults-file="/etc/my1.cnf" --datadir="$datadir" --socket="$socketfile" \
---
> /usr/bin/mysqld_safe --defaults-file="/etc/my2.cnf" --datadir="$datadir" --socket="$socketfile" \
86c86
< [ $ret -eq 0 ] && touch /var/lock/subsys/mysqld1
---
> [ $ret -eq 0 ] && touch /var/lock/subsys/mysqld2
107c107
< rm -f /var/lock/subsys/mysqld1
---
> rm -f /var/lock/subsys/mysqld2
127c127
< [ -e /var/lock/subsys/mysqld1 ] && restart || :
---
> [ -e /var/lock/subsys/mysqld2 ] && restart ||
/console]
Не разобрался с аттачами на форуме, поэтому залил файлы на внешний сервер: http://zalil.ru/32000948. В архиве /etc/my?.cnf, /etc/init.d/mysqld* и скриншот того, что происходит при запуске.
Если надо, могу залить образ виртуальной машины VMware, на которой я провожу настройку.
