Kræver ClusterControl 1.6 eller nyere. Gælder for MySQL-baserede forekomster/klynger.
Ved nogle lejligheder vil du måske køre flere forekomster af MySQL på en enkelt maskine. Du vil måske give forskellige brugere adgang til deres egne MySQL-servere, som de selv administrerer, eller du vil måske teste en ny MySQL-udgivelse, mens du holder en eksisterende produktionsopsætning uforstyrret.
Det er muligt at bruge en anden MySQL-server binær pr. instans, eller bruge den samme binære for flere instanser (eller en kombination af de to tilgange). For eksempel kan du køre en server fra MySQL 5.6 og en fra MySQL 5.7 for at se, hvordan de forskellige versioner håndterer en bestemt arbejdsbyrde. Eller du kan køre flere forekomster af den seneste MySQL-version, som hver administrerer et andet sæt databaser.
Uanset om du bruger forskellige serverbinære filer eller ej, skal hver instans, du kører, konfigureres med unikke værdier for flere driftsparametre. Dette eliminerer potentialet for konflikt mellem instanser. Du kan bruge MySQL Sandbox til at oprette flere MySQL-forekomster. Eller du kan bruge mysqld_multi tilgængelig i MySQL til at starte eller stoppe et hvilket som helst antal separate mysqld-processer, der kører på forskellige TCP/IP-porte og UNIX-sockets.
I dette blogindlæg viser vi dig, hvordan du konfigurerer ClusterControl til at overvåge flere MySQL-instanser, der kører på én vært.
ClusterControl Begrænsning
I skrivende stund understøtter ClusterControl ikke overvågning af flere forekomster på én vært pr. klynge/servergruppe. Det forudsætter følgende bedste praksis:
- Kun én MySQL-instans pr. vært (fysisk server eller virtuel maskine).
- MySQL-dataredundans skal konfigureres på N+1-server.
- Alle MySQL-instanser kører med ensartet konfiguration på tværs af klyngen/servergruppen, f.eks. er lytteport, fejllog, datadir, basedir, socket identiske.
Med hensyn til de punkter, der er nævnt ovenfor, antager ClusterControl, at i en klynge/servergruppe:
- MySQL-instanser er konfigureret ensartet på tværs af en klynge; samme port, samme placering af logfiler, base/datamappe og andre kritiske konfigurationer.
- Det overvåger, administrerer og implementerer kun én MySQL-instans pr. vært.
- MySQL-klienten skal være installeret på værten og tilgængelig på den eksekverbare sti for den tilsvarende OS-bruger.
- MySQL er bundet til en IP-adresse, der kan nås af ClusterControl-noden.
- Det bliver ved med at overvåge værtsstatistikken, f.eks. CPU/RAM/disk/netværk for hver MySQL-instans individuelt. I et miljø med flere forekomster pr. vært, bør du forvente redundante værtsstatistikker, da den overvåger den samme vært flere gange.
Med ovenstående antagelser virker følgende ClusterControl-funktioner ikke for en vært med flere forekomster:
Sikkerhedskopiering - Percona Xtrabackup understøtter ikke flere forekomster pr. vært, og mysqldump, der udføres af ClusterControl, forbinder kun til standardsocket.
Processtyring - ClusterControl bruger standarden 'pgrep -f mysqld_safe' til at kontrollere, om MySQL kører på den vært. Med flere MySQL-instanser er dette en falsk positiv tilgang. Som sådan fungerer automatisk gendannelse for node/cluster ikke.
Konfigurationsstyring - ClusterControl leverer standard MySQL-konfigurationsmappen. Det ligger normalt under /etc/ og /etc/mysql.
Løsning
Overvågning af flere MySQL-instanser på en maskine er stadig muligt med ClusterControl med en simpel løsning. Hver MySQL-instans skal behandles som en enkelt enhed pr. servergruppe.
I dette eksempel har vi 3 MySQL-instanser på en enkelt vært oprettet med MySQL Sandbox:
ClusterControl, der overvåger flere forekomster på samme værtVi oprettede vores MySQL-forekomster ved hjælp af følgende kommandoer:
$ su - sandbox
$ make_multiple_sandbox mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz
Som standard opretter MySQL Sandbox mysql-forekomster, der lytter til 127.0.0.1. Det er nødvendigt at konfigurere hver node korrekt for at få dem til at lytte til alle tilgængelige IP-adresser. Her er oversigten over vores MySQL-forekomster i værten:
[[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æste trin er at ændre konfigurationen af de nyoprettede forekomster. Gå til my.cnf for hver af dem og hash bind_address variabel:
[[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
Installer derefter mysql på din masterknude og genstart alle forekomster ved hjælp af restart_all script.
[[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
Fra ClusterControl skal vi udføre 'Import' for hver instans, da vi skal isolere dem i en anden gruppe for at få det til at fungere.
ClusterControl importerer eksisterende serverFor node1 skal du indtaste følgende oplysninger i ClusterControl> Importer:
ClusterControl importerer eksisterende serverSørg for at sætte korrekte porte (forskellige for forskellige forekomster) og vært (samme for alle forekomster).
Du kan overvåge fremskridtene ved at klikke på aktivitets-/job-ikonet i topmenuen.
ClusterControl importerer eksisterende serveroplysningerDu vil se node1 i brugergrænsefladen, når ClusterControl afslutter jobbet. Gentag de samme trin for at tilføje yderligere to noder med port 15025 og 15026. Du bør se noget som nedenstående, når de er tilføjet:
ClusterControl DashboardVærsgo. Vi har lige tilføjet vores eksisterende MySQL-instanser til ClusterControl til overvågning. God overvågning!
PS.:Klik her for at komme i gang med ClusterControl!