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

Quản lý cơ bản MaxScale bằng cách sử dụng MaxCtrl cho MariaDB Cluster

Trong bài đăng trên blog trước, chúng tôi đã giới thiệu một số giới thiệu về cài đặt, nâng cấp và triển khai MaxScale bằng ứng dụng khách dòng lệnh MaxCtrl. Trong bài đăng trên blog này, chúng tôi sẽ đề cập đến các khía cạnh quản lý MaxScale cho Cụm MariaDB của chúng tôi.

Có một số thành phần MaxScale mà chúng tôi có thể quản lý bằng MaxCtrl, cụ thể là:

  1. Quản lý máy chủ
  2. Quản lý dịch vụ
  3. Quản lý giám sát
  4. Quản lý người nghe
  5. Quản lý bộ lọc
  6. Quản lý MaxScale
  7. Quản lý nhật ký

Trong bài đăng trên blog này, chúng tôi sẽ đề cập đến 4 thành phần đầu tiên thường được sử dụng trong MariaDB Cluster. Tất cả các lệnh trong bài đăng trên blog này đều dựa trên MaxScale 2.4.11.

Quản lý Máy chủ

Liệt kê / Hiển thị Máy chủ

Liệt kê tóm tắt tất cả các máy chủ trong MaxScale:

  maxctrl: list servers
┌────────────────┬────────────────┬──────┬─────────────┬─────────────────────────┬─────────────┐
│ Server         │ Address        │ Port │ Connections │ State                   │ GTID        │
├────────────────┼────────────────┼──────┼─────────────┼─────────────────────────┼─────────────┤
│ mariadbgalera1 │ 192.168.10.201 │ 3306 │ 0           │ Slave, Synced, Running  │ 100-100-203 │
├────────────────┼────────────────┼──────┼─────────────┼─────────────────────────┼─────────────┤
│ mariadbgalera2 │ 192.168.10.202 │ 3306 │ 0           │ Slave, Synced, Running  │ 100-100-203 │
├────────────────┼────────────────┼──────┼─────────────┼─────────────────────────┼─────────────┤
│ mariadbgalera3 │ 192.168.10.203 │ 3306 │ 0           │ Master, Synced, Running │ 100-100-203 │
└────────────────┴────────────────┴──────┴─────────────┴─────────────────────────┴─────────────┘

Đối với Cụm MariaDB, danh sách máy chủ tóm tắt trạng thái nút và cụm, với MariaDB GTID của nó, chỉ khi cụm được đặt để sao chép từ một cụm khác thông qua MariaDB Replication tiêu chuẩn. Trạng thái được MaxScale sử dụng để kiểm soát hành vi của thuật toán định tuyến:

  • Master - Đối với một Cluster, đây được coi là Write-Master.
  • Slave - Nếu tất cả các nô lệ đều không hoạt động nhưng thiết bị chính vẫn còn khả dụng, thì bộ định tuyến sẽ sử dụng thiết bị chính.
  • Đã đồng bộ hóa - Một nút cụm ở trạng thái được đồng bộ hóa với cụm.
  • Đang chạy - Máy chủ đang hoạt động. Tất cả các máy chủ mà MariaDB MaxScale có thể kết nối đều được gắn nhãn là đang chạy.

Mặc dù MariaDB Cluster có khả năng xử lý sao chép nhiều chủ, MaxScale sẽ luôn chọn một nút để giữ vai trò Chủ sẽ nhận tất cả các lần ghi cho định tuyến readwritesplit. Theo mặc định, Galera Monitor sẽ chọn nút có giá trị wsrep_local_index thấp nhất làm nút chính. Điều này có nghĩa là hai MaxScales chạy trên các máy chủ khác nhau sẽ chọn cùng một máy chủ làm máy chủ.

Hiển thị tất cả các máy chủ chi tiết hơn:

maxctrl: show servers

Tạo Máy chủ

Đây thường là điều đầu tiên bạn cần làm khi thiết lập MaxScale làm bộ cân bằng tải. Thông thường, thêm tất cả các nút MariaDB Cluster vào MaxScale và gắn nhãn nó bằng tên đối tượng. Trong ví dụ này, chúng tôi gắn nhãn các nút Galera ở định dạng "mariadbgalera #":

maxctrl: create server mariadbgalera1 192.168.0.221 3306
maxctrl: create server mariadbgalera2 192.168.0.222 3306
maxctrl: create server mariadbgalera3 192.168.0.222 3306

Trạng thái máy chủ sẽ chỉ được báo cáo chính xác sau khi chúng tôi đã kích hoạt mô-đun giám sát, như được hiển thị bên dưới phần Quản lý màn hình.

Xóa Máy chủ

Để xóa một máy chủ, trước đó người ta phải hủy liên kết máy chủ khỏi bất kỳ dịch vụ hoặc màn hình nào. Ví dụ:trong danh sách máy chủ sau, chúng tôi muốn xóa mariadbgalera3 khỏi MaxScale:

  maxctrl: list servers
┌────────────────┬────────────────┬──────┬─────────────┬─────────────────────────┬─────────────┐
│ Server         │ Address        │ Port │ Connections │ State                   │ GTID        │
├────────────────┼────────────────┼──────┼─────────────┼─────────────────────────┼─────────────┤
│ mariadbgalera1 │ 192.168.10.201 │ 3306 │ 0           │ Slave, Synced, Running  │ 100-100-203 │
├────────────────┼────────────────┼──────┼─────────────┼─────────────────────────┼─────────────┤
│ mariadbgalera2 │ 192.168.10.202 │ 3306 │ 0           │ Slave, Synced, Running  │ 100-100-203 │
├────────────────┼────────────────┼──────┼─────────────┼─────────────────────────┼─────────────┤
│ mariadbgalera3 │ 192.168.10.203 │ 3306 │ 0           │ Master, Synced, Running │ 100-100-203 │
└────────────────┴────────────────┴──────┴─────────────┴─────────────────────────┴─────────────┘

Liệt kê tất cả các màn hình và xem liệu máy chủ có phải là một phần của bất kỳ mô-đun màn hình nào không:

 maxctrl: list monitors
 ┌─────────────────┬─────────┬────────────────────────────────────────────────┐
 │ Monitor         │ State   │ Servers                                        │
 ├─────────────────┼─────────┼────────────────────────────────────────────────┤
 │ MariaDB-Monitor │ Running │ mariadbgalera1, mariadbgalera2, mariadbgalera3 │
 └─────────────────┴─────────┴────────────────────────────────────────────────┘

Có vẻ như mariadbgalera3 là một phần của MariaDB-Monitor, vì vậy trước tiên chúng tôi phải xóa nó bằng cách sử dụng lệnh "hủy liên kết màn hình":

 maxctrl: unlink monitor MariaDB-Monitor mariadbgalera3
 OK

Tiếp theo, liệt kê tất cả các dịch vụ để kiểm tra xem máy chủ tương ứng có phải là một phần của bất kỳ dịch vụ MaxScale nào hay không:

  maxctrl: list services
┌─────────────────────┬────────────────┬─────────────┬───────────────────┬────────────────────────────────────────────────┐
│ Service             │ Router         │ Connections │ Total Connections │ Servers                                        │
├─────────────────────┼────────────────┼─────────────┼───────────────────┼────────────────────────────────────────────────┤
│ Read-Write-Service  │ readwritesplit │ 1           │ 1                 │ mariadbgalera1, mariadbgalera2, mariadbgalera3 │
├─────────────────────┼────────────────┼─────────────┼───────────────────┼────────────────────────────────────────────────┤
│ Round-Robin-Service │ readconnroute  │ 1           │ 1                 │ mariadbgalera1, mariadbgalera2, mariadbgalera3 │
├─────────────────────┼────────────────┼─────────────┼───────────────────┼────────────────────────────────────────────────┤
│ Replication-Service │ binlogrouter   │ 1           │ 1                 │                                                │
└─────────────────────┴────────────────┴─────────────┴───────────────────┴────────────────────────────────────────────────┘

Như bạn có thể thấy, mariadbgalera3 là một phần của Dịch vụ Đọc-Ghi-Viết và Dịch vụ Vòng tròn. Xóa máy chủ khỏi các dịch vụ đó bằng cách sử dụng lệnh "hủy liên kết dịch vụ":

 maxctrl: unlink service Read-Write-Service mariadbgalera3
OK
 maxctrl: unlink service Round-Robin-Service mariadbgalera3
OK

Cuối cùng, chúng tôi có thể xóa máy chủ khỏi MaxScale bằng cách sử dụng lệnh "hủy máy chủ":

 maxctrl: destroy server mariadbgalera3
OK

Xác minh bằng "máy chủ danh sách" mà chúng tôi đã xóa mariadbgalera3 khỏi MaxScale .:

  maxctrl: list servers
┌────────────────┬────────────────┬──────┬─────────────┬─────────────────────────┬──────┐
│ Server         │ Address        │ Port │ Connections │ State                   │ GTID │
├────────────────┼────────────────┼──────┼─────────────┼─────────────────────────┼──────┤
│ mariadbgalera1 │ 192.168.10.201 │ 3306 │ 0           │ Master, Synced, Running │      │
├────────────────┼────────────────┼──────┼─────────────┼─────────────────────────┼──────┤
│ mariadbgalera2 │ 192.168.10.202 │ 3306 │ 0           │ Slave, Synced, Running  │      │
└────────────────┴────────────────┴──────┴─────────────┴─────────────────────────┴──────┘

Sửa đổi Tham số của Máy chủ

Để sửa đổi tham số của máy chủ, người ta có thể sử dụng lệnh "máy chủ thay đổi", lệnh này chỉ nhận một tham số khóa / giá trị tại một thời điểm. Ví dụ:

  maxctrl: alter server mariadbgalera3 priority 10
 OK

Sử dụng lệnh "hiển thị máy chủ" và xem phần Tham số để biết danh sách các tham số có thể được thay đổi cho đối tượng "máy chủ":

maxctrl: show server mariadbgalera3
...

│ Parameters       │ {                                         │
│                  │     "address": "192.168.10.203",          │
│                  │     "protocol": "mariadbbackend",         │
│                  │     "port": 3306,                         │
│                  │     "extra_port": 0,                      │
│                  │     "authenticator": null,                │
│                  │     "monitoruser": null,                  │
│                  │     "monitorpw": null,                    │
│                  │     "persistpoolmax": 0,                  │
│                  │     "persistmaxtime": 0,                  │
│                  │     "proxy_protocol": false,              │
│                  │     "ssl": "false",                       │
│                  │     "ssl_cert": null,                     │
│                  │     "ssl_key": null,                      │
│                  │     "ssl_ca_cert": null,                  │
│                  │     "ssl_version": "MAX",                 │
│                  │     "ssl_cert_verify_depth": 9,           │
│                  │     "ssl_verify_peer_certificate": false, │
│                  │     "disk_space_threshold": null,         │
│                  │     "priority": "10"                      │
│                  │ }

Lưu ý rằng lệnh thay đổi có hiệu lực ngay lập tức và giá trị của tham số trong thời gian chạy sẽ được sửa đổi cũng như giá trị trong tệp cấu hình MaxScale riêng lẻ của nó bên trong /var/lib/maxscale/maxscale.cnf.d/ để bền bỉ khi khởi động lại.

Đặt Trạng thái Máy chủ

MaxScale cho phép các máy chủ Galera phụ trợ tạm thời bị loại trừ khỏi bộ cân bằng tải bằng cách kích hoạt chế độ bảo trì. Chúng ta có thể đạt được điều này bằng cách sử dụng lệnh "đặt máy chủ":

 maxctrl: set server mariadbgalera3 maintenance
OK

Khi nhìn vào trạng thái của máy chủ, chúng ta sẽ thấy điều này:

 maxctrl: show server mariadbgalera3
...
│ State            │ Maintenance, Running
...

Khi máy chủ ở chế độ bảo trì, sẽ không có kết nối nào được tạo với nó và các kết nối hiện có sẽ bị đóng. Để xóa trạng thái bảo trì khỏi máy chủ, hãy sử dụng lệnh "xóa máy chủ":

 maxctrl: clear server mariadbgalera3 maintenance
OK

Xác minh bằng "hiển thị máy chủ":

 maxctrl: show server mariadbgalera3
...
│ State            │ Slave, Synced, Running                    │
...

Quản lý màn hình

Tạo Màn hình

Mô-đun màn hình MaxScale cho MariaDB Cluster được gọi là galeramon. Việc xác định đúng mô-đun giám sát là cần thiết để MaxScale có thể xác định định tuyến tốt nhất cho các truy vấn tùy thuộc vào trạng thái của các nút. Ví dụ:nếu một nút Galera đang đóng vai trò là nhà tài trợ cho một nút kết hợp, thì nó có phải là một phần của các nút lành mạnh không? Trong một số trường hợp như khi kích thước cơ sở dữ liệu quá nhỏ, việc đánh dấu một nút đóng góp là khỏe mạnh (bằng cách đặt tham số ready_when_donor =true trong MaxScale) không phải là một phương án tồi và đôi khi cải thiện hiệu suất định tuyến truy vấn.

Để tạo một dịch vụ (bộ định tuyến), người ta phải tạo một người dùng giám sát trên phần phụ trợ của các máy chủ MariaDB. Thông thường, một người sẽ sử dụng cùng một người dùng giám sát mà chúng tôi đã xác định cho mô-đun màn hình. Đối với Galera Cluster, nếu người dùng giám sát không tồn tại, chỉ cần tạo nó trên một trong các nút có các đặc quyền sau:

MariaDB> CREATE USER [email protected]'192.168.0.220' IDENTIFIED BY 'MaXSc4LeP4ss';
MariaDB> GRANT SELECT ON mysql.* TO 'maxscale_monitor'@'192.168.0.220';
MariaDB> GRANT SHOW DATABASES ON *.* TO 'maxscale_monitor'@'192.168.0.220';

Sử dụng lệnh "tạo màn hình" và chỉ định tên với galeramon làm mô-đun màn hình:

  maxctrl: create monitor MariaDB-Monitor galeramon servers=mariadbgalera1,mariadbgalera2,mariadbgalera3 user=maxscale_monitor password=MaXSc4LeP4ss
OK

Lưu ý rằng chúng tôi không định cấu hình bí mật MaxScale, nghĩa là chúng tôi lưu trữ mật khẩu người dùng ở định dạng văn bản thuần túy. Để bật mã hóa, hãy xem ví dụ trong bài đăng blog này, Giới thiệu về Quản trị MaxScale Sử dụng maxctrl cho Cụm MariaDB trong phần Thêm Giám sát vào MaxScale.

Danh sách / Hiển thị Màn hình

Để liệt kê tất cả các màn hình:

 maxctrl: list monitors
┌─────────────────┬─────────┬────────────────────────────────────────────────┐
│ Monitor         │ State   │ Servers                                        │
├─────────────────┼─────────┼────────────────────────────────────────────────┤
│ MariaDB-Monitor │ Running │ mariadbgalera1, mariadbgalera2, mariadbgalera3 │
└─────────────────┴─────────┴────────────────────────────────────────────────┘

Để có cái nhìn chi tiết hơn về màn hình, hãy sử dụng lệnh "hiển thị màn hình":

 maxctrl: show monitor MariaDB-Monitor

┌─────────────────────┬───────────────────────────────────────────┐
│ Monitor             │ MariaDB-Monitor                           │
├─────────────────────┼───────────────────────────────────────────┤
│ State               │ Running                                   │
├─────────────────────┼───────────────────────────────────────────┤
│ Servers             │ mariadbgalera1                            │
│                     │ mariadbgalera2                            │
│                     │ mariadbgalera3                            │
├─────────────────────┼───────────────────────────────────────────┤
│ Parameters          │ {                                         │
│                     │     "user": "maxscale_monitor",           │
│                     │     "password": "*****",                  │
│                     │     "passwd": null,                       │
│                     │     "monitor_interval": 2000,             │
│                     │     "backend_connect_timeout": 3,         │
│                     │     "backend_read_timeout": 1,            │
│                     │     "backend_write_timeout": 2,           │
│                     │     "backend_connect_attempts": 1,        │
│                     │     "journal_max_age": 28800,             │
│                     │     "disk_space_threshold": null,         │
│                     │     "disk_space_check_interval": 0,       │
│                     │     "script": null,                       │
│                     │     "script_timeout": 90,                 │
│                     │     "events": "all",                      │
│                     │     "disable_master_failback": false,     │
│                     │     "available_when_donor": true,         │
│                     │     "disable_master_role_setting": false, │
│                     │     "root_node_as_master": false,         │
│                     │     "use_priority": false,                │
│                     │     "set_donor_nodes": false              │
│                     │ }                                         │
├─────────────────────┼───────────────────────────────────────────┤
│ Monitor Diagnostics │ {                                         │
│                     │     "disable_master_failback": false,     │
│                     │     "disable_master_role_setting": false, │
│                     │     "root_node_as_master": false,         │
│                     │     "use_priority": false,                │
│                     │     "set_donor_nodes": false              │
│                     │ }                                         │
└─────────────────────┴───────────────────────────────────────────┘

Dừng / Khởi động Màn hình

Việc dừng một màn hình sẽ tạm dừng việc giám sát các máy chủ. Điều này thường được sử dụng cùng với lệnh "đặt máy chủ" để kiểm soát các trạng thái máy chủ theo cách thủ công. Để dừng dịch vụ giám sát, hãy sử dụng lệnh "dừng giám sát":

 maxctrl: stop monitor MariaDB-Monitor
OK

Xác minh trạng thái bằng "hiển thị màn hình":

 maxctrl: show monitors MariaDB-Monitor
┌─────────────────────┬───────────────────────────────────────────┐
│ Monitor             │ MariaDB-Monitor                           │
├─────────────────────┼───────────────────────────────────────────┤
│ State               │ Stopped                                   │
...

Để khởi động lại, hãy sử dụng "màn hình khởi động":

 maxctrl: start monitor MariaDB-Monitor
OK

Sửa đổi Thông số của Màn hình

Để thay đổi tham số cho màn hình này, hãy sử dụng lệnh "thay đổi màn hình" và chỉ định khóa / giá trị tham số như bên dưới:

 maxctrl: alter monitor MariaDB-Monitor available_when_donor true
OK

Sử dụng lệnh "hiển thị màn hình" và xem phần Tham số, để biết danh sách các tham số có thể được thay đổi cho mô-đun galeramon:

maxctrl: show server mariadbgalera3
...
│ Parameters          │ {                                         │
│                     │     "user": "maxscale_monitor",           │
│                     │     "password": "*****",                  │
│                     │     "monitor_interval": 2000,             │
│                     │     "backend_connect_timeout": 3,         │
│                     │     "backend_read_timeout": 1,            │
│                     │     "backend_write_timeout": 2,           │
│                     │     "backend_connect_attempts": 1,        │
│                     │     "journal_max_age": 28800,             │
│                     │     "disk_space_threshold": null,         │
│                     │     "disk_space_check_interval": 0,       │
│                     │     "script": null,                       │
│                     │     "script_timeout": 90,                 │
│                     │     "events": "all",                      │
│                     │     "disable_master_failback": false,     │
│                     │     "available_when_donor": true,         │
│                     │     "disable_master_role_setting": false, │
│                     │     "root_node_as_master": false,         │
│                     │     "use_priority": false,                │
│                     │     "set_donor_nodes": false              │
│                     │ }                                         │

Xóa Màn hình

Để xóa một màn hình, trước tiên người ta phải xóa tất cả các máy chủ được liên kết với màn hình. Ví dụ:hãy xem xét màn hình sau trong MaxScale:

 maxctrl: list monitors
┌─────────────────┬─────────┬────────────────────────────────────────────────┐
│ Monitor         │ State   │ Servers                                        │
├─────────────────┼─────────┼────────────────────────────────────────────────┤
│ MariaDB-Monitor │ Running │ mariadbgalera1, mariadbgalera2, mariadbgalera3 │
└─────────────────┴─────────┴────────────────────────────────────────────────┘

Xóa tất cả các máy chủ khỏi dịch vụ cụ thể đó:

 maxctrl: unlink monitor MariaDB-Monitor mariadbgalera1 mariadbgalera2 mariadbgalera3

OK

Màn hình của chúng tôi bây giờ trông như thế này:

 maxctrl: list monitors
┌─────────────────┬─────────┬─────────┐
│ Monitor         │ State   │ Servers │
├─────────────────┼─────────┼─────────┤
│ MariaDB-Monitor │ Running │         │
└─────────────────┴─────────┴─────────┘

Chỉ khi đó chúng tôi mới có thể xóa màn hình:

 maxctrl: destroy monitor MariaDB-Monitor
OK

Thêm / Xóa Máy chủ vào Màn hình

Sau khi tạo màn hình, chúng ta có thể sử dụng lệnh "link monitor" để thêm máy chủ Galera vào màn hình. Sử dụng tên của máy chủ như đã tạo trong phần Tạo máy chủ:

 maxctrl: link monitor MariaDB-Monitor mariadbgalera1 mariadbgalera2 mariadbgalera3
OK

Tương tự, để xóa máy chủ khỏi dịch vụ, chỉ cần sử dụng lệnh "hủy liên kết màn hình":

 maxctrl: unlink monitor MariaDB-Monitor mariadbgalera3
OK

Xác minh bằng lệnh "danh sách giám sát" hoặc "hiển thị màn hình".

Quản lý Dịch vụ

Tạo Dịch vụ

Để tạo một dịch vụ (bộ định tuyến), người ta phải tạo một người dùng giám sát trên phần phụ trợ của các máy chủ MariaDB. Thông thường, một người sẽ sử dụng cùng một người dùng giám sát mà chúng tôi đã xác định cho mô-đun màn hình. Đối với Galera Cluster, nếu người dùng giám sát không tồn tại, chỉ cần tạo nó trên một trong các nút có các đặc quyền sau:

MariaDB> CREATE USER [email protected]'192.168.0.220' IDENTIFIED BY 'MaXSc4LeP4ss';
MariaDB> GRANT SELECT ON mysql.* TO 'maxscale_monitor'@'192.168.0.220';
MariaDB> GRANT SHOW DATABASES ON *.* TO 'maxscale_monitor'@'192.168.0.220';

Trong đó 192.168.0.220 là địa chỉ IP của máy chủ MaxScale.

Sau đó, chỉ định tên của dịch vụ, loại định tuyến cùng với người dùng giám sát để MaxScale kết nối với các máy chủ phụ trợ:

 maxctrl: create service Round-Robin-Service readconnroute user=maxscale_monitor password=******
OK

Ngoài ra, bạn có thể chỉ định các tham số bổ sung khi tạo dịch vụ. Trong ví dụ này, chúng tôi muốn nút "chính" được đưa vào bộ cân bằng tổng hợp cho Cụm MariaDB Galera của chúng tôi:

 maxctrl: create service Round-Robin-Service readconnroute user=maxscale_monitor password=****** router_options=master,slave
OK

Sử dụng lệnh "hiển thị dịch vụ" để xem các tham số được hỗ trợ. Đối với bộ định tuyến round-robin, danh sách như sau:

  maxctrl: show service Round-Robin-Service
...
│ Parameters          │ {                                          │
│                     │     "router_options": null,                │
│                     │     "user": "maxscale_monitor",            │
│                     │     "password": "*****",                   │
│                     │     "passwd": null,                        │
│                     │     "enable_root_user": false,             │
│                     │     "max_retry_interval": 3600,            │
│                     │     "max_connections": 0,                  │
│                     │     "connection_timeout": 0,               │
│                     │     "auth_all_servers": false,             │
│                     │     "strip_db_esc": true,                  │
│                     │     "localhost_match_wildcard_host": true, │
│                     │     "version_string": null,                │
│                     │     "weightby": null,                      │
│                     │     "log_auth_warnings": true,             │
│                     │     "retry_on_failure": true,              │
│                     │     "session_track_trx_state": false,      │
│                     │     "retain_last_statements": -1,          │
│                     │     "session_trace": 0

Đối với bộ định tuyến phân chia đọc-ghi, các tham số được hỗ trợ là:

  maxctrl: show service Read-Write-Service
...
│ Parameters          │ {                                                           │
│                     │     "router_options": null,                                 │
│                     │     "user": "maxscale_monitor",                             │
│                     │     "password": "*****",                                    │
│                     │     "passwd": null,                                         │
│                     │     "enable_root_user": false,                              │
│                     │     "max_retry_interval": 3600,                             │
│                     │     "max_connections": 0,                                   │
│                     │     "connection_timeout": 0,                                │
│                     │     "auth_all_servers": false,                              │
│                     │     "strip_db_esc": true,                                   │
│                     │     "localhost_match_wildcard_host": true,                  │
│                     │     "version_string": null,                                 │
│                     │     "weightby": null,                                       │
│                     │     "log_auth_warnings": true,                              │
│                     │     "retry_on_failure": true,                               │
│                     │     "session_track_trx_state": false,                       │
│                     │     "retain_last_statements": -1,                           │
│                     │     "session_trace": 0,                                     │
│                     │     "use_sql_variables_in": "all",                          │
│                     │     "slave_selection_criteria": "LEAST_CURRENT_OPERATIONS", │
│                     │     "master_failure_mode": "fail_instantly",                │
│                     │     "max_slave_replication_lag": -1,                        │
│                     │     "max_slave_connections": "255",                         │
│                     │     "retry_failed_reads": true,                             │
│                     │     "prune_sescmd_history": false,                          │
│                     │     "disable_sescmd_history": false,                        │
│                     │     "max_sescmd_history": 50,                               │
│                     │     "strict_multi_stmt": false,                             │
│                     │     "strict_sp_calls": false,                               │
│                     │     "master_accept_reads": false,                           │
│                     │     "connection_keepalive": 300,                            │
│                     │     "causal_reads": false,                                  │
│                     │     "causal_reads_timeout": "10",                           │
│                     │     "master_reconnection": false,                           │
│                     │     "delayed_retry": false,                                 │
│                     │     "delayed_retry_timeout": 10,                            │
│                     │     "transaction_replay": false,                            │
│                     │     "transaction_replay_max_size": "1Mi",                   │
│                     │     "optimistic_trx": false                                 │
│                     │ }

List/Show Services
 

To list out all created services (routers), use the "list services" command:

 maxctrl: list services
┌─────────────────────┬────────────────┬─────────────┬───────────────────┬────────────────────────────────────────────────┐
│ Service             │ Router         │ Connections │ Total Connections │ Servers                                        │
├─────────────────────┼────────────────┼─────────────┼───────────────────┼────────────────────────────────────────────────┤
│ Read-Write-Service  │ readwritesplit │ 1           │ 1                 │ mariadbgalera1, mariadbgalera2, mariadbgalera3 │
├─────────────────────┼────────────────┼─────────────┼───────────────────┼────────────────────────────────────────────────┤
│ Round-Robin-Service │ readconnroute  │ 1           │ 1                 │ mariadbgalera1, mariadbgalera2, mariadbgalera3 │
├─────────────────────┼────────────────┼─────────────┼───────────────────┼────────────────────────────────────────────────┤
│ Binlog-Repl-Service │ binlogrouter   │ 1           │ 1                 │                                                │
└─────────────────────┴────────────────┴─────────────┴───────────────────┴────────────────────────────────────────────────┘

In the above examples, we have created 3 services, with 3 different routers. However, the Binlog-Repl-Service for our binlog server is not linked with any servers yet.

To show all services in details:

 maxctrl: show services

Or if you want to show a particular service:

 maxctrl: show service Round-Robin-Service

Stop/Start Services

Stopping a service will prevent all the listeners for that service from accepting new connections. Existing connections will still be handled normally until they are closed. To stop and start all services, use the "stop services":

 maxctrl: stop services
 maxctrl: show services
 maxctrl: start services
 maxctrl: show services

Or we can use the "stop service" to stop only one particular service:

 maxctrl: stop services Round-Robin-Service

Delete a Service

In order to delete a service, one has to remove all servers and destroy the listeners associated with the service first. For example, consider the following services in MaxScale:

 maxctrl: list services
┌─────────────────────┬────────────────┬─────────────┬───────────────────┬────────────────────────────────────────────────┐
│ Service             │ Router         │ Connections │ Total Connections │ Servers                                        │
├─────────────────────┼────────────────┼─────────────┼───────────────────┼────────────────────────────────────────────────┤
│ Read-Write-Service  │ readwritesplit │ 1           │ 1                 │ mariadbgalera1, mariadbgalera2, mariadbgalera3 │
├─────────────────────┼────────────────┼─────────────┼───────────────────┼────────────────────────────────────────────────┤
│ Round-Robin-Service │ readconnroute  │ 1           │ 1                 │ mariadbgalera1, mariadbgalera2, mariadbgalera3 │
├─────────────────────┼────────────────┼─────────────┼───────────────────┼────────────────────────────────────────────────┤
│ Replication-Service │ binlogrouter   │ 1           │ 1                 │                                                │
└─────────────────────┴────────────────┴─────────────┴───────────────────┴────────────────────────────────────────────────┘

Let's remove Round-Robin-Service from the setup. Remove all servers from this particular service:

 maxctrl: unlink service Round-Robin-Service mariadbgalera1 mariadbgalera2 mariadbgalera3
OK

Our services are now looking like this:

 maxctrl: list services
┌─────────────────────┬────────────────┬─────────────┬───────────────────┬────────────────────────────────────────────────┐
│ Service             │ Router         │ Connections │ Total Connections │ Servers                                        │
├─────────────────────┼────────────────┼─────────────┼───────────────────┼────────────────────────────────────────────────┤
│ Read-Write-Service  │ readwritesplit │ 1           │ 1                 │ mariadbgalera1, mariadbgalera2, mariadbgalera3 │
├─────────────────────┼────────────────┼─────────────┼───────────────────┼────────────────────────────────────────────────┤
│ Round-Robin-Service │ readconnroute  │ 1           │ 1                 │                                                │
├─────────────────────┼────────────────┼─────────────┼───────────────────┼────────────────────────────────────────────────┤
│ Replication-Service │ binlogrouter   │ 1           │ 1                 │                                                │
└─────────────────────┴────────────────┴─────────────┴───────────────────┴────────────────────────────────────────────────┘

If the service is tied with a listener, we have to remove it as well. Use "list listeners" and specify the service name to look for it:

 maxctrl: list listeners Round-Robin-Service
┌──────────────────────┬──────┬─────────┬─────────┐
│ Name                 │ Port │ Host    │ State   │
├──────────────────────┼──────┼─────────┼─────────┤
│ Round-Robin-Listener │ 3307 │ 0.0.0.0 │ Running │
└──────────────────────┴──────┴─────────┴─────────┘

And then remove the listener:

 maxctrl: destroy listener Round-Robin-Service Round-Robin-Listener
OK

Finally, we can remove the service:

 maxctrl: destroy service Round-Robin-Service
OK

Modify Service's Parameter

Similar to the other object, one can modify a service parameter by using the "alter service" command:

 maxctrl: alter service Read-Write-Service master_accept_reads true
OK

Some routers support runtime configuration changes to all parameters. Currently all readconnroute, readwritesplit and schemarouter parameters can be changed at runtime. In addition to module specific parameters, the following list of common service parameters can be altered at runtime:

  • user
  • passwd
  • enable_root_user
  • max_connections
  • connection_timeout
  • auth_all_servers
  • optimize_wildcard
  • strip_db_esc
  • localhost_match_wildcard_host
  • max_slave_connections
  • max_slave_replication_lag
  • retain_last_statements

Note that alter command effect is immediate and the parameter's value in the runtime will be modified as well as the value in its individual MaxScale configuration file inside /var/lib/maxscale/maxscale.cnf.d/ for persistence across restart.

Add/Remove Servers into Service

After creating a service, we can use the link command to add our servers into the service. Use the server's name as created under Create Servers section:

 maxctrl: link service Round-Robin-Service mariadbgalera1 mariadbgalera2 mariadbgalera3
OK

Similarly, to remove a server from the service, just use "unlink service" command:

 maxctrl: unlink service Round-Robin-Service mariadbgalera3
OK

We can only remove one server from a service at a time, so repeat it for other nodes to delete them. Verify with "list services" or "show services" command.

Listener Management

List Listeners

To list all listeners, we need to know the service name in advanced:

maxctrl: list services
┌──────────────────────┬────────────────┬─────────────┬───────────────────┬────────────────────────────────────────────────┐
│ Service              │ Router         │ Connections │ Total Connections │ Servers                                        │
├──────────────────────┼────────────────┼─────────────┼───────────────────┼────────────────────────────────────────────────┤
│ Read-Write-Service   │ readwritesplit │ 0           │ 0                 │ mariadbgalera1, mariadbgalera2, mariadbgalera3 │
├──────────────────────┼────────────────┼─────────────┼───────────────────┼────────────────────────────────────────────────┤
│ Round-Robin-Service  │ readconnroute  │ 0           │ 0                 │ mariadbgalera1, mariadbgalera2, mariadbgalera3 │
├──────────────────────┼────────────────┼─────────────┼───────────────────┼────────────────────────────────────────────────┤

In the above example, we have two services, Read-Write-Service and Round-Robin-Service. Then, we can list out the listener for that particular service. For Read-Write-Service:

 maxctrl: list listeners Read-Write-Service
┌─────────────────────┬──────┬─────────┬─────────┐
│ Name                │ Port │ Host    │ State   │
├─────────────────────┼──────┼─────────┼─────────┤
│ Read-Write-Listener │ 3306 │ 0.0.0.0 │ Running │
└─────────────────────┴──────┴─────────┴─────────┘

And for Round-Robin-Service:

 maxctrl: list listeners Round-Robin-Service
┌──────────────────────┬──────┬─────────┬─────────┐
│ Name                 │ Port │ Host    │ State   │
├──────────────────────┼──────┼─────────┼─────────┤
│ Round-Robin-Listener │ 3307 │ 0.0.0.0 │ Running │
└──────────────────────┴──────┴─────────┴─────────┘

Unlike other objects in MaxScale, the listener does not have a "show" and "alter" commands since it is a fairly simple object.

Create a Listener

Make sure a service has been created. In this example, taken from the Create Service section above, we will create a listener so MaxScale will listen on port 3307 to process the MariaDB connections in a round-robin fashion:

 maxctrl: create listener Round-Robin-Service Round-Robin-Listener 3307
OK

Delete a Listener

To delete a listener, use the "destroy listener" command with the respective service name and listener name:

 maxctrl: destroy listener Round-Robin-Service Round-Robin-Listener
OK

This concludes this episode of basic MaxScale management tasks for MariaDB Cluster. In the next series, we are going to cover the MaxScale advanced management tasks like service filters, MaxScale user management and so on.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đặt Bộ ký tự và đối chiếu của bảng trong MariaDB

  2. MariaDB JSON_VALUE () so với JSON_QUERY ():Sự khác biệt là gì?

  3. Cách hoạt động của SUBSTRING_INDEX () trong MariaDB

  4. Cách REPLACE () hoạt động trong MariaDB

  5. Hướng dẫn về MariaDB Columnstore dành cho quản trị viên MySQL