Vyžaduje ClusterControl 1.6 nebo novější. Platí pro instance/klastry založené na MySQL.
V některých případech můžete chtít spustit více instancí MySQL na jednom počítači. Možná budete chtít poskytnout různým uživatelům přístup k jejich vlastním serverům MySQL, které sami spravují, nebo budete chtít otestovat nové vydání MySQL a přitom zachovat stávající produkční nastavení nerušené.
Je možné použít jiný binární soubor MySQL serveru pro každou instanci nebo použít stejný binární soubor pro více instancí (nebo kombinaci těchto dvou přístupů). Můžete například spustit server z MySQL 5.6 a jeden z MySQL 5.7, abyste viděli, jak různé verze zvládají určitou zátěž. Nebo můžete spustit více instancí nejnovější verze MySQL, z nichž každá bude spravovat jinou sadu databází.
Bez ohledu na to, zda používáte odlišné binární soubory serveru, každá instance, kterou spustíte, musí být nakonfigurována s jedinečnými hodnotami pro několik provozních parametrů. Tím se eliminuje možnost konfliktu mezi instancemi. MySQL Sandbox můžete použít k vytvoření více instancí MySQL. Nebo můžete použít mysqld_multi dostupné v MySQL ke spuštění nebo zastavení libovolného počtu samostatných procesů mysqld běžících na různých portech TCP/IP a soketech UNIX.
V tomto příspěvku na blogu vám ukážeme, jak nakonfigurovat ClusterControl pro sledování více instancí MySQL běžících na jednom hostiteli.
Omezení ClusterControl
V době psaní tohoto článku ClusterControl nepodporuje monitorování více instancí na jednom hostiteli na skupinu clusteru/serveru. Předpokládá následující osvědčené postupy:
- Pouze jedna instance MySQL na hostitele (fyzický server nebo virtuální počítač).
- Na serveru N+1 by měla být nakonfigurována redundance dat MySQL.
- Všechny instance MySQL běží s jednotnou konfigurací napříč skupinou clusteru/serveru, např. port naslouchání, protokol chyb, datový adresář, základna, soket jsou identické.
S ohledem na výše uvedené body ClusterControl předpokládá, že ve skupině cluster/server:
- Instance MySQL jsou konfigurovány jednotně v rámci clusteru; stejný port, stejné umístění protokolů, základní/datový adresář a další důležité konfigurace.
- Monitoruje, spravuje a nasazuje pouze jednu instanci MySQL na hostitele.
- Klient MySQL musí být nainstalován na hostiteli a dostupný na cestě ke spustitelnému souboru pro příslušného uživatele operačního systému.
- MySQL je vázána na IP adresu dosažitelnou uzlem ClusterControl.
- Stále sleduje statistiky hostitele, např. CPU/RAM/disk/síť pro každou instanci MySQL samostatně. V prostředí s více instancemi na hostitele byste měli očekávat redundantní statistiky hostitele, protože monitoruje stejného hostitele vícekrát.
S výše uvedenými předpoklady nefungují následující funkce ClusterControl pro hostitele s více instancemi:
Záloha – Percona Xtrabackup nepodporuje více instancí na hostitele a mysqldump spouštěný ClusterControl se připojuje pouze k výchozímu soketu.
Správa procesů – ClusterControl používá standardní ‚pgrep -f mysqld_safe‘ ke kontrole, zda na tomto hostiteli běží MySQL. S více instancemi MySQL je to falešně pozitivní přístup. Automatické obnovení pro uzel/klastr jako takové nebude fungovat.
Správa konfigurace – ClusterControl poskytuje standardní konfigurační adresář MySQL. Obvykle se nachází pod /etc/ a /etc/mysql.
Řešení
Monitorování více instancí MySQL na počítači je stále možné pomocí ClusterControl s jednoduchým řešením. Každá instance MySQL musí být považována za jednu entitu na skupinu serverů.
V tomto příkladu máme 3 instance MySQL na jednom hostiteli vytvořené pomocí MySQL Sandbox:
ClusterControl monitorování více instancí na stejném hostiteliNaše instance MySQL jsme vytvořili pomocí následujících příkazů:
$ su - sandbox
$ make_multiple_sandbox mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz
Ve výchozím nastavení MySQL Sandbox vytváří instance mysql, které naslouchají 127.0.0.1. Každý uzel je nutné vhodně nakonfigurovat, aby naslouchal všem dostupným IP adresám. Zde je souhrn našich instancí MySQL v hostiteli:
[[email protected] multi_msb_mysql-5_7_23]$ cat default_connection.json
{
"node1":
{
"host": "master",
"port": "15024",
"socket": "/tmp/mysql_sandbox15024.sock",
"username": "[email protected]%",
"password": "msandbox"
}
,
"node2":
{
"host": "master",
"port": "15025",
"socket": "/tmp/mysql_sandbox15025.sock",
"username": "[email protected]%",
"password": "msandbox"
}
,
"node3":
{
"host": "master",
"port": "15026",
"socket": "/tmp/mysql_sandbox15026.sock",
"username": "[email protected]%",
"password": "msandbox"
}
}
Dalším krokem je úprava konfigurace nově vytvořených instancí. Přejděte na my.cnf pro každý z nich a hashujte proměnnou bind_address:
[[email protected] multi_msb_mysql-5_7_23]$ ps -ef | grep mysqld_safe
sandbox 13086 1 0 08:58 pts/0 00:00:00 /bin/sh bin/mysqld_safe --defaults-file=/home/sandbox/sandboxes/multi_msb_mysql-5_7_23/node1/my.sandbox.cnf
sandbox 13805 1 0 08:58 pts/0 00:00:00 /bin/sh bin/mysqld_safe --defaults-file=/home/sandbox/sandboxes/multi_msb_mysql-5_7_23/node2/my.sandbox.cnf
sandbox 14065 1 0 08:58 pts/0 00:00:00 /bin/sh bin/mysqld_safe --defaults-file=/home/sandbox/sandboxes/multi_msb_mysql-5_7_23/node3/my.sandbox.cnf
[[email protected] multi_msb_mysql-5_7_23]$ vi my.cnf
#bind_address = 127.0.0.1
Poté nainstalujte mysql na váš hlavní uzel a restartujte všechny instance pomocí skriptu restart_all.
[[email protected] multi_msb_mysql-5_7_23]$ yum install mysql
[[email protected] multi_msb_mysql-5_7_23]$ ./restart_all
# executing "stop" on /home/sandbox/sandboxes/multi_msb_mysql-5_7_23
executing "stop" on node 1
executing "stop" on node 2
executing "stop" on node 3
# executing "start" on /home/sandbox/sandboxes/multi_msb_mysql-5_7_23
executing "start" on node 1
. sandbox server started
executing "start" on node 2
. sandbox server started
executing "start" on node 3
. sandbox server started
Z ClusterControl musíme pro každou instanci provést ‚Import‘, protože je potřebujeme izolovat do jiné skupiny, aby to fungovalo.
ClusterControl import existujícího serveruPro uzel1 zadejte následující informace v ClusterControl> Import:
ClusterControl import existujícího serveruUjistěte se, že jste vložili správné porty (různé pro různé instance) a hostitele (stejné pro všechny instance).
Průběh můžete sledovat kliknutím na ikonu Aktivita/Úlohy v horním menu.
ClusterControl importuje podrobnosti stávajícího serveruJakmile ClusterControl dokončí úlohu, uvidíte uzel1 v uživatelském rozhraní. Opakujte stejné kroky pro přidání dalších dvou uzlů s portem 15025 a 15026. Jakmile budou přidány, měli byste vidět něco jako níže:
Řídicí panel ClusterControlTady máš. Právě jsme přidali naše stávající instance MySQL do ClusterControl pro monitorování. Příjemné sledování!
PS.:Chcete-li začít s ClusterControl, klikněte sem!