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


9

Чи знаєте ви який-небудь "Debian спосіб" встановлення декількох екземплярів MySQL на одному сервері? Сервер отримуватиме репліку даних з декількох віддалених баз даних.

Я можу використовувати такі сценарії, як mysqlsandbox, але я вважаю за краще дотримуватися пакунків Debian і хотів би в майбутньому оновити налаштування без особливих ускладнень. Ще одне рішення - mysqlmanager - воно працює з MySQL 5.1, але воно застаріле і більше не випускається з 5.5.

То яка найкраща практика для запуску декількох екземплярів MySQL на одному сервері Debian?


Нині докер можна використовувати в таких випадках.
ALex_hha

Відповіді:


12

Я вважаю, це так просто, як запустити 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

Не забудьте змінити кореневий пароль новоствореного екземпляра:

mysqladmin --port 3307 --user=root password 'new-password'

Дякую; ви використовуєте це на практиці? якісь страшилки / підказки?
pQd

1
Моя історія жахів - це відновлення даних, що триває 2 дні, оскільки сценарій init debian не вимикався витончено mysql, оскільки відключення зайняло занадто багато часу. З тих пір я не використовую пакунок debian mysql, лише бінарний дистрибутив Percona та його інцидент
Gabor Vincze

@GaborVincze - це було в налаштуваннях mysqld_multi або "звичайна" установка з одним екземпляром mysql?
pQd

Це була регулярна установка. 5,1
Габор Вінче

1
Я використовую mysqld_multi на практиці. Найскладніша частина полягає в тому, що вам потрібно використовувати mysqld_multi / mysqladmin для запуску / вимкнення екземплярів проти /etc/init.d/mysqld перезапуску - не існує страшної кількості попередньо консервованих сценаріїв, які спрощують його. Після того, як ви це освоїте, він стає старим капелюхом і є дуже зручним способом розкрутити екземпляр для, скажімо, відновлення, затримки реплікації - що завгодно.
тоніс

3

У 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@{instanname}.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

EDIT: будьте обережні, щоб перший екземпляр 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-instance ), але це не працює з MariaDB . Тому просто нехай [mysqld].

Перш ніж запустити новий демон, не забудьте створити файл данихdir та потрібні файли:

mkdir /var/lib/mysql-server2
chown mysql:mysql /var/lib/mysql-server2
mysql_install_db --datadir=/var/lib/mysql-server2

Також перезавантажте systemd daemon config:

systemctl daemon-reload

І якщо ви хочете запустити цей демон при завантаженні:

systemctl enable mariadb@server2

Щоб почати це:

service mariadb@server2 start

Основний (неінсталяційний) mysql читає /etc/my.cnf, ось чому.
Майкл Гемптон

Я відредагував свою відповідь: насправді виявляється, що перший екземпляр DO прочитав файл server2.cnf, с !includedir /etc/mysql/conf.d/*. Для кращої безпеки я включив кожен conf.dфайл вручну
гірше
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.