sql >> Database >  >> RDS >> MariaDB

Hoe Galera Cluster te automatiseren met behulp van de ClusterControl CLI

Als systeembeheerders en ontwikkelaars brengen we veel tijd door in een terminal. Dus brachten we ClusterControl naar de terminal met onze opdrachtregelinterfacetool genaamd s9s. s9s biedt een eenvoudige interface voor de ClusterControl RPC v2 API. U zult het erg handig vinden als u met grootschalige implementaties werkt, omdat u met de CLI complexere functies en workflows kunt ontwerpen.

Deze blogpost laat zien hoe u s9s kunt gebruiken om het beheer van Galera Cluster voor MySQL of MariaDB te automatiseren, evenals een eenvoudige master-slave-replicatie-installatie.

Instellen

U kunt installatie-instructies voor uw specifieke besturingssysteem vinden in de documentatie. Wat belangrijk is om op te merken, is dat als je toevallig de nieuwste s9s-tools van GitHub gebruikt, er een kleine verandering is in de manier waarop je een gebruiker aanmaakt. Het volgende commando werkt prima:

s9s user --create --generate-key --controller="https://localhost:9501" dba

Over het algemeen zijn er twee stappen vereist als u CLI lokaal op de ClusterControl-host wilt configureren. Eerst moet u een gebruiker maken en vervolgens enkele wijzigingen aanbrengen in het configuratiebestand - alle stappen zijn opgenomen in de documentatie.

Implementatie

Zodra de CLI correct is geconfigureerd en SSH-toegang heeft tot uw doeldatabasehosts, kunt u het implementatieproces starten. Op het moment van schrijven kunt u de CLI gebruiken om MySQL-, MariaDB- en PostgreSQL-clusters te implementeren. Laten we beginnen met een voorbeeld van hoe Percona XtraDB Cluster 5.7 kan worden geïmplementeerd. Hiervoor is een enkele opdracht nodig.

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

De laatste optie "--wait" betekent dat de opdracht wacht tot de taak is voltooid, waarbij de voortgang wordt weergegeven. Je kunt het overslaan als je wilt - in dat geval zal het s9s-commando onmiddellijk terugkeren naar shell nadat het een nieuwe taak in cmon heeft geregistreerd. Dit is prima, aangezien cmon het proces is dat de taak zelf afhandelt. U kunt de voortgang van een taak altijd afzonderlijk controleren met:

[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

Laten we een ander voorbeeld bekijken. Deze keer maken we een nieuw cluster, MySQL-replicatie:eenvoudig master-slave-paar. Nogmaals, een enkele opdracht is voldoende:

[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

We kunnen nu verifiëren dat beide clusters actief zijn:

[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

Dit alles is natuurlijk ook zichtbaar via de GUI:

Laten we nu een ProxySQL-loadbalancer toevoegen:

[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.

Deze keer hebben we de '--wait'-optie niet gebruikt, dus als we de voortgang willen controleren, moeten we het alleen doen. Houd er rekening mee dat we een taak-ID gebruiken die is geretourneerd door de vorige opdracht, dus we zullen alleen informatie over deze specifieke taak verkrijgen:

[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

Uitschalen

Nodes kunnen met één commando aan ons Galera-cluster worden toegevoegd:

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

Er is iets fout gegaan. We kunnen nagaan wat er precies is gebeurd:

[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.

Juist, dat IP-adres wordt al gebruikt voor onze replicatieserver. We hadden een ander, gratis IP-adres moeten gebruiken. Laten we dat eens proberen:

[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

Beheren

Laten we zeggen dat we een back-up willen maken van onze replicatiemaster. We kunnen dat vanuit de GUI doen, maar soms moeten we het misschien integreren met externe scripts. ClusterControl CLI zou perfect geschikt zijn voor een dergelijk geval. Laten we eens kijken welke clusters we hebben:

[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

Laten we vervolgens de hosts in ons replicatiecluster controleren, met cluster-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

Zoals we kunnen zien, zijn er drie hosts die ClusterControl kent - twee daarvan zijn MySQL-hosts (10.0.0.229 en 10.0.0.230), de derde is de ClusterControl-instantie zelf. Laten we alleen de relevante MySQL-hosts afdrukken:

[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

In de kolom “STAT” zie je daar enkele karakters. Voor meer informatie raden we aan om de handleidingpagina voor s9s-nodes (man s9s-nodes) te bekijken. Hier vatten we alleen de belangrijkste stukjes samen. Het eerste teken vertelt ons over het type node:"s" betekent dat het een gewone MySQL-node is, "c" - ClusterControl-controller. Het tweede teken beschrijft de status van het knooppunt:"o" vertelt ons dat het online is. Derde karakter - rol van het knooppunt. Hier beschrijft "M" een master en "S" - een slave terwijl "C" staat voor controller. Het laatste, vierde teken vertelt ons of het knooppunt zich in de onderhoudsmodus bevindt. "-" betekent dat er geen onderhoud is gepland. Anders zouden we hier "M" zien. Uit deze gegevens kunnen we dus zien dat onze master een host is met IP:10.0.0.229. Laten we er een back-up van maken en deze op de controller opslaan.

[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

We kunnen dan controleren of het inderdaad goed is voltooid. Let op de optie “--backup-format” waarmee u kunt bepalen welke informatie moet worden afgedrukt:

[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
DevOps-gids voor databasebeheer van verschillendenines Lees meer over wat u moet weten om uw open source-databases te automatiseren en te beheren Download voor gratis Gerelateerde bronnen Database-automatisering:de ClusterControl CLI integreren met uw ChatBot Hoe u s9s gebruikt - de opdrachtregelinterface voor ClusterControl

Bewaking

Alle databases moeten worden gecontroleerd. ClusterControl gebruikt adviseurs om enkele van de statistieken op zowel MySQL als het besturingssysteem te bekijken. Wanneer aan een voorwaarde is voldaan, wordt een melding verzonden. ClusterControl biedt ook een uitgebreide set grafieken, zowel realtime als historische voor post-mortem- of capaciteitsplanning. Soms zou het geweldig zijn om toegang te hebben tot sommige van die statistieken zonder door de GUI te hoeven gaan. ClusterControl CLI maakt het mogelijk via de opdracht s9s-node. Informatie over hoe u dat kunt doen, vindt u in de handleiding van s9s-node. We laten enkele voorbeelden zien van wat u met CLI kunt doen.

Laten we eerst eens kijken naar de optie "--node-format" naar de opdracht "s9s node". Zoals je kunt zien, zijn er tal van opties om interessante inhoud af te drukken.

[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

Met wat we hier hebben laten zien, kun je je waarschijnlijk enkele gevallen voor automatisering voorstellen. U kunt bijvoorbeeld het CPU-gebruik van de knooppunten bekijken en als het een bepaalde drempel bereikt, kunt u een andere s9s-taak uitvoeren om een ​​nieuw knooppunt in het Galera-cluster op te starten. U kunt bijvoorbeeld ook het geheugengebruik controleren en waarschuwingen verzenden als het een bepaalde drempel overschrijdt.

De CLI kan meer dan dat. Allereerst is het mogelijk om de grafieken vanuit de opdrachtregel te controleren. Die zijn natuurlijk niet zo rijk aan functies als grafieken in de GUI, maar soms is het voldoende om een ​​grafiek te zien om een ​​onverwacht patroon te vinden en te beslissen of het de moeite waard is om verder te onderzoeken.

[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

Tijdens noodsituaties kunt u het gebruik van resources in het cluster controleren. U kunt een topachtige uitvoer maken die gegevens van alle clusterknooppunten combineert:

[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

Als je bovenaan kijkt, zie je CPU- en geheugenstatistieken geaggregeerd over het hele cluster.

[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,

Hieronder vindt u de lijst met processen van alle knooppunten in het cluster.

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

Dit kan erg handig zijn als u erachter wilt komen wat de belasting veroorzaakt en welk knooppunt het meest wordt getroffen.

Hopelijk maakt de CLI-tool het voor u gemakkelijker om ClusterControl te integreren met externe scripts en tools voor infrastructuurorkestratie. We hopen dat u deze tool met veel plezier zult gebruiken en als u feedback heeft over hoe u deze kunt verbeteren, laat het ons dan gerust weten.


  1. Tijdgedeelte van een DateTime-veld in SQL

  2. Correcte manier om LIKE '%{$var}%' te gebruiken met voorbereide verklaringen? [mysqli]

  3. afbeelding insluiten in html e-mail

  4. Kan tabel niet afkappen omdat ernaar wordt verwezen door een FOREIGN KEY-beperking?