Знаете ли вы какой-либо «способ Debian» для установки нескольких экземпляров MySQL на одном сервере? Сервер будет получать данные, реплицированные из нескольких удаленных баз данных.
Я мог бы использовать такие скрипты, как mysqlsandbox но я предпочитаю придерживаться пакетов Debian и хотел бы иметь возможность обновлять установку без особых сложностей в будущем. Другое решение mysqlmanager - он работает с MySQL 5.1, но устарел и больше не выпускается с 5.5.
Итак, какова «лучшая практика» запуска нескольких экземпляров MySQL на одном сервере Debian?
Я считаю, что это так же просто, как бегать mysqld_multi
и правильно настроив my.cnf. mysqld_multi
является частью дистрибутива mysql, а не упакованной изюминкой.
Там есть патч делать /usr/share/mysql/mysqld_multi.server
подходит для использования в /etc/init.d
и еще один патч делать mysqld_multi
использовать файлы в /etc/mysql/conf.d
.
Вы можете инициализировать каталоги данных MySQL для новых экземпляров с помощью mysql_install_db
команда вроде этой:
mysql_install_db --datadir=/var/lib/mysql2
Не забудьте изменить пароль root только что созданного экземпляра:
mysqladmin --port 3307 --user=root password 'new-password'
В Debian 8 вы можете использовать механизм Systemd: больше нет необходимости mysqld_multi
.
НОТА: Я использую версию MariaDB! Не уверен, работает ли он с «классическим» пакетом MySQL.
Из /lib/systemd/system/mariadb@.service
:
Мультиэкземплярная версия mariadb. Потому что если вы запустите сразу несколько версий. Также используется для mariadb @ bootstrap для начальной загрузки Galera.
создать файл конфигурации /etc/mysql/conf.d/мой{instancename} .cnf
начать как systemctl start mariadb@{instancename}.server
Итак, создаем файл /etc/mysql/conf.d/myserver2.cnf
, и укажите в нем новые файлы pid / socket / datadir и сетевой порт:
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld-server2.pid
socket = /var/run/mysqld/mysqld-server2.sock
port = 3307
basedir = /usr
datadir = /var/lib/mysql-server2
tmpdir = /tmp
РЕДАКТИРОВАТЬ: будьте осторожны, чтобы первый экземпляр MySQL не читал этот файл конфигурации, с !includedir /etc/mysql/conf.d/*
в нижней части /etc/mysql/my.cnf
. Если это так, замените !includedir
с !include
каждого конфигурационного файла, КРОМЕ myserver2.cnf:
#!includedir /etc/mysql/conf.d/*
!include /etc/mysql/conf.d/conf1.cnf
!include /etc/mysql/conf.d/confX.cnf
Официальный документ MySQL указывает, что вы должны указать [mysqld]
так как [mysqld@server2]
(https://dev.mysql.com/doc/refman/5.7/en/using-systemd.html#systemd-multiple-mysql-instances), но это не работает с MariaDB. Так что просто позволь [mysqld]
.
Перед запуском нового демона не забудьте создать каталог данных и необходимые файлы:
mkdir /var/lib/mysql-server2
chown mysql:mysql /var/lib/mysql-server2
mysql_install_db --datadir=/var/lib/mysql-server2
Также перезагрузите конфигурацию демона systemd:
systemctl daemon-reload
И если вы хотите запустить этот демон при загрузке:
systemctl enable mariadb@server2
Для начала:
service mariadb@server2 start