пятница, 30 декабря 2016 г.

Запуск нескольких MySQL серверов на одном сервере (Ubuntu)

На самом деле, это не моя статья, а вольный перевод статьи Running Multiple Instances of MySQL on the Same Machine блога Marius Ducea. И, даже, наверное не перевод, а набор инструкций для запуска нескольких mysql серверов, чтобы всегда было под рукой и можно было просто копипастить.

1. Создаем дополнительные директории для конфигов и логов

sudo mkdir /var/lib/mysql2
sudo chown -R mysql.mysql /var/lib/mysql2/
sudo mkdir /var/log/mysql2
sudo chown -R mysql.mysql /var/log/mysql2

2. Необходимо создать новый конфигурационный файл MySQL сервера.

Копируем конфигурацию основного сервера
sudo cp -R /etc/mysql/ /etc/mysql2
Далее нам необходимо изменить несколько параметров, а именно: указать новые значения для используемого порта (стандартно используемый порт: 3306), pid файла, и указать новые пути к директориям с данными и логам:
cd /etc/mysql2/
sudo sed -i 's/3306/3307/g' my.cnf
sudo sed -i 's/mysqld.sock/mysqld2.sock/g' my.cnf
sudo sed -i 's/mysqld.pid/mysqld2.pid/g' my.cnf
sudo sed -i 's/var\/lib\/mysql/var\/lib\/mysql2/g' my.cnf
sudo sed -i 's/var\/log\/mysql/var\/log\/mysql2/g' my.cnf

3. Инициализация и запуск

Наконец, мы должны инициализировать начальные базы данных нового MySQL сервера:
sudo aa-complain /usr/sbin/mysqld
mysql_install_db --user=mysql --datadir=/var/lib/mysql2/
В качестве альтернативы, можно скопировать базы данных существующего сервера, которые находятся в /var/lib/mysql вручную (предварительно остановив MySQL сервер).
Ну и, наконец, запустим новый сервер командой
sudo mysqld_safe --defaults-file=/etc/mysql2/my.cnf &
изменим пароль для пользователя root
sudo mysqladmin -S /var/run/mysqld/mysqld2.sock -u root password NEWPASSWORD
проверим соединение
mysql -S /var/run/mysqld/mysqld2.sock
или
mysql -h 127.0.0.1 -P 3307
для остановки сервера
sudo mysqladmin -S /var/run/mysqld/mysqld2.sock shutdown

мне еще пришлось в /etc/mysql2/my.cnf
изменить строку
!includedir /etc/mysql/conf.d/
на
!includedir /etc/mysql2/conf.d/


Для автоматического запуска
создал файл /usr/sbin/msafe.sh
с содержимым:
#!/bin/sh
sudo mysqld_safe --defaults-file=/etc/mysql2/my.cnf

в файл /etc/rc.local
перед exit 0
добавил вызов скрипта:
/usr/sbin/msafe.sh

Комментариев нет:

Отправить комментарий