Назад | Перейти на главную страницу

Что такое «способ Debian» для установки нескольких экземпляров MySQL на одном сервере?

Знаете ли вы какой-либо «способ 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