sql >> Databáze >  >> RDS >> MariaDB

Jak automatizovat Galera Cluster pomocí ClusterControl CLI

Jako správci systému a vývojáři trávíme hodně času v terminálu. Přinesli jsme tedy ClusterControl do terminálu pomocí našeho nástroje rozhraní příkazového řádku s názvem s9s. s9s poskytuje snadné rozhraní pro ClusterControl RPC v2 API. Zjistíte, že je to velmi užitečné při práci s rozsáhlými nasazeními, protože rozhraní CLI vám umožní navrhovat složitější funkce a pracovní postupy.

Tento blogový příspěvek ukazuje, jak používat s9 k automatizaci správy Galera Cluster pro MySQL nebo MariaDB a také jednoduché nastavení replikace master-slave.

Nastavení

Pokyny k instalaci pro váš konkrétní OS naleznete v dokumentaci. Důležité je poznamenat, že pokud náhodou používáte nejnovější nástroje s9s z GitHubu, dochází k mírné změně ve způsobu, jakým vytváříte uživatele. Následující příkaz bude fungovat dobře:

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

Obecně platí, že pokud chcete konfigurovat CLI lokálně na hostiteli ClusterControl, jsou vyžadovány dva kroky. Nejprve musíte vytvořit uživatele a poté provést nějaké změny v konfiguračním souboru – všechny kroky jsou zahrnuty v dokumentaci.

Nasazení

Jakmile je CLI správně nakonfigurováno a má přístup SSH k hostitelům cílové databáze, můžete zahájit proces nasazení. V době psaní tohoto článku můžete použít CLI k nasazení clusterů MySQL, MariaDB a PostgreSQL. Začněme příkladem, jak nasadit Percona XtraDB Cluster 5.7. K tomu je zapotřebí jediný příkaz.

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

Poslední možnost „--wait“ znamená, že příkaz počká na dokončení úlohy a zobrazí její průběh. Pokud chcete, můžete jej přeskočit – v takovém případě se příkaz s9s okamžitě vrátí do prostředí shell poté, co zaregistruje novou úlohu v cmon. To je naprosto v pořádku, protože cmon je proces, který tuto úlohu zvládne sám. Průběh úlohy můžete vždy zkontrolovat samostatně pomocí:

[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

Podívejme se na další příklad. Tentokrát vytvoříme nový cluster, replikace MySQL:jednoduchý pár master - slave. Opět stačí jeden příkaz:

[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

Nyní můžeme ověřit, že oba clustery jsou v provozu:

[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

To vše je samozřejmě také viditelné přes GUI:

Nyní přidáme 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.

Tentokrát jsme nepoužili možnost „--wait“, takže pokud chceme zkontrolovat průběh, musíme to udělat sami. Upozorňujeme, že používáme ID úlohy, které bylo vráceno předchozím příkazem, takže získáme informace pouze o této konkrétní zakázce:

[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

Rozšíření

Uzly lze přidat do našeho clusteru Galera pomocí jediného příkazu:

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ěco se pokazilo. Můžeme zkontrolovat, co se přesně stalo:

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

Správně, tato IP je již použita pro náš replikační server. Měli jsme použít jinou, volnou IP. Zkusme to:

[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

Správa

Řekněme, že chceme vytvořit zálohu našeho hlavního replikačního serveru. Můžeme to udělat z GUI, ale někdy jej možná budeme muset integrovat s externími skripty. ClusterControl CLI by se pro takový případ dokonale hodil. Podívejme se, jaké clustery máme:

[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

Poté zkontrolujeme hostitele v našem replikačním clusteru s ID clusteru 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

Jak vidíme, existují tři hostitelé, o kterých ClusterControl ví – dva z nich jsou hostitelé MySQL (10.0.0.229 a 10.0.0.230), třetí je samotná instance ClusterControl. Vytiskněme pouze relevantní hostitele MySQL:

[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

Ve sloupci „STAT“ můžete vidět některé znaky. Pro více informací doporučujeme podívat se na manuálovou stránku pro s9s-nodes (man s9s-nodes). Zde jen shrneme to nejdůležitější. První znak nám říká o typu uzlu:„s“ znamená běžný uzel MySQL, „c“ – řadič ClusterControl. Druhý znak popisuje stav uzlu:„o“ nám říká, že je online. Třetí postava - role uzlu. Zde „M“ popisuje master a „S“ - slave, zatímco „C“ znamená kontrolér. Poslední, čtvrtý znak nám říká, zda je uzel v režimu údržby. „-“ znamená, že není naplánována žádná údržba. Jinak bychom zde viděli „M“. Z těchto údajů tedy vidíme, že náš master je hostitel s IP:10.0.0.229. Udělejme si jeho zálohu a uložme ji do ovladače.

[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

Poté můžeme ověřit, zda to skutečně proběhlo v pořádku. Všimněte si prosím možnosti „--backup-format“, která vám umožňuje definovat, které informace se mají tisknout:

[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
Několik nines DevOps Guide to Database ManagementZjistěte, co potřebujete vědět k automatizaci a správě vašich databází s otevřeným zdrojovým kódemStáhněte si zdarma Související zdroje Automatizace databází:Integrace rozhraní ClusterControl CLI s vaším ChatBotem Jak používat s9s – rozhraní příkazového řádku k ClusterControl

Monitorování

Všechny databáze musí být monitorovány. ClusterControl využívá poradce ke sledování některých metrik jak na MySQL, tak na operačním systému. Když je podmínka splněna, je odesláno upozornění. ClusterControl také poskytuje rozsáhlou sadu grafů, a to jak v reálném čase, tak i historických pro posmrtné nebo kapacitní plánování. Někdy by bylo skvělé mít přístup k některým z těchto metrik, aniž byste museli procházet GUI. ClusterControl CLI to umožňuje pomocí příkazu s9s-node. Informace o tom, jak to udělat, najdete v manuálové stránce s9s-node. Ukážeme několik příkladů toho, co můžete dělat s CLI.

Nejprve se podívejme na volbu „--node-format“ příkazu „s9s node“. Jak vidíte, existuje spousta možností, jak vytisknout zajímavý obsah.

[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

S tím, co jsme zde ukázali, si pravděpodobně dokážete představit některé případy automatizace. Můžete například sledovat využití procesoru uzlů a pokud dosáhne určité prahové hodnoty, můžete provést další úlohu s9 a roztočit nový uzel v clusteru Galera. Můžete také například sledovat využití paměti a odesílat upozornění, pokud překročí určitou hranici.

CLI toho umí víc. Nejprve je možné zkontrolovat grafy z příkazové řádky. Samozřejmě, že nejsou tak bohaté na funkce jako grafy v GUI, ale někdy stačí vidět graf, abyste našli neočekávaný vzorec a rozhodli se, zda stojí za další zkoumání.

[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

Během nouzových situací můžete chtít zkontrolovat využití prostředků v celém clusteru. Můžete vytvořit špičkový výstup, který kombinuje data ze všech uzlů clusteru:

[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

Když se podíváte nahoru, uvidíte statistiky CPU a paměti agregované v celém clusteru.

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

Níže naleznete seznam procesů ze všech uzlů v clusteru.

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

To může být velmi užitečné, pokud potřebujete zjistit, co způsobuje zatížení a který uzel je nejvíce postižený.

Doufejme, že vám nástroj CLI usnadní integraci ClusterControl s externími skripty a nástroji pro orchestraci infrastruktury. Doufáme, že se vám bude používání tohoto nástroje líbit, a pokud máte nějakou zpětnou vazbu, jak jej vylepšit, dejte nám vědět.


  1. FROM_DAYS() Příklady – MySQL

  2. Jak nahradit regulární výraz v MySQL?

  3. Zjistěte, zda je objekt cizí klíč pomocí OBJECTPROPERTY() na serveru SQL Server

  4. Vlastní poskytování uživatelských účtů v PostgreSQL prostřednictvím neprivilegovaného anonymního přístupu