Czy znasz jakiś „sposób Debiana” na konfigurowanie wielu instancji MySQL na jednym serwerze? Serwer otrzyma dane zreplikowane z wielu zdalnych baz danych.
Mógłbym używać skryptów takich jak mysqlsandbox, ale wolę trzymać się pakietów Debiana i chciałbym móc aktualizować instalację bez większych komplikacji w przyszłości. Innym rozwiązaniem jest mysqlmanager - działa z MySQL 5.1, ale jest przestarzały i nie jest już wydawany w wersji 5.5.
Więc jaka jest najlepsza praktyka uruchamiania wielu instancji MySQL na jednym serwerze Debian?
Odpowiedzi:
Uważam, że to tak proste, jak
mysqld_multi
prawidłowe uruchomienie i konfiguracja pliku my.cnf.mysqld_multi
jest częścią dystrybucji mysql - a nie pakietową falbanką.Dostępna jest łatka do
/usr/share/mysql/mysqld_multi.server
użycia/etc/init.d
i kolejna łatka domysqld_multi
używania plików/etc/mysql/conf.d
.Możesz zainicjować katalogi danych MySQL dla nowych instancji za pomocą następującego
mysql_install_db
polecenia:Nie zapomnij zmienić hasła roota nowo utworzonej instancji:
źródło
W systemie Debian 8 możesz użyć mechanizmu Systemd: nie potrzebujesz już więcej
mysqld_multi
.UWAGA: używam wersji MariaDB! Nie jestem pewien, czy działa z „klasycznym” pakietem MySQL.
Od
/lib/systemd/system/[email protected]
:/etc/mysql/conf.d/myserver2.cnf
Utwórz plik i podaj w nim nowe pliki pid / socket / datadir i port sieciowy:EDYCJA: uważaj, aby pierwsza instancja MySQL nie czytała tego pliku konfiguracyjnego,
!includedir /etc/mysql/conf.d/*
na dole/etc/mysql/my.cnf
. Jeśli tak jest, zamień na!includedir
z!include
każdego pliku konfiguracyjnego INNEGO niż myserver2.cnf:Oficjalny dokument MySQL wskazuje, że musisz nazwać
[mysqld]
jako[mysqld@server2]
( https://dev.mysql.com/doc/refman/5.7/en/using-systemd.html#systemd-multiple-mysql-instances ), ale to nie działa z MariaDB . Więc po prostu pozwól[mysqld]
.Przed uruchomieniem nowego demona nie zapomnij utworzyć datadir i potrzebnych plików:
Załaduj także ponownie konfigurację demona systemd:
A jeśli chcesz uruchomić tego demona podczas rozruchu:
Aby rozpocząć:
źródło
/etc/my.cnf
, dlatego.!includedir /etc/mysql/conf.d/*
. Dla większego bezpieczeństwa umieściłem każdyconf.d
plik ręcznie