Cách thiết lập cụm MySQL 8 ba nút trên Debian 10

theanh

Administrator
Nhân viên
MySQL là một hệ thống quản lý cơ sở dữ liệu quan hệ, mã nguồn mở và miễn phí. Nó được sử dụng để lưu trữ dữ liệu cho nhiều mục đích khác nhau, bao gồm kho dữ liệu, thương mại điện tử và các ứng dụng ghi nhật ký. MySQL Cluster là một công nghệ cung cấp khả năng mở rộng và tính khả dụng với chi phí thấp.

Trong hướng dẫn này, chúng ta sẽ sử dụng một nút chính để lưu trữ cấu hình của cụm và hai nút dữ liệu để lưu trữ dữ liệu cụm. Địa chỉ IP của mỗi nút được hiển thị bên dưới:
  • Nút chính hoặc nút quản lý - 104.245.33.61
  • Nút dữ liệu 1 - 104.245.32.195
  • Nút dữ liệu 2 - 69.87.218.169

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

  • Ba máy chủ chạy Debian 10, một cho nút quản lý và các nút còn lại là nút dữ liệu.
  • Mật khẩu gốc được thiết lập trên mỗi máy chủ.

Bắt đầu​

Đầu tiên, bạn sẽ cần cập nhật tất cả các máy chủ lên phiên bản mới nhất. Bạn có thể cập nhật tất cả bằng lệnh sau:
Mã:
apt-get update -y
Sau khi tất cả các máy chủ được cập nhật, bạn có thể tiến hành bước tiếp theo.

Cài đặt và thiết lập MySQL Cluster Manager​

Trước tiên, bạn sẽ cần cài đặt gói quản lý cụm MySQL trên nút Master. Theo mặc định, gói này không có trong kho lưu trữ mặc định của Debian 10. Vì vậy, bạn sẽ cần tải xuống từ trang web chính thức của MySQL.

Bạn có thể tải xuống bằng lệnh sau:
Mã:
wget https://cdn.mysql.com//Downloads/MySQL-Cluster-8.0/mysql-cluster-community-management-server_8.0.24-1debian10_amd64.deb
Sau khi tải xuống tệp deb, hãy cài đặt tệp này bằng lệnh sau:
Mã:
dpkg -i mysql-cluster-community-management-server_8.0.24-1debian10_amd64.deb
Sau khi cài đặt hoàn tất, hãy tạo một thư mục để lưu trữ cấu hình cụm bằng lệnh sau:
Mã:
mkdir /var/lib/mysql-cluster
Tiếp theo, hãy tạo một tệp cấu hình mới bằng lệnh sau:
Mã:
nano /var/lib/mysql-cluster/config.ini
Thêm các dòng sau:
Mã:
[ndbd default]NoOfReplicas=2 # Số lượng bản sao[ndb_mgmd]# Tùy chọn quy trình quản lý:hostname=104.245.33.61 #IP của Cụm MySQL Trình quản lýdatadir=/var/lib/mysql-cluster[ndbd]hostname=104.245.32.195 #IP của nút dữ liệu đầu tiênNodeId=2 # ID nút cho nút dữ liệu nàydatadir=/usr/local/mysql/data # Thư mục từ xa cho các tệp dữ liệu[ndbd]hostname=69.87.218.169 #IP của nút dữ liệu thứ haiNodeId=3 # ID nút cho nút dữ liệu nàydatadir=/usr/local/mysql/data # Thư mục từ xa cho các tệp dữ liệu[mysqld]# Tùy chọn nút SQL:hostname=104.245.33.61 #IP của Trình quản lý cụm MySQL
Lưu và đóng tệp khi bạn hoàn tất, sau đó khởi động trình quản lý cụm bằng lệnh sau:
Mã:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini
Bạn sẽ nhận được kết quả đầu ra sau:
Mã:
MySQL Cluster Management Server mysql-8.0.24 ndb-8.0.242021-05-10 08:23:05 [MgmtSrvr] THÔNG TIN -- Thư mục cấu hình mặc định '/usr/mysql-cluster' không tồn tại. Đang cố gắng tạo nó...2021-05-10 08:23:05 [MgmtSrvr] THÔNG TIN -- Đã tạo thành công thư mục cấu hình
Bây giờ, hãy tắt máy chủ đang chạy bằng lệnh sau:
Mã:
pkill -f ndb_mgmd
Tiếp theo, tạo tệp dịch vụ systemd cho MySQL Cluster Manager để quản lý dịch vụ:
Mã:
nano /etc/systemd/system/ndb_mgmd.service
Thêm các dòng sau:
Mã:
[Unit]Description=MySQL NDB Cluster Management ServerAfter=network.target auditd.service[Service]Type=forkingExecStart=/usr/sbin/ndb_mgmd -f /var/lib/mysql-cluster/config.iniExecReload=/bin/kill -HUP $MAINPIDKillMode=processRestart=on-failure[Install]WantedBy=multi-user.target
Lưu và đóng tệp, sau đó tải lại daemon systemd bằng lệnh sau:
Mã:
systemctl daemon-reload
Tiếp theo, khởi động Cluster Manager và cho phép nó khởi động khi khởi động lại hệ thống bằng lệnh sau:
Mã:
systemctl start ndb_mgmd
systemctl enable ndb_mgmd
Bây giờ bạn có thể kiểm tra trạng thái của dịch vụ bằng lệnh sau:
Mã:
systemctl status ndb_mgmd
Bạn sẽ nhận được kết quả sau:
Mã:
? ndb_mgmd.service - MySQL NDB Cluster Management Server Đã tải: đã tải (/etc/systemd/system/ndb_mgmd.service; đã tắt; cài đặt trước của nhà cung cấp: đã bật) Đang hoạt động: đang hoạt động (đang chạy) kể từ Thứ Hai 2021-05-10 08:23:53 UTC; 6 giây trước Tiến trình: 984 ExecStart=/usr/sbin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini (code=exited, status=0/SUCCESS) PID chính: 985 (ndb_mgmd) Nhiệm vụ: 12 (giới hạn: 2359) Bộ nhớ: 6,5M CGroup: /system.slice/ndb_mgmd.service ??985 /usr/sbin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini10 tháng 5 08:23:53 master systemd[1]: Đang khởi động MySQL NDB Cluster Management Server...10 tháng 5 08:23:53 master ndb_mgmd[984]: MySQL Cluster Management Server mysql-8.0.24 ndb-8.0.2410 tháng 5 08:23:53 master systemd[1]: Đã khởi động MySQL NDB Cluster Management Server.
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Cài đặt và cấu hình Data Nodes​

Tiếp theo, chúng ta sẽ gói data node trên các máy chủ khác và cấu hình để giao tiếp với MySQL Cluster Manager.

Trước tiên, cài đặt các phụ thuộc cần thiết trên cả hai data node bằng lệnh sau:
Mã:
apt-get install libclass-methodmaker-perl -y
Sau khi cài đặt xong tất cả các phụ thuộc, hãy tải xuống phiên bản mới nhất của tệp deb MySQL Data Nodes bằng lệnh sau:
Mã:
wget https://cdn.mysql.com//Downloads/MySQL-Cluster-8.0/mysql-cluster-community-data-node_8.0.24-1debian10_amd64.deb
Sau khi tải xuống hoàn tất, hãy cài đặt tệp đã tải xuống tệp với lệnh sau:
Mã:
dpkg -i mysql-cluster-community-data-node_8.0.24-1debian10_amd64.deb
Theo mặc định, các nút dữ liệu lưu trữ tất cả các cấu hình trong tệp /etc/my.cnf.

Vì vậy, hãy tạo một tệp /etc/my.cnf mới trên cả hai nút dữ liệu bằng lệnh sau:
Mã:
nano /etc/my.cnf
Thêm IP cụm như được hiển thị bên dưới:
Mã:
[mysql_cluster]# Tùy chọn cho các quy trình Cụm NDB:ndb-connectstring=104.245.33.61 #IP của Trình quản lý Cụm MySQL
Lưu và đóng tệp, sau đó tạo một thư mục dữ liệu trên cả hai nút dữ liệu:
Mã:
mkdir -p /usr/local/mysql/data
Bây giờ, hãy khởi động các nút dữ liệu bằng lệnh sau lệnh:
Mã:
ndbd
Bạn sẽ nhận được kết quả sau:
Mã:
2021-05-10 08:27:13 [ndbd] INFO -- Angel đã kết nối tới '104.245.33.61:1186'2021-05-10 08:27:13 [ndbd] INFO -- Angel đã phân bổ nodeid: 2
Tiếp theo, hãy tắt tiến trình ndbd đang chạy bằng lệnh sau:
Mã:
pkill -f ndbd
Tiếp theo, hãy tạo tệp dịch vụ systemd cho ndbd trên cả hai nút dữ liệu bằng lệnh sau:
Mã:
nano /etc/systemd/system/ndbd.service
Thêm các dòng sau:
Mã:
[Unit]Description=MySQL NDB Data Node DaemonAfter=network.target auditd.service[Service]Type=forkingExecStart=/usr/sbin/ndbdExecReload=/bin/kill -HUP $MAINPIDKillMode=processRestart=on-failure[Install]WantedBy=multi-user.target
Lưu và đóng tệp, sau đó tải lại daemon systemd bằng lệnh sau:
Mã:
systemctl daemon-reload
Tiếp theo, khởi động dịch vụ ndbd và để nó khởi động khi khởi động lại hệ thống bằng lệnh sau:
Mã:
systemctl start ndbd
systemctl enable ndbd
Bạn cũng có thể kiểm tra trạng thái của dịch vụ ndbd bằng lệnh sau:
Mã:
systemctl status ndbd
Bạn sẽ nhận được kết quả sau:
Mã:
? ndbd.service - MySQL NDB Data Node Daemon Đã tải: đã tải (/etc/systemd/system/ndbd.service; đã tắt; cài đặt trước của nhà cung cấp: đã bật) Đang hoạt động: đang hoạt động (đang chạy) kể từ Thứ Hai 2021-05-10 08:28:28 UTC; 12 giây trước Tiến trình: 740 ExecStart=/usr/sbin/ndbd (code=exited, status=0/SUCCESS) PID chính: 741 (ndbd) Nhiệm vụ: 46 (giới hạn: 2359) Bộ nhớ: 827,1M CGroup: /system.slice/ndbd.service ??741 /usr/sbin/ndbd ??742 /usr/sbin/ndbd10 tháng 5 08:28:28 data1 systemd[1]: Đang khởi động MySQL NDB Data Node Daemon...10 tháng 5 08:28:28 data1 ndbd[740]: 10-05-2021 08:28:28 [ndbd] THÔNG TIN -- Angel đã kết nối tới '104.245.33.61:1186'10 tháng 5 08:28:28 data1 ndbd[740]: 2021-05-10 08:28:28 [ndbd] THÔNG TIN -- Angel đã phân bổ nodeid: 210 tháng 5 08:28:28 data1 systemd[1]: Đã khởi động MySQL NDB Data Node Daemon.

Cài đặt và cấu hình MySQL Server​

Tiếp theo, chúng ta sẽ tải xuống và cài đặt các gói MySQL Server và Client trên MySQL Cluster Manager Node.

Trước tiên, hãy tải xuống phiên bản mới nhất của MySQL Cluster Bundle bằng lệnh sau:
Mã:
wget https://cdn.mysql.com/Downloads/MySQL-Cluster-8.0/mysql-cluster_8.0.24-1debian10_amd64.deb-bundle.tar
Tiếp theo, giải nén tệp đã tải xuống bên trong thư mục /opt bằng lệnh sau:
Mã:
tar -xvf mysql-cluster_8.0.24-1debian10_amd64.deb-bundle.tar -C /opt
Tiếp theo, hãy thay đổi thư mục thành /opt và cài đặt các phụ thuộc cần thiết bằng lệnh sau:
Mã:
cd /opt
apt-get install libaio1 libmecab2 libnuma1 psmisc -y
Tiếp theo, cài đặt tệp deb MySQL Common bằng lệnh sau:
Mã:
dpkg -i mysql-common*
Tiếp theo, cài đặt các gói MySQL Client bằng lệnh sau:
Mã:
dpkg -i mysql-cluster-community-client_8.0.24-1debian10_amd64.deb mysql-cluster-community-client-core_8.0.24-1debian10_amd64.deb mysql-cluster-community-client-plugins_8.0.24-1debian10_amd64.deb
dpkg -i mysql-client_8.0.24-1debian10_amd64.deb
dpkg -i mysql-cluster-community-server*
Nếu bạn gặp bất kỳ lỗi phụ thuộc nào, hãy chạy lệnh sau:
Mã:
apt-get install -f
Tiếp theo, cài đặt gói MySQL Server bằng lệnh sau:
Mã:
dpkg -i mysql-server_8.0.24-1debian10_amd64.deb
Trong quá trình cài đặt, bạn sẽ được nhắc đặt mật khẩu gốc MySQL.

Sau khi cài đặt máy chủ MySQL, bạn sẽ cần chỉnh sửa tệp cấu hình chính của MySQL và xác định IP cụm:
Mã:
nano /etc/mysql/my.cnf
Thêm các dòng sau:
Mã:
[mysqld]# Tùy chọn cho quy trình mysqld:ndbcluster # chạy lưu trữ NDB engine[mysql_cluster]# Tùy chọn cho quy trình NDB Cluster:ndb-connectstring=104.245.33.61 #IP của MySQL Cluster Manager
Lưu và đóng tệp khi bạn hoàn tất. Tiếp theo, khởi động lại dịch vụ MySQL và cho phép nó khởi động khi khởi động lại hệ thống:
Mã:
systemctl restart mysql
systemctl enable mysql
Bạn có thể kiểm tra trạng thái máy chủ MySQL bằng lệnh sau:
Mã:
systemctl status mysql
Bạn sẽ thấy đầu ra sau:
Mã:
? mysql.service - MySQL Cluster Community Server Đã tải: đã tải (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Đang hoạt động: đang hoạt động (đang chạy) kể từ Thứ Hai 2021-05-10 08:35:04 UTC; 7 giây trước Tài liệu: man:mysqld(8) http://dev.mysql.com/doc/refman/en/using-systemd.html Tiến trình: 1950 ExecStartPre=/usr/share/mysql-8.0/mysql-systemd-start pre (code=exited, status=0/SUCCESS) PID chính: 1985 (mysqld) Trạng thái: "Máy chủ đang hoạt động" Nhiệm vụ: 47 (giới hạn: 2359) Bộ nhớ: 372,0M CGroup: /system.slice/mysql.service ??1985 /usr/sbin/mysqld10 tháng 5 08:35:01 master systemd[1]: Đang khởi động MySQL Cluster Community Server...10 tháng 5 08:35:04 master systemd[1]: Đã khởi động MySQL Cluster Community Server.
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Kiểm tra MySQL Cluster​

Bây giờ, chúng ta đã cài đặt và cấu hình MySQL Cluster ba nút thành công. Tiếp theo, bạn sẽ cần xác minh xem nó có hoạt động hay không.

Đầu tiên, hãy đăng nhập vào nút MySQL Cluster Manager và đăng nhập vào MySQL bằng lệnh sau:
Mã:
mysql -u root -p
Cung cấp mật khẩu gốc MySQL của bạn rồi kiểm tra thông tin cụm bằng lệnh sau:
Mã:
mysql> SHOW ENGINE NDB STATUS \G
Nếu mọi thứ ổn, bạn sẽ nhận được kết quả sau:
Mã:
****************************** 1. hàng ****************************** Loại: ndbclus Tên: kết nốiTrạng thái: cluster_node_id=4, connected_host=104.245.33.61, connected_port=1186, number_of_data_nodes=2, number_of_ready_data_nodes=2, connect_count=0****************************** 2. hàng ****************************** Loại: ndbclus Tên: NdbTransactionTrạng thái: created=2, free=2, sizeof=392*************************** 3. hàng ****************************** Loại: ndbclus Tên: NdbOperationTrạng thái: created=4, free=4, sizeof=944*************************** 4. hàng ****************************** Loại: ndbclus Tên: NdbIndexScanOperationTrạng thái: created=0, free=0, sizeof=1152****************************** 5. hàng ****************************** Loại: ndbclus Tên: NdbIndexOperationTrạng thái: created=0, free=0, sizeof=952****************************** 6. hàng ****************************** Loại: ndbclus Tên: NdbRecAttrTrạng thái: created=0, free=0, sizeof=88*************************** 7. hàng ****************************** Loại: ndbclus Tên: NdbApiSignalTrạng thái: created=16, free=16, sizeof=144*************************** 8. hàng ****************************** Loại: ndbclus Tên: NdbLabelTrạng thái: created=0, free=0, sizeof=200****************************** 9. hàng ****************************** Loại: ndbclus Tên: NdbBranchTrạng thái: created=0, free=0, sizeof=32*************************** 10. hàng ****************************** Loại: ndbclus Tên: NdbSubroutineTrạng thái: created=0, free=0, sizeof=72*************************** 11. hàng ****************************** Loại: ndbclus Tên: NdbCallTrạng thái: created=0, free=0, sizeof=24*************************** 12. hàng ****************************** Loại: ndbclus Tên: NdbBlobTrạng thái: created=0, free=0, sizeof=592*************************** 13. hàng ****************************** Loại: ndbclus Tên: NdbReceiverTrạng thái: created=0, free=0, sizeof=128****************************** 14. hàng ****************************** Loại: ndbclus Tên: NdbLockHandleTrạng thái: created=0, free=0, sizeof=48*************************** 15. hàng ****************************** Loại: ndbclus Tên: binlogTrạng thái: latest_epoch=897648164875, latest_trans_epoch=820338753551, latest_received_binlog_epoch=0, latest_handled_binlog_epoch=0, latest_applied_binlog_epoch=015 hàng trong tập hợp (0,00 giây)
Bây giờ, thoát khỏi shell MySQL bằng lệnh sau:
Mã:
mysql> exit
Bây giờ, chúng ta sẽ thực hiện một thử nghiệm khác để xác nhận rằng cụm đang hoạt động bình thường.

Kết nối bảng điều khiển quản lý Cụm bằng lệnh sau:
Mã:
ndb_mgm
Bạn sẽ thấy đầu ra sau:
Mã:
-- NDB Cluster -- Management Client --ndb_mgm>
Bây giờ, hãy chạy lệnh sau để kiểm tra tất cả dữ liệu ndoes:
Mã:
ndb_mgm> HIỂN THỊ
Bạn sẽ nhận được kết quả đầu ra sau:
Mã:
Đã kết nối với Máy chủ quản lý tại: 104.245.33.61:1186Cấu hình cụm---------------------[ndbd(NDB)] 2 nútid=2 @104.245.32.195 (mysql-8.0.24 ndb-8.0.24, Nodegroup: 0, *)id=3 @69.87.218.169 (mysql-8.0.24 ndb-8.0.24, Nodegroup: 0)[ndb_mgmd(MGM)] 1 nútid=1 @104.245.33.61 (mysql-8.0.24 ndb-8.0.24)[mysqld(API)] 1 nútid=4 @104.245.33.61 (mysql-8.0.24 ndb-8.0.24)
Để kiểm tra trạng thái của nút dữ liệu đầu tiên, hãy chạy lệnh sau:
Mã:
ndb_mgm> 2 STATUS
Bạn sẽ thấy đầu ra sau:
Mã:
Node 2: started (mysql-8.0.24 ndb-8.0.24)
Để kiểm tra trạng thái của nút dữ liệu thứ hai, hãy chạy lệnh sau:
Mã:
ndb_mgm> 3 STATUS
Bạn sẽ thấy đầu ra sau:
Mã:
Node 3: started (mysql-8.0.24 ndb-8.0.24)

Kết luận​

Xin chúc mừng! bạn đã cài đặt và thiết lập thành công cụm MySQL ba nút trên máy chủ Debian 10. Bây giờ bạn có thể sử dụng thiết lập này trong môi trường sản xuất để đạt được khả năng mở rộng và tính khả dụng.
 
Back
Bên trên