Som systemadministratörer och utvecklare tillbringar vi mycket tid i en terminal. Så vi tog ClusterControl till terminalen med vårt kommandoradsgränssnittsverktyg som heter s9s. s9s ger ett enkelt gränssnitt till ClusterControl RPC v2 API. Du kommer att tycka att det är mycket användbart när du arbetar med storskaliga distributioner, eftersom CLI tillåter dig att designa mer komplexa funktioner och arbetsflöden.
Det här blogginlägget visar hur man använder s9s för att automatisera hanteringen av Galera Cluster för MySQL eller MariaDB, samt en enkel master-slave replikeringsinställning.
Inställningar
Du hittar installationsinstruktioner för just ditt operativsystem i dokumentationen. Vad som är viktigt att notera är att om du råkar använda de senaste s9s-verktygen, från GitHub, finns det en liten förändring i hur du skapar en användare. Följande kommando kommer att fungera bra:
s9s user --create --generate-key --controller="https://localhost:9501" dba
I allmänhet krävs två steg om du vill konfigurera CLI lokalt på ClusterControl-värden. Först måste du skapa en användare och sedan göra några ändringar i konfigurationsfilen - alla steg ingår i dokumentationen.
Implementering
När CLI har konfigurerats korrekt och har SSH-åtkomst till dina måldatabasvärdar kan du starta distributionsprocessen. I skrivande stund kan du använda CLI för att distribuera MySQL, MariaDB och PostgreSQL-kluster. Låt oss börja med ett exempel på hur man distribuerar Percona XtraDB Cluster 5.7. Ett enda kommando krävs för att göra det.
s9s cluster --create --cluster-type=galera --nodes="10.0.0.226;10.0.0.227;10.0.0.228" --vendor=percona --provider-version=5.7 --db-admin-passwd="pass" --os-user=root --cluster-name="PXC_Cluster_57" --wait
Det sista alternativet "--vänta" betyder att kommandot väntar tills jobbet är klart och visar dess framsteg. Du kan hoppa över det om du vill - i så fall kommer s9s-kommandot att återgå direkt till skalet efter att det registrerat ett nytt jobb i cmon. Detta är helt okej eftersom cmon är processen som sköter själva jobbet. Du kan alltid kontrollera förloppet för ett jobb separat med:
[email protected]:~# s9s job --list -l
--------------------------------------------------------------------------------------
Create Galera Cluster
Installing MySQL on 10.0.0.226 [██▊ ]
26.09%
Created : 2017-10-05 11:23:00 ID : 1 Status : RUNNING
Started : 2017-10-05 11:23:02 User : dba Host :
Ended : Group: users
--------------------------------------------------------------------------------------
Total: 1
Låt oss ta en titt på ett annat exempel. Den här gången skapar vi ett nytt kluster, MySQL-replikering:enkel master - slavpar. Återigen, ett enda kommando räcker:
[email protected]:~# s9s cluster --create --nodes="10.0.0.229?master;10.0.0.230?slave" --vendor=percona --cluster-type=mysqlreplication --provider-version=5.7 --os-user=root --wait
Create MySQL Replication Cluster
/ Job 6 FINISHED [██████████] 100% Cluster created
Vi kan nu verifiera att båda klustren är igång:
[email protected]:~# s9s cluster --list --long
ID STATE TYPE OWNER GROUP NAME COMMENT
1 STARTED galera dba users PXC_Cluster_57 All nodes are operational.
2 STARTED replication dba users cluster_2 All nodes are operational.
Total: 2
Naturligtvis är allt detta också synligt via GUI:
Låt oss nu lägga till en ProxySQL loadbalancer:
[email protected]:~# s9s cluster --add-node --nodes="proxysql://10.0.0.226" --cluster-id=1
WARNING: admin/admin
WARNING: proxy-monitor/proxy-monitor
Job with ID 7 registered.
Den här gången använde vi inte alternativet "--vänta", så om vi vill kontrollera framstegen måste vi göra det på egen hand. Observera att vi använder ett jobb-ID som returnerades av det tidigare kommandot, så vi får endast information om just detta jobb:
[email protected]:~# s9s job --list --long --job-id=7
--------------------------------------------------------------------------------------
Add ProxySQL to Cluster
Waiting for ProxySQL [██████▋ ]
65.00%
Created : 2017-10-06 14:09:11 ID : 7 Status : RUNNING
Started : 2017-10-06 14:09:12 User : dba Host :
Ended : Group: users
--------------------------------------------------------------------------------------
Total: 7
Skalar ut
Noder kan läggas till i vårt Galera-kluster via ett enda kommando:
s9s cluster --add-node --nodes 10.0.0.229 --cluster-id 1
Job with ID 8 registered.
[email protected]:~# s9s job --list --job-id=8
ID CID STATE OWNER GROUP CREATED RDY TITLE
8 1 FAILED dba users 14:15:52 0% Add Node to Cluster
Total: 8
Något gick fel. Vi kan kontrollera exakt vad som hände:
[email protected]:~# s9s job --log --job-id=8
addNode: Verifying job parameters.
10.0.0.229:3306: Adding host to cluster.
10.0.0.229:3306: Testing SSH to host.
10.0.0.229:3306: Installing node.
10.0.0.229:3306: Setup new node (installSoftware = true).
10.0.0.229:3306: Detected a running mysqld server. It must be uninstalled first, or you can also add it to ClusterControl.
Okej, den IP-adressen används redan för vår replikeringsserver. Vi borde ha använt en annan, gratis IP. Låt oss prova det:
[email protected]:~# s9s cluster --add-node --nodes 10.0.0.231 --cluster-id 1
Job with ID 9 registered.
[email protected]:~# s9s job --list --job-id=9
ID CID STATE OWNER GROUP CREATED RDY TITLE
9 1 FINISHED dba users 14:20:08 100% Add Node to Cluster
Total: 9
Hantera
Låt oss säga att vi vill ta en säkerhetskopia av vår replikeringsmaster. Vi kan göra det från GUI men ibland kan vi behöva integrera det med externa skript. ClusterControl CLI skulle passa perfekt för ett sådant fall. Låt oss kolla vilka kluster vi har:
[email protected]:~# s9s cluster --list --long
ID STATE TYPE OWNER GROUP NAME COMMENT
1 STARTED galera dba users PXC_Cluster_57 All nodes are operational.
2 STARTED replication dba users cluster_2 All nodes are operational.
Total: 2
Låt oss sedan kontrollera värdarna i vårt replikeringskluster, med kluster-ID 2:
[email protected]:~# s9s nodes --list --long --cluster-id=2
STAT VERSION CID CLUSTER HOST PORT COMMENT
soM- 5.7.19-17-log 2 cluster_2 10.0.0.229 3306 Up and running
soS- 5.7.19-17-log 2 cluster_2 10.0.0.230 3306 Up and running
coC- 1.4.3.2145 2 cluster_2 10.0.2.15 9500 Up and running
Som vi kan se finns det tre värdar som ClusterControl känner till - två av dem är MySQL-värdar (10.0.0.229 och 10.0.0.230), den tredje är själva ClusterControl-instansen. Låt oss bara skriva ut relevanta MySQL-värdar:
[email protected]:~# s9s nodes --list --long --cluster-id=2 10.0.0.2*
STAT VERSION CID CLUSTER HOST PORT COMMENT
soM- 5.7.19-17-log 2 cluster_2 10.0.0.229 3306 Up and running
soS- 5.7.19-17-log 2 cluster_2 10.0.0.230 3306 Up and running
Total: 3
I kolumnen "STAT" kan du se några tecken där. För mer information föreslår vi att du tittar på manualsidan för s9s-noder (man s9s-noder). Här ska vi bara sammanfatta de viktigaste bitarna. Det första tecknet berättar om typen av nod:"s" betyder att det är en vanlig MySQL-nod, "c" - ClusterControl-kontroller. Det andra tecknet beskriver nodens tillstånd:"o" talar om för oss att den är online. Tredje karaktären - nodens roll. Här beskriver "M" en master och "S" - en slav medan "C" står för controller. Det sista fjärde tecknet talar om för oss om noden är i underhållsläge. "-" betyder att inget underhåll är planerat. Annars skulle vi se "M" här. Så från dessa data kan vi se att vår master är en värd med IP:10.0.0.229. Låt oss ta en säkerhetskopia av den och lagra den på styrenheten.
[email protected]:~# s9s backup --create --nodes=10.0.0.229 --cluster-id=2 --backup-method=xtrabackupfull --wait
Create Backup
| Job 12 FINISHED [██████████] 100% Command ok
Vi kan sedan verifiera om det verkligen slutfördes ok. Observera alternativet "--backup-format" som låter dig definiera vilken information som ska skrivas ut:
[email protected]:~# s9s backup --list --full --backup-format="Started: %B Completed: %E Method: %M Stored on: %S Size: %s %F\n" --cluster-id=2
Started: 15:29:11 Completed: 15:29:19 Method: xtrabackupfull Stored on: 10.0.0.229 Size: 543382 backup-full-2017-10-06_152911.xbstream.gz
Total 1
Severalnines DevOps-guide till databashanteringLär dig om vad du behöver veta för att automatisera och hantera dina databaser med öppen källkod Ladda ner för gratisrelaterade resurser Databasautomation:Integrering av ClusterControl CLI med din ChatBot Hur man använder s9s – Kommandoradsgränssnittet till ClusterControl Övervakning
Alla databaser måste övervakas. ClusterControl använder rådgivare för att titta på några av mätvärdena på både MySQL och operativsystemet. När ett villkor är uppfyllt skickas ett meddelande. ClusterControl tillhandahåller också en omfattande uppsättning grafer, både i realtid och historiska för obduktion eller kapacitetsplanering. Ibland skulle det vara bra att ha tillgång till några av dessa mätvärden utan att behöva gå igenom GUI. ClusterControl CLI gör det möjligt genom kommandot s9s-node. Information om hur man gör det finns på manualsidan för s9s-node. Vi visar några exempel på vad du kan göra med CLI.
Först och främst, låt oss ta en titt på alternativet "--node-format" till kommandot "s9s node". Som du kan se finns det många alternativ för att skriva ut intressant innehåll.
[email protected]:~# s9s node --list --node-format "%N %T %R %c cores %u%% CPU utilization %fmG of free memory, %tMB/s of net TX+RX, %M\n" "10.0.0.2*"
10.0.0.226 galera none 1 cores 13.823200% CPU utilization 0.503227G of free memory, 0.061036MB/s of net TX+RX, Up and running
10.0.0.227 galera none 1 cores 13.033900% CPU utilization 0.543209G of free memory, 0.053596MB/s of net TX+RX, Up and running
10.0.0.228 galera none 1 cores 12.929100% CPU utilization 0.541988G of free memory, 0.052066MB/s of net TX+RX, Up and running
10.0.0.226 proxysql 1 cores 13.823200% CPU utilization 0.503227G of free memory, 0.061036MB/s of net TX+RX, Process 'proxysql' is running.
10.0.0.231 galera none 1 cores 13.104700% CPU utilization 0.544048G of free memory, 0.045713MB/s of net TX+RX, Up and running
10.0.0.229 mysql master 1 cores 11.107300% CPU utilization 0.575871G of free memory, 0.035830MB/s of net TX+RX, Up and running
10.0.0.230 mysql slave 1 cores 9.861590% CPU utilization 0.580315G of free memory, 0.035451MB/s of net TX+RX, Up and running
Med det vi visade här kan du förmodligen föreställa dig några fall för automatisering. Till exempel kan du titta på CPU-användningen av noderna och om den når någon tröskel kan du utföra ett annat s9s-jobb för att snurra upp en ny nod i Galera-klustret. Du kan också till exempel övervaka minnesutnyttjandet och skicka varningar om det passerar någon tröskel.
CLI kan mer än så. Först och främst är det möjligt att kontrollera graferna från kommandoraden. Naturligtvis är de inte lika funktionsrika som grafer i GUI, men ibland räcker det bara att se en graf för att hitta ett oväntat mönster och avgöra om det är värt att undersöka ytterligare.
[email protected]:~# s9s node --stat --cluster-id=1 --begin="00:00" --end="14:00" --graph=load 10.0.0.231
[email protected]:~# s9s node --stat --cluster-id=1 --begin="00:00" --end="14:00" --graph=sqlqueries 10.0.0.231
Under nödsituationer kanske du vill kontrollera resursutnyttjandet över hela klustret. Du kan skapa en toppliknande utdata som kombinerar data från alla klusternoder:
[email protected]:~# s9s process --top --cluster-id=1
PXC_Cluster_57 - 14:38:01 All nodes are operational.
4 hosts, 7 cores, 2.2 us, 3.1 sy, 94.7 id, 0.0 wa, 0.0 st,
GiB Mem : 2.9 total, 0.2 free, 0.9 used, 0.2 buffers, 1.6 cached
GiB Swap: 3 total, 0 used, 3 free,
PID USER HOST PR VIRT RES S %CPU %MEM COMMAND
8331 root 10.0.2.15 20 743748 40948 S 10.28 5.40 cmon
26479 root 10.0.0.226 20 278532 6448 S 2.49 0.85 accounts-daemon
5466 root 10.0.0.226 20 95372 7132 R 1.72 0.94 sshd
651 root 10.0.0.227 20 278416 6184 S 1.37 0.82 accounts-daemon
716 root 10.0.0.228 20 278304 6052 S 1.35 0.80 accounts-daemon
22447 n/a 10.0.0.226 20 2744444 148820 S 1.20 19.63 mysqld
975 mysql 10.0.0.228 20 2733624 115212 S 1.18 15.20 mysqld
13691 n/a 10.0.0.227 20 2734104 130568 S 1.11 17.22 mysqld
22994 root 10.0.2.15 20 30400 9312 S 0.93 1.23 s9s
9115 root 10.0.0.227 20 95368 7192 S 0.68 0.95 sshd
23768 root 10.0.0.228 20 95372 7160 S 0.67 0.94 sshd
15690 mysql 10.0.2.15 20 1102012 209056 S 0.67 27.58 mysqld
11471 root 10.0.0.226 20 95372 7392 S 0.17 0.98 sshd
22086 vagrant 10.0.2.15 20 95372 4960 S 0.17 0.65 sshd
7282 root 10.0.0.226 20 0 0 S 0.09 0.00 kworker/u4:2
9003 root 10.0.0.226 20 0 0 S 0.09 0.00 kworker/u4:1
1195 root 10.0.0.227 20 0 0 S 0.09 0.00 kworker/u4:0
27240 root 10.0.0.227 20 0 0 S 0.09 0.00 kworker/1:1
9933 root 10.0.0.227 20 0 0 S 0.09 0.00 kworker/u4:2
16181 root 10.0.0.228 20 0 0 S 0.08 0.00 kworker/u4:1
1744 root 10.0.0.228 20 0 0 S 0.08 0.00 kworker/1:1
28506 root 10.0.0.228 20 95372 7348 S 0.08 0.97 sshd
691 messagebus 10.0.0.228 20 42896 3872 S 0.08 0.51 dbus-daemon
11892 root 10.0.2.15 20 0 0 S 0.08 0.00 kworker/0:2
15609 root 10.0.2.15 20 403548 12908 S 0.08 1.70 apache2
256 root 10.0.2.15 20 0 0 S 0.08 0.00 jbd2/dm-0-8
840 root 10.0.2.15 20 316200 1308 S 0.08 0.17 VBoxService
14694 root 10.0.0.227 20 95368 7200 S 0.00 0.95 sshd
12724 n/a 10.0.0.227 20 4508 1780 S 0.00 0.23 mysqld_safe
10974 root 10.0.0.227 20 95368 7400 S 0.00 0.98 sshd
14712 root 10.0.0.227 20 95368 7384 S 0.00 0.97 sshd
16952 root 10.0.0.227 20 95368 7344 S 0.00 0.97 sshd
17025 root 10.0.0.227 20 95368 7100 S 0.00 0.94 sshd
27075 root 10.0.0.227 20 0 0 S 0.00 0.00 kworker/u4:1
27169 root 10.0.0.227 20 0 0 S 0.00 0.00 kworker/0:0
881 root 10.0.0.227 20 37976 760 S 0.00 0.10 rpc.mountd
100 root 10.0.0.227 0 0 0 S 0.00 0.00 deferwq
102 root 10.0.0.227 0 0 0 S 0.00 0.00 bioset
11876 root 10.0.0.227 20 9588 2572 S 0.00 0.34 bash
11852 root 10.0.0.227 20 95368 7352 S 0.00 0.97 sshd
104 root 10.0.0.227 0 0 0 S 0.00 0.00 kworker/1:1H
När du tar en titt på toppen ser du CPU- och minnesstatistik samlad över hela klustret.
[email protected]:~# s9s process --top --cluster-id=1
PXC_Cluster_57 - 14:38:01 All nodes are operational.
4 hosts, 7 cores, 2.2 us, 3.1 sy, 94.7 id, 0.0 wa, 0.0 st,
GiB Mem : 2.9 total, 0.2 free, 0.9 used, 0.2 buffers, 1.6 cached
GiB Swap: 3 total, 0 used, 3 free,
Nedan hittar du listan över processer från alla noder i klustret.
PID USER HOST PR VIRT RES S %CPU %MEM COMMAND
8331 root 10.0.2.15 20 743748 40948 S 10.28 5.40 cmon
26479 root 10.0.0.226 20 278532 6448 S 2.49 0.85 accounts-daemon
5466 root 10.0.0.226 20 95372 7132 R 1.72 0.94 sshd
651 root 10.0.0.227 20 278416 6184 S 1.37 0.82 accounts-daemon
716 root 10.0.0.228 20 278304 6052 S 1.35 0.80 accounts-daemon
22447 n/a 10.0.0.226 20 2744444 148820 S 1.20 19.63 mysqld
975 mysql 10.0.0.228 20 2733624 115212 S 1.18 15.20 mysqld
13691 n/a 10.0.0.227 20 2734104 130568 S 1.11 17.22 mysqld
Detta kan vara extremt användbart om du behöver ta reda på vad som orsakar belastningen och vilken nod som är mest påverkad.
Förhoppningsvis gör CLI-verktyget det lättare för dig att integrera ClusterControl med externa skript och infrastrukturverktyg för orkestrering. Vi hoppas att du kommer att gilla att använda det här verktyget och om du har feedback om hur du kan förbättra det får du gärna meddela oss.