Cách cài đặt máy chủ MySQL cân bằng tải với ProxySQL trên Debian 11

theanh

Administrator
Nhân viên
ProxySQL là một proxy MySQL hiệu suất cao với kích thước nhỏ có thể được cài đặt trong nhiều môi trường như VM, K8s, bare-metal và Docker container. ProxySQL là một giải pháp mã nguồn mở cung cấp tính khả dụng cao cho MySQL Cluster của bạn với hỗ trợ ghép kênh kết nối, cung cấp Quy tắc truy vấn để định tuyến ghi đến các bản chính và phân phối các lần đọc trên các bản sao.

ProxySQL hỗ trợ cả AMD64 (x86_64) và ARM64. Nó cung cấp một proxy lớp ứng dụng cho ứng dụng của bạn và cũng cung cấp các truy vấn nâng cao với tính năng phát hiện lỗi.

Trong hướng dẫn này, bạn sẽ cài đặt và thiết lập cân bằng tải của MySQL Cluster thông qua ProxySQL trên máy chủ Debian 11. Bạn sẽ cài đặt ProxySQL v2 với percona XtraDB Client, sau đó thêm Percona XtraDB Cluster vào ProxySQL, thiết lập người dùng giám sát ProxySQL, sau đó thêm cơ sở dữ liệu và người dùng sẽ được sử dụng cho các ứng dụng của bạn.

Điều kiện tiên quyết​

Để bắt đầu với hướng dẫn này, bạn phải có các yêu cầu sau:
  • Máy chủ Linux chạy hệ thống Debian 11 - Ví dụ này sử dụng máy chủ Debian có tên máy chủ 'proxysql-deb'.
  • Người dùng không phải root có quyền quản trị viên sudo/root.
  • Cụm MySQL hoặc Cụm Percona XtraDB được cấu hình đầy đủ.
Vậy là xong. Khi tất cả các yêu cầu đã sẵn sàng, giờ bạn có thể bắt đầu cài đặt ProxySQL.

Thiết lập kho lưu trữ​

Bước đầu tiên bạn phải thực hiện đối với hướng dẫn này là thêm cả kho lưu trữ ProxySQL và Percona XtraDB vào máy chủ của bạn. Kho lưu trữ Percona XtraDB sẽ được sử dụng để cài đặt gói 'percona-xtradb-cluster-client' mà ProxySQL yêu cầu.

Để bắt đầu, hãy cài đặt một số phụ thuộc cơ bản bằng cách nhập lệnh apt sau. Nhập y khi được nhắc và nhấn ENTER để tiếp tục.
Mã:
sudo apt install wget gnupg2 lsb-release curl apt-transport-https ca-certificates

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22328%22%3E%3C/svg%3E


Tiếp theo, tải xuống tệp kho lưu trữ cho Percona XtraDB và cài đặt thông qua lệnh 'dpkg' bên dưới.
Mã:
wget -q https://repo.percona.com/apt/percona-release_latest.generic_all.deb
sudo dpkg -i percona-release_latest.generic_all.deb

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22400%22%3E%3C/svg%3E


Bây giờ hãy cập nhật và làm mới chỉ mục gói Debian của bạn bằng lệnh apt bên dưới. Bạn sẽ thấy kho lưu trữ Percona XdtraDB mới đã được thêm vào.
Mã:
sudo apt update
Sau đó, nhập lệnh 'percona-release' để kích hoạt kho lưu trữ Percona XtraDB Cluster 8.0.
Mã:
sudo percona-release setup pxc80

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22383%22%3E%3C/svg%3E


Sau khi thêm kho lưu trữ Percona XtraDB, hãy chạy lệnh sau để thêm khóa GPG và kho lưu trữ cho ProxySQL.
Mã:
wget -q -nv -O /etc/apt/trusted.gpg.d/proxysql-2.4.x-keyring.gpg 'https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/repo_pub_key.gpg'
echo deb https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/$(lsb_release -sc)/ ./ | tee /etc/apt/sources.list.d/proxysql.list
Cập nhật và làm mới lại chỉ mục gói Debian của bạn để cập nhật phiên bản mới kho lưu trữ.
Mã:
sudo apt update

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22201%22%3E%3C/svg%3E


Với cả kho lưu trữ Percona XtraDB và ProxySQL được thêm vào, bạn có thể cài đặt các gói máy khách ProxySQL và Percona XtraDB.

Cài đặt ProxySQL và Percona XtraDB Cluster Client​

Trong phần này, bạn sẽ cài đặt gói ProxySQL v2 với gói máy khách Percona XtraDB. Nhập lệnh apt sau để cài đặt cả hai gói máy khách ProxySQL và Percona XtraDB.
Mã:
sudo apt install proxysql2 percona-xtradb-cluster-client
Khi được nhắc, hãy nhập y để xác nhận và nhấn ENTER để tiếp tục.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22210%22%3E%3C/svg%3E


Sau khi ProxySQL được cài đặt, nó sẽ tự động chạy và tự động khởi động khi hệ thống khởi động. Nhập tiện ích lệnh systemctl sau để xác minh trạng thái dịch vụ ProxySQL.
Mã:
sudo systemctl is-enabled proxysql
sudo systemctl start proxysql
Đầu ra 'đã bật' xác nhận rằng ProxySQL sẽ tự động khởi động khi hệ thống khởi động. Và đầu ra 'active (running)' xác nhận rằng ProxySQL đang chạy.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22267%22%3E%3C/svg%3E


Tiếp theo, nhập lệnh mysql sau để đăng nhập vào máy chủ ProxySQL bằng tên người dùng và mật khẩu mặc định là 'admin'.
Mã:
mysql -u admin -padmin -h 127.0.0.1 -P 6032 --prompt='proxysql-deb> '
Sau khi thành công, bạn nên lấy ProxySQL shell như sau. Bạn đã kết nối với mô-đun quản trị ProxySQL thông qua máy khách Percona XtraDB.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22331%22%3E%3C/svg%3E


Bây giờ hãy nhập truy vấn sau để lấy danh sách các cơ sở dữ liệu trên máy chủ ProxySQL. Bạn sẽ thấy nhiều cơ sở dữ liệu có sẵn trên máy chủ ProxySQL.
Mã:
SHOW DATABASES;

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22631%22%20height=%22258%22%3E%3C/svg%3E


Sau khi cài đặt máy chủ ProxySQL và máy khách Percona XtraDB Cluster, bạn đã sẵn sàng thêm MySQL hoặc Percona XtraDB Cluster vào máy chủ ProxySQL và thiết lập cân bằng tải.

Thêm MySQL Cluster/Percona XtraDB Cluster vào ProxySQL​

Bước đầu tiên bạn phải thực hiện sau khi cài đặt máy chủ ProxySQL là thêm MySQL hoặc percona XtraDB Cluster của bạn vào máy chủ ProxySQL. Và điều này có thể thực hiện thông qua ProxySQL shell. Ví dụ này sử dụng Percona XtraDB Cluster với các chi tiết sau:
Mã:
Hostname IP Address Port
---------------------------------
pxc01 192.168.5.15 3306
pxc02 192.168.5.16 3306
pxc03 192.168.5.17 3306
Trước khi bắt đầu, hãy đảm bảo rằng bạn đã đăng nhập vào ProxySQL shell. Sau đó, nhập các truy vấn sau để thêm máy chủ MySQL của bạn vào ProxySQL. Hãy đảm bảo thay đổi thông tin chi tiết về địa chỉ IP và cổng bằng thông tin chi tiết về cụm MySQL của bạn.
Mã:
INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (0,'192.168.5.15',3306);
INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (0,'192.168.5.16',3306);
INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (0,'192.168.5.17',3306);
Đầu ra 'Query OK, 1 row affected' xác nhận rằng máy chủ MySQL đã được thêm vào máy chủ ProxySQL.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22155%22%3E%3C/svg%3E


Nhập truy vấn sau để xác minh danh sách các máy chủ MySQL có sẵn trên ProxySQL. Bạn sẽ thấy ba máy chủ MySQL được thêm vào máy chủ ProxySQL.
Mã:
SELECT * FROM mysql_servers;

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22113%22%3E%3C/svg%3E


Sau khi MySQL hoặc Percona XtraDB Cluster được thêm vào ProxySQL, tiếp theo bạn sẽ cần thiết lập chức năng giám sát Percona XtraDB Cluster trên ProxySQL.

Thiết lập Người dùng Giám sát ProxySQL​

Để đảm bảo MySQL hoặc Percona XtraDB Cluster hoạt động tốt, ProxySQL sẽ liên tục giám sát tất cả các máy chủ MySQL có sẵn. Để đạt được điều này, bạn phải tạo một người dùng mới trên percona XtraDB Cluster của mình, sau đó xác định người dùng giám sát trên máy chủ ProxySQL.

Đăng nhập vào máy chủ Percona XtraDB Cluster của bạn, truy cập shell MySQL thông qua lệnh 'mysql', sau đó thực hiện các truy vấn MySQL sau để tạo một người dùng mới 'monitor' với mật khẩu 'màn hình'.
Mã:
CREATE USER 'monitor'@'%' IDENTIFIED WITH mysql_native_password by 'monitor';
GRANT USAGE ON *.* TO 'monitor'@'%';
FLUSH PRIVILEGES;
Mã:
SELECT USER,host FROM mysql.user;
SHOW GRANTS FOR 'monitor'@'%';

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22127%22%3E%3C/svg%3E


Tiếp theo, di chuyển đến máy chủ ProxySQL và thực hiện truy vấn sau để xác định người dùng sẽ được sử dụng để giám sát Percona XtraDB Cluster. Thao tác này sẽ thay đổi biến mặc định 'mysql-monitor_username' bằng người dùng 'monitor' và biến 'mysql-monitor_password' cho mật khẩu 'monitor'.
Mã:
UPDATE global_variables SET variable_value='monitor' WHERE variable_name='mysql-monitor_username';
UPDATE global_variables SET variable_value='monitor' WHERE variable_name='mysql-monitor_password';
Nhập truy vấn sau để cập nhật một số tham số bổ sung nhằm giám sát Percona XtraDB Cluster trên máy chủ ProxySQL.
Mã:
UPDATE global_variables SET variable_value='2000' WHERE variable_name IN ('mysql-monitor_connect_interval','mysql-monitor_ping_interval','mysql-monitor_read_only_interval');
Lưu các thay đổi bạn đã thực hiện trên 'global_variables' trong máy chủ ProxySQL bằng cách thực hiện các truy vấn sau.
Mã:
LOAD MYSQL VARIABLES TO RUNTIME;
SAVE MYSQL VARIABLES TO DISK;
Bạn sẽ nhận được kết quả như thế này.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22139%22%3E%3C/svg%3E


Bây giờ hãy chạy truy vấn sau để xác minh danh sách 'global_variables' cho 'mysql-monitor_' trên máy chủ ProxySQL.
Mã:
SELECT * FROM global_variables WHERE variable_name LIKE 'mysql-monitor_%';
Bạn sẽ nhận được đầu ra như ảnh chụp màn hình sau - Biến 'mysql-monitor_username' phải có giá trị là người dùng 'monitor' và biến 'mysql-monitor_password' cho mật khẩu là 'monitor'. Ngoài ra, bạn có thể thấy giá trị của các biến 'mysql-monitor_connect_interval', 'mysql-monitor_ping_interval', 'mysql-monitor_read_only_interval' đãđược thay đổi thành '2000'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22742%22%3E%3C/svg%3E


Cuối cùng, hãy nhập các truy vấn sau để xác minh trạng thái giám sát của Percona XtraDB Cluster trên máy chủ ProxySQL. Thao tác này sẽ hiển thị cho bạn nhật ký về trạng thái nhật ký gần nhất và ping gần nhất từ máy chủ ProxySQL đến tất cả các máy chủ Percona XtraDB Cluster khả dụng.
Mã:
SELECT * FROM monitor.mysql_server_connect_log ORDER BY time_start_us DESC LIMIT 6;
SELECT * FROM monitor.mysql_server_ping_log ORDER BY time_start_us DESC LIMIT 6;
Khi thành công, bạn sẽ nhận được kết quả như thế này.

Nhật ký kết nối gần nhất của máy chủ ProxySQL đến Percona XtraDB Cluster.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22234%22%3E%3C/svg%3E


Nhật ký ping cuối cùng của máy chủ ProxySQL tới Percona XtraDB Cluster.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22229%22%3E%3C/svg%3E


Với MySQL hoặc Percona XtraDB Cluster được giám sát bởi máy chủ ProxySQL, giờ đây bạn đã sẵn sàng để thiết lập thiết lập người dùng mới mà các ứng dụng của bạn sẽ sử dụng.

Thiết lập người dùng cơ sở dữ liệu cho các ứng dụng​

Sau khi máy chủ ProxySQL được cài đặt và cấu hình, và MySQL hoặc Percona XtraDB Cluster được thêm vào làm cơ sở dữ liệu phụ trợ, bây giờ bạn sẽ thiết lập người dùng mới mà các ứng dụng của bạn sẽ sử dụng. Vì vậy, thay vì kết nối trực tiếp với máy chủ MySQL, các ứng dụng của bạn nên kết nối với máy chủ ProxySQL chạy theo mặc định trên cổng '6033'.

Để thiết lập người dùng mới cho các ứng dụng của mình, bạn phải thực hiện các bước sau:
  • Tạo người dùng mới trên cụm MySQL hoặc Cụm Percona XtraDB và thiết lập các đặc quyền.
  • Thêm người dùng Cụm Percona XtraDB của bạn vào máy chủ ProxySQL - chèn vào bảng 'mysql_users'.
Để bắt đầu, hãy quay lại máy chủ Cụm Percona XtraDB của bạn và đăng nhập vào shell MySQL thông qua người dùng gốc. Sau đó, tạo một người dùng MySQL mới và cấp cho người dùng các đặc quyền truy cập vào tất cả các cơ sở dữ liệu bằng cách nhập các truy vấn sau. Trong ví dụ này, bạn sẽ tạo một người dùng mới 'sbuser' với mật khẩu 'sbpass'. Ngoài ra, hãy đảm bảo thay đổi địa chỉ IP '192.168.5.85' bằng địa chỉ IP của máy chủ ProxySQL.
Mã:
CREATE USER 'sbuser'@'192.168.5.85' IDENTIFIED WITH mysql_native_password by 'sbpass';
GRANT ALL PRIVILEGES ON *.* TO 'sbuser'@'192.168.5.85';
FLUSH PRIVILEGES;

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22118%22%3E%3C/svg%3E


Tiếp theo, quay lại máy chủ ProxySQL và chạy truy vấn sau để thêm người dùng MySQL mới của bạn đến máy chủ ProxySQL. Người dùng MySQL của bạn phải được thêm vào bảng 'mysql_users' trên máy chủ ProxySQL. Ngoài ra, tại thời điểm viết bài này, máy chủ ProxySQL vẫn chưa hỗ trợ mật khẩu được mã hóa.
Mã:
INSERT INTO mysql_users (username,password) VALUES ('sbuser','sbpass');
Bây giờ hãy nhập các truy vấn sau để xác nhận và lưu các thay đổi trên máy chủ ProxySQL của bạn. Với điều này, người dùng mới của bạn đã sẵn sàng và bạn có thể sử dụng người dùng MySQL này cho các ứng dụng của mình.
Mã:
LOAD MYSQL USERS TO RUNTIME;
SAVE MYSQL USERS TO DISK;

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22186%22%3E%3C/svg%3E


Với lệnh này, ứng dụng của bạn bây giờ sẽ kết nối với máy chủ ProxySQL với người dùng 'sbuser' và mật khẩu 'sbpass' với cổng 6033.

Xác minh Cơ sở dữ liệu và Người dùng​

Trong phần này, bạn sẽ xác minh cài đặt ProxySQL bằng cách kết nối với máy chủ ProxySQL bằng người dùng và mật khẩu bạn đã tạo.

Nhập lệnh 'mysql' sau để đăng nhập vào máy chủ ProxySQL với người dùng mới 'sbuser' và mật khẩu 'sbpass'. Khi thành công, bạn sẽ thấy giao diện máy chủ ProxySQL.
Mã:
mysql -u sbuser -psbpass -h 127.0.0.1 -P 6033 --prompt='proxysql-deb> '

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22326%22%3E%3C/svg%3E


Nhập truy vấn sau để kiểm tra danh sách cơ sở dữ liệu trên Percona XtraDB Cluster. Trong ví dụ này, có một cơ sở dữ liệu 'percona' trên Percona XtraDB Cluster.
Mã:
show databases;
Chuyển sang cơ sở dữ liệu 'percona' thông qua truy vấn 'USE' bên dưới.
Mã:
use percona

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22618%22%20height=%22427%22%3E%3C/svg%3E


Tiếp theo, nhập các truy vấn sau để kiểm tra danh sách các bảng trên cơ sở dữ liệu 'percona'. Sau đó, truy xuất dữ liệu có sẵn trên cơ sở dữ liệu hiện tại mà bạn đang làm việc.
Mã:
show tables;
select * from example;
Bạn sẽ nhận được kết quả như thế này - Cơ sở dữ liệu được lưu trữ tại Percona XtraDB Cluster có thể truy cập được từ máy chủ ProxySQL. Điều này có nghĩa là quá trình cài đặt ProxySQL của bạn làm bộ cân bằng tải cho Percona XtraDB Cluster đã thành công.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22390%22%20height=%22393%22%3E%3C/svg%3E


Tiếp theo, nhập các truy vấn sau để chèn dữ liệu mới vào cơ sở dữ liệu 'percona' và bảng 'ví dụ'.
Mã:
INSERT INTO percona.example VALUES (4, 'pxc04');
INSERT INTO percona.example VALUES (5, 'pxc05');
Sau đó, xác minh lại dữ liệu mới được cập nhật bằng truy vấn sau. Nếu thành công, bạn sẽ nhận được dữ liệu mới có trong bảng 'ví dụ'. Điều này xác nhận rằng người dùng của bạn có thể đọc và ghi vào cơ sở dữ liệu trên Percona XtraDB Cluster.
Mã:
select * from example;

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22608%22%20height=%22386%22%3E%3C/svg%3E


Cuối cùng, để đảm bảo dữ liệu mới của bạn được cập nhật trên Percona XtraDB Cluster, bạn phải xác minh trực tiếp từ percona XtraDB Cluster máy chủ.

Đăng nhập vào máy chủ Percona XtraDB Cluster của bạn, truy cập shell MySQL thông qua người dùng root, sau đó chạy truy vấn sau để lấy dữ liệu từ bảng 'percona' của cơ sở dữ liệu 'example'.
Mã:
select * from percona.example;
Khi thành công, bạn sẽ nhận được dữ liệu mới mà bạn đã thêm thông qua máy chủ ProxySQL.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22397%22%20height=%22286%22%3E%3C/svg%3E


Với những điều này, bạn đã cài đặt thành công máy chủ ProxySQL làm bộ cân bằng tải cho MySQL Cluster hoặc Percona XtraDB Cluster.

Kết luận​

Trong hướng dẫn này, bạn đã cấu hình Cân bằng tải của MySQL Cluster hoặc Percona XtraDB Cluster thông qua ProxySQL trên máy chủ Debian 11. Bạn đã cài đặt ProxySQLv2, thêm Percona XtraDB Cluster vào ProxySQL và cấu hình giám sát Percona XtraDB Cluster trên ProxySQL.

Ngoài ra, bạn cũng đã tạo và cấu hình người dùng MySQL hoặc Percona XtraDB Cluster có thể được sử dụng cho các ứng dụng của mình. Bạn cũng đã xác minh tính năng cân bằng tải của MySQL Cluster hoặc Percona XtraDB Cluster thông qua ProxySQL cho phép máy chủ cơ sở dữ liệu và các ứng dụng của bạn có tính khả dụng cao và khả năng chịu lỗi.

Với điều này, giờ đây bạn có thể thêm nhiều nút percona XtraDB Cluster hơn vào máy chủ cơ sở dữ liệu cân bằng tải của mình. Ngoài ra, bạn có thể thiết lập phân tách Đọc/Ghi thông qua ProxySQL, thiết lập phân mảnh ProxySQL và thiết lập kết nối SSL từ proxySQL đến Percona XtraDB Cluster. Để tìm hiểu thêm về ProxySQL, hãy truy cập tài liệu chính thức của ProxySQL.
 
Back
Bên trên