MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

Cara Mengotomatiskan Cluster Galera Menggunakan ClusterControl CLI

Sebagai sysadmin dan pengembang, kami menghabiskan banyak waktu di terminal. Jadi kami membawa ClusterControl ke terminal dengan alat antarmuka baris perintah kami yang disebut s9s. s9s menyediakan antarmuka yang mudah ke ClusterControl RPC v2 API. Anda akan merasa sangat berguna saat bekerja dengan penerapan skala besar, karena CLI memungkinkan Anda merancang fitur dan alur kerja yang lebih kompleks.

Postingan blog ini menunjukkan cara menggunakan s9s untuk mengotomatisasi pengelolaan Galera Cluster untuk MySQL atau MariaDB, serta pengaturan replikasi master-slave sederhana.

Penyiapan

Anda dapat menemukan petunjuk penginstalan untuk OS khusus Anda dalam dokumentasi. Yang penting untuk diperhatikan adalah jika Anda menggunakan s9s-tools terbaru, dari GitHub, ada sedikit perubahan dalam cara Anda membuat pengguna. Perintah berikut akan berfungsi dengan baik:

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

Secara umum, ada dua langkah yang diperlukan jika Anda ingin mengkonfigurasi CLI secara lokal pada host ClusterControl. Pertama, Anda perlu membuat pengguna dan kemudian membuat beberapa perubahan pada file konfigurasi - semua langkah disertakan dalam dokumentasi.

Penerapan

Setelah CLI dikonfigurasi dengan benar dan memiliki akses SSH ke host database target, Anda dapat memulai proses penerapan. Pada saat penulisan, Anda dapat menggunakan CLI untuk menerapkan cluster MySQL, MariaDB, dan PostgreSQL. Mari kita mulai dengan contoh cara menerapkan Percona XtraDB Cluster 5.7. Satu perintah diperlukan untuk melakukan itu.

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

Opsi terakhir “--wait” berarti perintah akan menunggu hingga pekerjaan selesai, menunjukkan kemajuannya. Anda dapat melewatinya jika Anda mau - dalam hal ini, perintah s9s akan segera kembali ke shell setelah mendaftarkan pekerjaan baru di cmon. Ini baik-baik saja karena cmon adalah proses yang menangani pekerjaan itu sendiri. Anda selalu dapat memeriksa kemajuan pekerjaan secara terpisah, menggunakan:

[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

Mari kita lihat contoh lain. Kali ini kita akan membuat cluster baru, replikasi MySQL:master sederhana - pasangan budak. Sekali lagi, satu perintah sudah cukup:

[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

Kami sekarang dapat memverifikasi bahwa kedua cluster aktif dan berjalan:

[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

Tentu saja, semua ini juga terlihat melalui GUI:

Sekarang, mari tambahkan loadbalancer ProxySQL:

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

Kali ini kami tidak menggunakan opsi '--wait' jadi, jika kami ingin memeriksa perkembangannya, kami harus melakukannya sendiri. Harap perhatikan bahwa kami menggunakan ID pekerjaan yang dikembalikan oleh perintah sebelumnya, jadi kami hanya akan memperoleh informasi tentang pekerjaan khusus ini:

[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

Meningkatkan

Node dapat ditambahkan ke cluster Galera kami melalui satu perintah:

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

Ada yang salah. Kami dapat memeriksa apa yang sebenarnya terjadi:

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

Benar, IP itu sudah digunakan untuk server replikasi kami. Kita seharusnya menggunakan IP gratis lainnya. Mari kita coba:

[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

Mengelola

Katakanlah kita ingin mengambil cadangan master replikasi kita. Kita dapat melakukannya dari GUI tetapi terkadang kita mungkin perlu mengintegrasikannya dengan skrip eksternal. ClusterControl CLI akan sangat cocok untuk kasus seperti itu. Mari kita periksa cluster apa yang kita miliki:

[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

Kemudian, mari kita periksa host di cluster replikasi kita, dengan ID cluster 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

Seperti yang bisa kita lihat, ada tiga host yang diketahui ClusterControl - dua di antaranya adalah host MySQL (10.0.0.229 dan 10.0.0.230), yang ketiga adalah instance ClusterControl itu sendiri. Mari cetak hanya host MySQL yang relevan:

[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

Di kolom “STAT” Anda bisa melihat beberapa karakter di sana. Untuk informasi lebih lanjut, kami sarankan untuk melihat ke halaman manual untuk s9s-nodes (man s9s-nodes). Di sini kami hanya akan meringkas bagian yang paling penting. Karakter pertama memberi tahu kita tentang jenis node:"s" berarti node MySQL biasa, "c" - pengontrol ClusterControl. Karakter kedua menggambarkan keadaan simpul:"o" memberi tahu kita bahwa itu online. Karakter ketiga - peran simpul. Di sini "M" menggambarkan master dan "S" - budak sementara "C" adalah singkatan dari pengontrol. Terakhir, karakter keempat memberi tahu kita jika node dalam mode pemeliharaan. “-” berarti tidak ada jadwal pemeliharaan. Kalau tidak, kita akan melihat "M" di sini. Jadi, dari data ini kita bisa melihat bahwa master kita adalah sebuah host dengan IP:10.0.0.229. Mari kita backup dan simpan di controller.

[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

Kami kemudian dapat memverifikasi jika memang selesai ok. Harap perhatikan opsi “--backup-format” yang memungkinkan Anda menentukan informasi mana yang harus dicetak:

[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
Panduan Multiplenines DevOps untuk Manajemen DatabasePelajari tentang apa yang perlu Anda ketahui untuk mengotomatisasi dan mengelola database open source AndaUnduh untuk Sumber daya GratisTerkait Otomasi Database:Mengintegrasikan ClusterControl CLI dengan ChatBot Anda Cara menggunakan s9s -Antarmuka Baris Perintah ke ClusterControl

Pemantauan

Semua database harus dipantau. ClusterControl menggunakan penasihat untuk melihat beberapa metrik di MySQL dan sistem operasi. Ketika suatu kondisi terpenuhi, pemberitahuan dikirim. ClusterControl juga menyediakan serangkaian grafik yang luas, baik grafik real-time maupun historis untuk perencanaan post-mortem atau kapasitas. Terkadang akan sangat bagus untuk memiliki akses ke beberapa metrik tersebut tanpa harus melalui GUI. ClusterControl CLI memungkinkan melalui perintah s9s-node. Informasi tentang cara melakukannya dapat ditemukan di halaman manual s9s-node. Kami akan menunjukkan beberapa contoh yang dapat Anda lakukan dengan CLI.

Pertama-tama, mari kita lihat opsi “--node-format” untuk perintah “s9s node”. Seperti yang Anda lihat, ada banyak opsi untuk mencetak konten yang menarik.

[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

Dengan apa yang kami tunjukkan di sini, Anda mungkin dapat membayangkan beberapa kasus untuk otomatisasi. Misalnya, Anda dapat melihat penggunaan CPU dari node dan jika mencapai ambang batas tertentu, Anda dapat menjalankan pekerjaan s9s lain untuk memutar node baru di cluster Galera. Anda juga dapat, misalnya, memantau penggunaan memori dan mengirim peringatan jika melewati ambang batas tertentu.

CLI dapat melakukan lebih dari itu. Pertama-tama, dimungkinkan untuk memeriksa grafik dari dalam baris perintah. Tentu saja, grafik tersebut tidak kaya fitur seperti grafik di GUI, tetapi terkadang cukup hanya dengan melihat grafik untuk menemukan pola yang tidak terduga dan memutuskan apakah perlu diselidiki lebih lanjut.

[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

Selama situasi darurat, Anda mungkin ingin memeriksa pemanfaatan sumber daya di seluruh cluster. Anda dapat membuat output seperti teratas yang menggabungkan data dari semua node 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,

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

Saat Anda melihat bagian atas, Anda akan melihat statistik CPU dan memori dikumpulkan di seluruh 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,

Di bawah ini Anda dapat menemukan daftar proses dari semua node dalam 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

Ini bisa sangat berguna jika Anda perlu mencari tahu penyebab pemuatan dan node mana yang paling terpengaruh.

Semoga alat CLI memudahkan Anda untuk mengintegrasikan ClusterControl dengan skrip eksternal dan alat orkestrasi infrastruktur. Kami harap Anda menikmati penggunaan alat ini dan jika Anda memiliki masukan tentang cara meningkatkannya, jangan ragu untuk memberi tahu kami.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara mengkonfigurasi AppArmor untuk sistem berbasis MySQL (Replikasi MySQL/MariaDB + Galera)

  2. Mengapa Basis Data MySQL Saya Rusak? Dapatkan Wawasan dengan MySQL Freeze Frame Baru

  3. 4 Fungsi untuk Mengembalikan Tahun dari Tanggal di MariaDB

  4. Bagaimana TIDAK RLIKE Bekerja di MariaDB

  5. Bagaimana EXPORT_SET() Bekerja di MariaDB