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.