Yêu cầu ClusterControl 1.6 trở lên. Áp dụng cho các phiên bản / cụm dựa trên MySQL.
Trong một số trường hợp, bạn có thể muốn chạy nhiều phiên bản MySQL trên một máy duy nhất. Bạn có thể muốn cấp cho những người dùng khác quyền truy cập vào máy chủ MySQL của riêng họ mà họ tự quản lý hoặc bạn có thể muốn thử nghiệm bản phát hành MySQL mới trong khi vẫn giữ cho thiết lập sản xuất hiện có không bị xáo trộn.
Có thể sử dụng một máy chủ MySQL nhị phân khác nhau cho mỗi trường hợp hoặc sử dụng cùng một nhị phân cho nhiều trường hợp (hoặc kết hợp hai cách tiếp cận). Ví dụ:bạn có thể chạy một máy chủ từ MySQL 5.6 và một từ MySQL 5.7, để xem cách các phiên bản khác nhau xử lý một khối lượng công việc nhất định. Hoặc bạn có thể chạy nhiều phiên bản của phiên bản MySQL mới nhất, mỗi phiên bản quản lý một bộ cơ sở dữ liệu khác nhau.
Cho dù bạn có sử dụng các tệp nhị phân máy chủ riêng biệt hay không, thì mỗi phiên bản mà bạn chạy phải được định cấu hình với các giá trị duy nhất cho một số tham số hoạt động. Điều này giúp loại bỏ khả năng xung đột giữa các phiên bản. Bạn có thể sử dụng MySQL Sandbox để tạo nhiều phiên bản MySQL. Hoặc bạn có thể sử dụng mysqld_multi có sẵn trong MySQL để bắt đầu hoặc dừng bất kỳ số lượng quy trình mysqld riêng biệt nào đang chạy trên các cổng TCP / IP và ổ cắm UNIX khác nhau.
Trong bài đăng trên blog này, chúng tôi sẽ hướng dẫn bạn cách định cấu hình ClusterControl để giám sát nhiều phiên bản MySQL đang chạy trên một máy chủ.
Giới hạn ClusterControl
Tại thời điểm viết bài, ClusterControl không hỗ trợ giám sát nhiều phiên bản trên một máy chủ cho mỗi cụm / nhóm máy chủ. Nó giả định các phương pháp hay nhất sau:
- Chỉ một phiên bản MySQL trên mỗi máy chủ (máy chủ vật lý hoặc máy ảo).
- Dự phòng dữ liệu MySQL phải được định cấu hình trên máy chủ N + 1.
- Tất cả các phiên bản MySQL đang chạy với cấu hình thống nhất trên toàn bộ cụm / nhóm máy chủ, ví dụ:cổng lắng nghe, nhật ký lỗi, datadir, basedir, socket đều giống hệt nhau.
Liên quan đến các điểm được đề cập ở trên, ClusterControl giả định rằng trong một cụm / nhóm máy chủ:
- Các phiên bản MySQL được định cấu hình thống nhất trên một cụm; cùng một cổng, cùng một vị trí của nhật ký, thư mục cơ sở / dữ liệu và các cấu hình quan trọng khác.
- Nó giám sát, quản lý và triển khai chỉ một phiên bản MySQL trên mỗi máy chủ lưu trữ.
- Ứng dụng khách MySQL phải được cài đặt trên máy chủ lưu trữ và có sẵn trên đường dẫn thực thi cho người dùng hệ điều hành tương ứng.
- MySQL được liên kết với một địa chỉ IP mà nút ClusterControl có thể truy cập được.
- Nó tiếp tục theo dõi thống kê máy chủ lưu trữ, ví dụ:CPU / RAM / đĩa / mạng cho từng phiên bản MySQL riêng lẻ. Trong môi trường có nhiều phiên bản trên mỗi máy chủ, bạn nên mong đợi số liệu thống kê về máy chủ dự phòng vì nó giám sát cùng một máy chủ nhiều lần.
Với các giả định trên, các tính năng ClusterControl sau không hoạt động đối với một máy chủ có nhiều phiên bản:
Sao lưu - Percona Xtrabackup không hỗ trợ nhiều phiên bản trên mỗi máy chủ và mysqldump được thực thi bởi ClusterControl chỉ kết nối với ổ cắm mặc định.
Quản lý quy trình - ClusterControl sử dụng tiêu chuẩn ‘pgrep -f mysqld_safe’ để kiểm tra xem MySQL có đang chạy trên máy chủ đó hay không. Với nhiều phiên bản MySQL, đây là một cách tiếp cận tích cực sai. Do đó, quá trình khôi phục tự động cho nút / cụm sẽ không hoạt động.
Quản lý cấu hình - ClusterControl cung cấp thư mục cấu hình MySQL tiêu chuẩn. Nó thường nằm dưới / etc / và / etc / mysql.
Giải pháp thay thế
Vẫn có thể theo dõi nhiều phiên bản MySQL trên một máy với ClusterControl với một giải pháp đơn giản. Mỗi phiên bản MySQL phải được coi là một thực thể duy nhất trên mỗi nhóm máy chủ.
Trong ví dụ này, chúng ta có 3 phiên bản MySQL trên một máy chủ duy nhất được tạo bằng MySQL Sandbox:
ClusterControl giám sát nhiều phiên bản trên cùng một máy chủChúng tôi đã tạo các phiên bản MySQL của mình bằng các lệnh sau:
$ su - sandbox
$ make_multiple_sandbox mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz
Theo mặc định, MySQL Sandbox tạo các phiên bản mysql lắng nghe 127.0.0.1. Cần phải cấu hình từng nút một cách thích hợp để làm cho chúng lắng nghe tất cả các địa chỉ IP có sẵn. Đây là tóm tắt về các phiên bản MySQL của chúng tôi trong máy chủ:
[[email protected] multi_msb_mysql-5_7_23]$ cat default_connection.json
{
"node1":
{
"host": "master",
"port": "15024",
"socket": "/tmp/mysql_sandbox15024.sock",
"username": "[email protected]%",
"password": "msandbox"
}
,
"node2":
{
"host": "master",
"port": "15025",
"socket": "/tmp/mysql_sandbox15025.sock",
"username": "[email protected]%",
"password": "msandbox"
}
,
"node3":
{
"host": "master",
"port": "15026",
"socket": "/tmp/mysql_sandbox15026.sock",
"username": "[email protected]%",
"password": "msandbox"
}
}
Bước tiếp theo là sửa đổi cấu hình của các phiên bản mới được tạo. Truy cập my.cnf cho từng biến trong số chúng và băm biến bind_address:
[[email protected] multi_msb_mysql-5_7_23]$ ps -ef | grep mysqld_safe
sandbox 13086 1 0 08:58 pts/0 00:00:00 /bin/sh bin/mysqld_safe --defaults-file=/home/sandbox/sandboxes/multi_msb_mysql-5_7_23/node1/my.sandbox.cnf
sandbox 13805 1 0 08:58 pts/0 00:00:00 /bin/sh bin/mysqld_safe --defaults-file=/home/sandbox/sandboxes/multi_msb_mysql-5_7_23/node2/my.sandbox.cnf
sandbox 14065 1 0 08:58 pts/0 00:00:00 /bin/sh bin/mysqld_safe --defaults-file=/home/sandbox/sandboxes/multi_msb_mysql-5_7_23/node3/my.sandbox.cnf
[[email protected] multi_msb_mysql-5_7_23]$ vi my.cnf
#bind_address = 127.0.0.1
Sau đó, cài đặt mysql trên nút chính của bạn và khởi động lại tất cả các phiên bản bằng tập lệnh restart_all.
[[email protected] multi_msb_mysql-5_7_23]$ yum install mysql
[[email protected] multi_msb_mysql-5_7_23]$ ./restart_all
# executing "stop" on /home/sandbox/sandboxes/multi_msb_mysql-5_7_23
executing "stop" on node 1
executing "stop" on node 2
executing "stop" on node 3
# executing "start" on /home/sandbox/sandboxes/multi_msb_mysql-5_7_23
executing "start" on node 1
. sandbox server started
executing "start" on node 2
. sandbox server started
executing "start" on node 3
. sandbox server started
Từ ClusterControl, chúng tôi cần thực hiện 'Nhập' cho từng phiên bản vì chúng tôi cần tách chúng trong một nhóm khác để làm cho nó hoạt động.
ClusterControl nhập máy chủ hiện cóĐối với node1, hãy nhập thông tin sau vào ClusterControl> Import:
ClusterControl nhập máy chủ hiện cóĐảm bảo đặt các cổng thích hợp (khác nhau đối với các phiên bản khác nhau) và máy chủ (giống nhau đối với tất cả các phiên bản).
Bạn có thể theo dõi tiến trình bằng cách nhấp vào biểu tượng Hoạt động / Công việc ở menu trên cùng.
ClusterControl nhập chi tiết máy chủ hiện cóBạn sẽ thấy node1 trong giao diện người dùng sau khi ClusterControl hoàn thành công việc. Lặp lại các bước tương tự để thêm hai nút khác có cổng 15025 và 15026. Bạn sẽ thấy một cái gì đó giống như bên dưới khi chúng được thêm vào:
Trang tổng quan ClusterControlCủa bạn đây. Chúng tôi vừa thêm các phiên bản MySQL hiện có của mình vào ClusterControl để theo dõi. Chúc bạn theo dõi vui vẻ!
Tái bút:Để bắt đầu với ClusterControl, hãy nhấp vào đây!