MariaDB
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> MariaDB

Cách tự động hóa cụm Galera bằng ClusterControl CLI

Là sysadmins và nhà phát triển, chúng tôi dành nhiều thời gian cho một thiết bị đầu cuối. Vì vậy, chúng tôi đã đưa ClusterControl đến thiết bị đầu cuối với công cụ giao diện dòng lệnh của chúng tôi có tên là s9s. s9s cung cấp một giao diện dễ dàng cho API ClusterControl RPC v2. Bạn sẽ thấy nó rất hữu ích khi làm việc với các triển khai quy mô lớn, vì CLI cho phép sẽ cho phép bạn thiết kế các tính năng và quy trình làm việc phức tạp hơn.

Bài đăng trên blog này giới thiệu cách sử dụng s9s để tự động hóa việc quản lý Galera Cluster cho MySQL hoặc MariaDB, cũng như thiết lập sao chép master-slave đơn giản.

Thiết lập

Bạn có thể tìm thấy hướng dẫn cài đặt cho hệ điều hành cụ thể của mình trong tài liệu. Điều quan trọng cần lưu ý là nếu bạn tình cờ sử dụng các công cụ s9s mới nhất từ ​​GitHub, thì sẽ có một chút thay đổi trong cách bạn tạo người dùng. Lệnh sau sẽ hoạt động tốt:

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

Nói chung, có hai bước cần thiết nếu bạn muốn cấu hình cục bộ CLI trên máy chủ ClusterControl. Trước tiên, bạn cần tạo người dùng và sau đó thực hiện một số thay đổi trong tệp cấu hình - tất cả các bước đều có trong tài liệu.

Triển khai

Khi CLI đã được định cấu hình chính xác và có quyền truy cập SSH vào máy chủ cơ sở dữ liệu mục tiêu của bạn, bạn có thể bắt đầu quá trình triển khai. Tại thời điểm viết bài, bạn có thể sử dụng CLI để triển khai các cụm MySQL, MariaDB và PostgreSQL. Hãy bắt đầu với một ví dụ về cách triển khai Percona XtraDB Cluster 5.7. Cần một lệnh duy nhất để làm điều đó.

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

Tùy chọn cuối cùng “--wait” có nghĩa là lệnh sẽ đợi cho đến khi công việc hoàn thành, hiển thị tiến trình của nó. Bạn có thể bỏ qua nếu muốn - trong trường hợp đó, lệnh s9s sẽ ngay lập tức trở lại shell sau khi nó đăng ký một công việc mới trong cmon. Điều này hoàn toàn ổn vì cmon là quá trình tự xử lý công việc. Bạn luôn có thể kiểm tra tiến độ của công việc một cách riêng biệt, sử dụng:

[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

Hãy xem một ví dụ khác. Lần này chúng ta sẽ tạo một cụm mới, bản sao MySQL:cặp chủ - tớ đơn giản. Một lần nữa, một lệnh duy nhất là đủ:

[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

Bây giờ chúng tôi có thể xác minh rằng cả hai cụm đều đang hoạt độ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

Tất nhiên, tất cả những điều này cũng hiển thị qua GUI:

Bây giờ, hãy thêm một trình cân bằng tải 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.

Lần này, chúng tôi không sử dụng tùy chọn ‘--wait’, vì vậy, nếu chúng tôi muốn kiểm tra tiến trình, chúng tôi phải tự mình thực hiện. Xin lưu ý rằng chúng tôi đang sử dụng ID công việc được trả về bởi lệnh trước đó, vì vậy chúng tôi sẽ chỉ nhận được thông tin về công việc cụ thể này:

[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

Mở rộng quy mô

Các nút có thể được thêm vào cụm Galera của chúng tôi thông qua một lệnh duy nhất:

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

Đã xảy ra lỗi. Chúng tôi có thể kiểm tra chính xác những gì đã xảy ra:

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

Đúng, IP đó đã được sử dụng cho máy chủ nhân rộng của chúng tôi. Đáng lẽ chúng ta nên sử dụng một IP miễn phí khác. Hãy thử điều đó:

[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

Quản lý

Giả sử chúng tôi muốn sao lưu chương trình nhân bản chính của chúng tôi. Chúng tôi có thể làm điều đó từ GUI nhưng đôi khi chúng tôi có thể cần phải tích hợp nó với các tập lệnh bên ngoài. ClusterControl CLI sẽ phù hợp hoàn hảo cho trường hợp như vậy. Hãy kiểm tra xem chúng ta có những cụm nào:

[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

Sau đó, hãy kiểm tra các máy chủ trong cụm sao chép của chúng tôi, với ID cụm 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

Như chúng ta có thể thấy, có ba máy chủ mà ClusterControl biết - hai trong số đó là máy chủ MySQL (10.0.0.229 và 10.0.0.230), máy thứ ba là chính cá thể ClusterControl. Hãy chỉ in các máy chủ MySQL có liên quan:

[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

Trong cột "STAT", bạn có thể thấy một số ký tự ở đó. Để biết thêm thông tin, chúng tôi khuyên bạn nên xem trang hướng dẫn sử dụng cho các nút s9s (man s9s-node). Ở đây, chúng tôi sẽ chỉ tóm tắt những điều quan trọng nhất. Ký tự đầu tiên cho chúng ta biết về loại nút:“s” có nghĩa là nút MySQL thông thường, “c” - bộ điều khiển ClusterControl. Ký tự thứ hai mô tả trạng thái của nút:“o” cho chúng ta biết nó đang trực tuyến. Nhân vật thứ ba - vai trò của nút. Ở đây “M” mô tả một chủ và “S” - một nô lệ trong khi “C” là viết tắt của bộ điều khiển. Cuối cùng, ký tự thứ tư cho chúng ta biết nếu nút đang ở chế độ bảo trì. “-” nghĩa là không có lịch bảo trì nào. Nếu không, chúng tôi sẽ thấy “M” ở đây. Vì vậy, từ dữ liệu này, chúng ta có thể thấy rằng máy chủ của chúng ta là máy chủ có IP:10.0.0.229. Hãy sao lưu nó và lưu trữ nó trên bộ điều khiển.

[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

Sau đó, chúng tôi có thể xác minh nếu nó thực sự hoàn thành ok. Vui lòng lưu ý tùy chọn “--backup-format” cho phép bạn xác định thông tin nào sẽ được in:

[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
Somenines DevOps Guide to Management DatabaseTìm hiểu về những điều bạn cần biết để tự động hóa và quản lý cơ sở dữ liệu nguồn mở của mình Tải xuống để tìm tài nguyên miễn phí

Giám sát

Tất cả các cơ sở dữ liệu phải được giám sát. ClusterControl sử dụng các cố vấn để xem một số chỉ số trên cả MySQL và hệ điều hành. Khi một điều kiện được đáp ứng, một thông báo sẽ được gửi. ClusterControl cũng cung cấp một bộ đồ thị phong phú, cả thời gian thực cũng như đồ thị lịch sử để lập kế hoạch công suất hoặc xử lý sau khi giết mổ. Đôi khi sẽ thật tuyệt nếu có quyền truy cập vào một số chỉ số đó mà không cần phải thông qua GUI. ClusterControl CLI làm cho nó có thể thực hiện được thông qua lệnh s9s-node. Thông tin về cách làm điều đó có thể được tìm thấy trong trang hướng dẫn sử dụng của s9s-node. Chúng tôi sẽ hiển thị một số ví dụ về những gì bạn có thể làm với CLI.

Trước hết, hãy xem tùy chọn “--node-format” cho lệnh “s9s node”. Như bạn có thể thấy, có rất nhiều tùy chọn để in nội dung thú vị.

[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

Với những gì chúng tôi trình bày ở đây, bạn có thể hình dung một số trường hợp cho tự động hóa. Ví dụ:bạn có thể xem việc sử dụng CPU của các nút và nếu nó đạt đến ngưỡng nào đó, bạn có thể thực hiện một công việc s9s khác để tạo ra một nút mới trong cụm Galera. Ví dụ:bạn cũng có thể theo dõi việc sử dụng bộ nhớ và gửi cảnh báo nếu bộ nhớ vượt qua ngưỡng nào đó.

CLI có thể làm nhiều hơn thế. Trước hết, có thể kiểm tra các đồ thị từ bên trong dòng lệnh. Tất nhiên, chúng không có nhiều tính năng như biểu đồ trong GUI, nhưng đôi khi chỉ cần xem biểu đồ là đủ để tìm ra mẫu không mong muốn và quyết định xem nó có đáng để điều tra thêm hay không.

[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

Trong các tình huống khẩn cấp, bạn có thể muốn kiểm tra việc sử dụng tài nguyên trên toàn bộ cụm. Bạn có thể tạo đầu ra giống như trên cùng kết hợp dữ liệu từ tất cả các nút cụm:

[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

Khi nhìn vào phần trên cùng, bạn sẽ thấy thống kê CPU và bộ nhớ được tổng hợp trên toàn bộ cụm.

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

Dưới đây, bạn có thể tìm thấy danh sách các quy trình từ tất cả các nút trong cụm.

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

Điều này có thể cực kỳ hữu ích nếu bạn cần tìm ra nguyên nhân gây ra tải và nút nào là nút bị ảnh hưởng nhiều nhất.

Hy vọng rằng công cụ CLI giúp bạn tích hợp ClusterControl với các tập lệnh bên ngoài và các công cụ điều phối cơ sở hạ tầng dễ dàng hơn. Chúng tôi hy vọng bạn sẽ thích sử dụng công cụ này và nếu bạn có bất kỳ phản hồi nào về cách cải thiện nó, vui lòng cho chúng tôi biết.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách thực thi và quản lý bản sao lưu MySQL cho Oracle DBA’s

  2. 3 cách để có được các đối chiếu có sẵn trong MariaDB

  3. Cách đánh giá hiệu suất của MySQL &MariaDB bằng SysBench

  4. Định dạng số bằng dấu phẩy trong MariaDB

  5. Đặt Bộ ký tự và đối chiếu của bảng trong MariaDB