Kräver ClusterControl 1.6 eller senare. Gäller MySQL-baserade instanser/kluster.
Vid vissa tillfällen kanske du vill köra flera instanser av MySQL på en enda maskin. Du kanske vill ge olika användare tillgång till sina egna MySQL-servrar som de hanterar själva, eller så kanske du vill testa en ny MySQL-utgåva samtidigt som du behåller en befintlig produktionsinställning ostörd.
Det är möjligt att använda en annan MySQL-serverbinär per instans, eller använda samma binär för flera instanser (eller en kombination av de två metoderna). Du kan till exempel köra en server från MySQL 5.6 och en från MySQL 5.7, för att se hur de olika versionerna hanterar en viss arbetsbelastning. Eller så kanske du kör flera instanser av den senaste MySQL-versionen, som var och en hanterar olika databaser.
Oavsett om du använder distinkta serverbinärfiler eller inte, måste varje instans som du kör konfigureras med unika värden för flera driftsparametrar. Detta eliminerar risken för konflikter mellan instanser. Du kan använda MySQL Sandbox för att skapa flera MySQL-instanser. Eller så kan du använda mysqld_multi tillgängligt i MySQL för att starta eller stoppa valfritt antal separata mysqld-processer som körs på olika TCP/IP-portar och UNIX-sockets.
I det här blogginlägget visar vi dig hur du konfigurerar ClusterControl för att övervaka flera MySQL-instanser som körs på en värd.
Klusterkontrollbegränsning
I skrivande stund stöder inte ClusterControl övervakning av flera instanser på en värd per kluster/servergrupp. Det förutsätter följande bästa praxis:
- Endast en MySQL-instans per värd (fysisk server eller virtuell maskin).
- MySQL-dataredundans bör konfigureras på N+1-server.
- Alla MySQL-instanser körs med enhetlig konfiguration över klustret/servergruppen, t.ex. lyssningsport, fellogg, datadir, basedir, socket är identiska.
När det gäller punkterna som nämns ovan, antar ClusterControl att i en kluster/servergrupp:
- MySQL-instanser konfigureras enhetligt över ett kluster; samma port, samma plats för loggar, bas/datakatalog och andra kritiska konfigurationer.
- Den övervakar, hanterar och distribuerar endast en MySQL-instans per värd.
- MySQL-klienten måste vara installerad på värden och tillgänglig på den körbara sökvägen för motsvarande OS-användare.
- MySQL är bunden till en IP-adress som kan nås av ClusterControl-noden.
- Det fortsätter att övervaka värdstatistiken, t.ex. CPU/RAM/disk/nätverk för varje MySQL-instans individuellt. I en miljö med flera instanser per värd bör du förvänta dig redundant värdstatistik eftersom den övervakar samma värd flera gånger.
Med ovanstående antaganden fungerar inte följande ClusterControl-funktioner för en värd med flera instanser:
Säkerhetskopiering - Percona Xtrabackup stöder inte flera instanser per värd och mysqldump som körs av ClusterControl ansluter endast till standarduttaget.
Processhantering - ClusterControl använder standarden 'pgrep -f mysqld_safe' för att kontrollera om MySQL körs på den värden. Med flera MySQL-instanser är detta ett falskt positivt tillvägagångssätt. Som sådan kommer automatisk återställning för nod/kluster inte att fungera.
Konfigurationshantering - ClusterControl tillhandahåller standard MySQL-konfigurationskatalogen. Den finns vanligtvis under /etc/ och /etc/mysql.
Lösning
Att övervaka flera MySQL-instanser på en maskin är fortfarande möjligt med ClusterControl med en enkel lösning. Varje MySQL-instans måste behandlas som en enda enhet per servergrupp.
I det här exemplet har vi 3 MySQL-instanser på en enda värd skapad med MySQL Sandbox:
ClusterControl övervakar flera instanser på samma värdVi skapade våra MySQL-instanser med hjälp av följande kommandon:
$ su - sandbox
$ make_multiple_sandbox mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz
Som standard skapar MySQL Sandbox mysql-instanser som lyssnar på 127.0.0.1. Det är nödvändigt att konfigurera varje nod på lämpligt sätt för att få dem att lyssna på alla tillgängliga IP-adresser. Här är sammanfattningen av våra MySQL-instanser i värden:
[[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"
}
}
Nästa steg är att ändra konfigurationen av de nyskapade instanserna. Gå till my.cnf för var och en av dem och hash variabeln 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
Installera sedan mysql på din huvudnod och starta om alla instanser med skriptet 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
Från ClusterControl måste vi utföra "Import" för varje instans eftersom vi måste isolera dem i en annan grupp för att få det att fungera.
ClusterControl importerar befintlig serverFör nod1 anger du följande information i ClusterControl> Importera:
ClusterControl importerar befintlig serverSe till att sätta rätt portar (olika för olika instanser) och värd (samma för alla instanser).
Du kan övervaka framstegen genom att klicka på ikonen Aktivitet/Jobb i toppmenyn.
ClusterControl importerar befintlig serverinformationDu kommer att se nod1 i användargränssnittet när ClusterControl avslutar jobbet. Upprepa samma steg för att lägga till ytterligare två noder med port 15025 och 15026. Du bör se något liknande nedan när de har lagts till:
ClusterControl DashboardVarsågod. Vi har precis lagt till våra befintliga MySQL-instanser i ClusterControl för övervakning. Lycka till med övervakningen!
PS.:För att komma igång med ClusterControl, klicka här!