Cách cài đặt và cấu hình MySQL Cluster trên CentOS 7

theanh

Administrator
Nhân viên
MySQL Cluster đượcthiết kế để cung cấp cơ sở dữ liệu tương thích với MySQL với tính khả dụng cao và độ trễ thấp. Công nghệ MySQL Cluster được triển khai thông qua các công cụ lưu trữ NDB (Network DataBase) và NDBCLUSTER và cung cấp cụm không chia sẻ và phân mảnh tự động cho các hệ thống cơ sở dữ liệu MySQL. Trong kiến trúc không chia sẻ, mỗi nút có bộ nhớ và đĩa riêng, việc sử dụng lưu trữ chia sẻ như NFS, SAN không được khuyến nghị và hỗ trợ.



Để triển khai MySQL Cluster, chúng ta phải cài đặt ba loại nút. Mỗi loại nút sẽ được cài đặt trên máy chủ riêng của nó. Các thành phần là:

1. Nút quản lý - NDB_MGMD/MGM
Máy chủ quản lý Cluster được sử dụng để quản lý nút khác của cụm. Chúng ta có thể tạo và cấu hình các nút mới, khởi động lại, xóa hoặc sao lưu các nút trên cụm từ nút quản lý.

2. Data Nodes - NDBD/NDB
Đây là lớp diễn ra quá trình đồng bộ hóa và sao chép dữ liệu giữa các nút.

3. SQL Nodes - MySQLD/API
Các máy chủ giao diện được các ứng dụng sử dụng để kết nối với cụm cơ sở dữ liệu.

Trong hướng dẫn này, tôi sẽ hướng dẫn bạn cài đặt và cấu hình MySQL Cluster với centOS 7. Chúng ta sẽ cấu hình nút quản lý, hai nút dữ liệu và hai nút SQL.

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

  • Hệ điều hành là CentOS 7 - 64bit.
  • 5 máy chủ CentOS hoặc máy ảo. Tôi sẽ sử dụng tên máy chủ và địa chỉ IP như được hiển thị bên dưới:
  • Nút quản lý
    db1 = 192.168.1.120
  • Nút dữ liệu
    db2 = 192.168.1.121
    db3 = 192.168.1.122
  • Nút SQL
    db4 = 192.168.1.123
    db5 = 192.168.1.124

Bước 1 - Thiết lập Nút quản lý​

Bước đầu tiên là tạo "Nút quản lý" với CentOS 7 db1 và IP 192.168.1.120. Hãy đảm bảo rằng bạn đã đăng nhập vào máy chủ db1 với tư cách là người dùng root.

A. Tải xuống phần mềm MySQL Cluster​

Tôi sẽ tải xuống từ trang web MySQL bằng wget. Tôi đang sử dụng "Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-bit), RPM Bundle" tại đây tương thích với CentOS 7. Sau đó giải nén tệp tar.
Mã:
cd ~
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
tar -xvf MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar

B. Cài đặt và gỡ bỏ các gói​

Trước khi cài đặt gói rpm cho MySQL Cluster, bạn cần cài đặt perl-Data-Dumper được yêu cầu bởi máy chủ MySQL-Cluster. Và bạn cần xóa mariadb-libstrước khi chúng ta có thể cài đặt MySQL Cluster.
Mã:
yum -y install perl-Data-Dumper
yum -y remove mariadb-libs

C. Cài đặt MySQL Cluster​

Cài đặt gói MySQL Cluster bằng các lệnh rpm sau:
Mã:
cd ~
rpm -Uvh MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpm
Đảm bảo không có lỗi.

D. Cấu hình MySQL Cluster​

Tạo một thư mục mới cho các tệp cấu hình. Tôi sẽ sử dụng thư mục "/var/lib/mysql-cluster".
Mã:
mkdir -p /var/lib/mysql-cluster
Sau đó tạo tệp cấu hình mới cho quản lý cụm có tên "config.ini" trong thư mục mysql-cluster.
Mã:
cd /var/lib/mysql-cluster
vi config.ini
Dán cấu hình bên dưới:
Mã:
[ndb_mgmd default]
# Thư mục cho các tệp nhật ký nút MGM
DataDir=/var/lib/mysql-cluster

[ndb_mgmd]
#Nút quản lý db1
HostName=192.168.1.120

[ndbd default]
NoOfReplicas=2 # Số lượng bản sao
DataMemory=256M # Phân bổ bộ nhớ để lưu trữ dữ liệu
IndexMemory=128M # Phân bổ bộ nhớ để lưu trữ chỉ mục
#Thư mục cho Nút dữ liệu
DataDir=/var/lib/mysql-cluster

[ndbd]
#Nút dữ liệu db2
HostName=192.168.1.121

[ndbd]
#Nút dữ liệu db3
HostName=192.168.1.122

[mysqld]
#Nút SQL db4
HostName=192.168.1.123

[mysqld]
#Nút SQL db5
HostName=192.168.1.124
Lưu tệp và thoát.

E. Khởi động nút quản lý​

Tiếp theo, khởi động nút quản lý bằng lệnh bên dưới:
Mã:
ndb_mgmd --config-file=/var/lib/mysql-cluster/config.ini
Kết quả sẽ tương tự như sau:
Mã:
Máy chủ quản lý cụm MySQL mysql-5.6.28 ndb-7.4.10
2016-03-22 19:26:08 [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ó...
2016-03-22 19:26:08 [MgmtSrvr] THÔNG TIN -- Đã tạo thành công thư mục cấu hình
Nút quản lý đã được khởi động, bây giờ bạn có thể sử dụng lệnh "ndb_mgm" để theo dõi nút:
Mã:
ndb_mgm
show


Bạn có thể thấy nút quản lý đã được khởi động với: mysql-6.6 và ndb-7.4.


Bước 2 - Thiết lập các nút dữ liệu cụm MySQL​

Chúng tôi sẽ sử dụng 2 máy chủ CentOS cho các nút dữ liệu.
  1. db2 = 192.168.1.121
  2. db3 = 192.168.1.122

A. Đăng nhập với tư cách là người dùng root và tải xuống phần mềm MySQL Cluster​

Đăng nhập vào máy chủ db2 bằng ssh:
Mã:
ssh [emailprotected]
Sau đó tải xuống gói MySQL Cluster và giải nén:
Mã:
cd ~
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
tar -xvf MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar

B. Cài đặt và gỡ bỏ các gói​

Cài đặt perl-Data-Dumper và gỡ bỏ mariadb-libs:
Mã:
yum -y install perl-Data-Dumper
yum -y remove mariadb-libs

C. Cài đặt MySQL Cluster​

Bây giờ chúng ta có thể cài đặt các gói MySQL Cluster cho Data Node bằng các lệnh rpm sau:
Mã:
cd ~
rpm -Uvh MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpm
Đảm bảo không có lỗi.

D. Cấu hình Data Node​

Tạo một tệp cấu hình mới trong thư mục /etc bằng trình soạn thảo vi:
Mã:
vi /etc/my.cnf
Dán cấu hình bên dưới:
Mã:
[mysqld]
ndbcluster
ndb-connectstring=192.168.1.120 # Địa chỉ IP của Management Node

[mysql_cluster]
ndb-connectstring=192.168.1.120 # Địa chỉ IP của Management Node
Lưu tệp và thoát.

Sau đó, tạo thư mục mới cho dữ liệu cơ sở dữ liệu mà chúng ta đã xác định trong tệp cấu hình của management node "config.ini".
Mã:
mkdir -p /var/lib/mysql-cluster
Bây giờ hãy khởi động data node/ndbd:
Mã:
ndbd
kết quả:
Mã:
2016-03-22 19:35:56 [ndbd] THÔNG TIN -- Angel đã kết nối tới '192.168.1.120:1186'
2016-03-22 19:35:56 [ndbd] THÔNG TIN -- Angel đã phân bổ nodeid: 2


Nút dữ liệu db2 đã kết nối tới nút quản lý ip 192.168.1.120.

E. Làm lại bước 2.A - 2.D trên máy chủ db3.​

Vì chúng ta có 2 nút dữ liệu, vui lòng làm lại các bước 2.A - 2.D trên nút dữ liệu thứ hai của chúng ta.


Bước 3 - Thiết lập SQL Node​

Bước này chứa thiết lập cho SQL Node cung cấp quyền truy cập ứng dụng vào cơ sở dữ liệu. Chúng tôi sử dụng 2 máy chủ CentOS cho các SQL Node:
  1. db4 = 192.168.1.123
  2. db5 = 192.168.1.124

A. Đăng nhập và tải xuống MySQL Cluster​

Đăng nhập vào máy chủ db4 với tư cách là người dùng root:
Mã:
ssh [emailprotected]
Và tải xuống gói MySQL Cluster:
Mã:
cd ~
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
tar -xvf MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar

B. Cài đặt và gỡ bỏ các gói​

Cài đặt perl-Data-Dumper và gỡ bỏ các mariadb-libs xung đột với MySQL Cluster.
Mã:
yum -y install perl-Data-Dumper
yum -y remove mariadb-libs

C. Cài đặt MySQL Cluster​

Cài đặt máy chủ, máy khách và gói chia sẻ MySQL Cluster bằng các lệnh rpm bên dưới:
Mã:
cd ~
rpm -Uvh MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm

D. Cấu hình SQL Node​

Tạo một tệp my.cnf mới trong thư mục /etc:
Mã:
vi /etc/my.cnf
Và dán cấu hình bên dưới:
Mã:
[mysqld]
ndbcluster
ndb-connectstring=192.168.1.120 # Địa chỉ IP cho nút quản lý máy chủ
default_storage_engine=ndbcluster # Xác định Storage Engine mặc định được MySQL sử dụng

[mysql_cluster]
ndb-connectstring=192.168.1.120 # Địa chỉ IP cho nút quản lý máy chủ
Lưu tệp và thoát khỏi trình chỉnh sửa.

Khởi động SQL Node bằng cách khởi động máy chủ MySQL:
Mã:
service mysql start

E. Làm lại bước 3.A - 3.D trên máy chủ db5.​

Vui lòng làm lại các bước 3.A - 3.D trên máy chủ SQL thứ hai (db5).


Bước 4 - Giám sát Cụm​

Để xem trạng thái cụm, chúng ta phải đăng nhập vào nút quản lý db1.
Mã:
ssh [emailprotected]
Chúng ta có thể sử dụng lệnh thendb_mgm để xem trạng thái cụm:
Mã:
ndb_mgm
ndb_mgm> hiển thị


Một lệnh hữu ích khác là:
Mã:
ndb_mgm -e "all status"
ndb_mgm -e "all report memory"

Bước 5 - Kiểm tra Cluster​

Để thực hiện kiểm tra trên MySQL Cluster mới của chúng tôi, chúng tôi phải đăng nhập vào máy chủ SQL Nodes db4 hoặc db5.

Đăng nhập vào máy chủ db4:
Mã:
ssh [emailprotected]
Thay đổi mật khẩu MySQL mặc định được lưu trữ trong tệp ".mysql_secret" trong thư mục gốc:
Mã:
cd ~
cat .mysql_secret
đây là mẫu của tôi:
Mã:
# Mật khẩu ngẫu nhiên được đặt cho người dùng root vào Thứ Ba, ngày 22 tháng 3 19:44:07 2016 (giờ địa phương): qna3AwbJMuOnw23T
Bây giờ hãy thay đổi mật khẩu bằng lệnh bên dưới:
Mã:
mysql_secure_installation
Nhập mật khẩu mysql cũ của bạn rồi nhập mật khẩu mới, nhấn enter để xác nhận tất cả.

Nếu đã hoàn tất, bạn có thể đăng nhập vào shell MySQL bằng mật khẩu của mình:
Mã:
mysql -u root -p
Sau khi đăng nhập, hãy tạo một người dùng root mới với máy chủ "@", do đó chúng ta có thể truy cập MySQL từ bên ngoài.
Mã:
CREATE USER 'root'@'%' IDENTIFIED BY 'aqwe123';
Thay thế aqwe123 bằng mật khẩu an toàn của riêng bạn!Bây giờ bạn có thể thấy người dùng root mới với máy chủ "@" trên người dùng MySQL list:
Mã:
chọn người dùng, máy chủ, mật khẩu từ mysql.user;
Và cấp cho người dùng root mới quyền đọc và ghi từ nút từ xa:
Mã:
CẤP TẤT CẢ QUYỀN TRÊN *.* CHO 'root'@'%' ĐƯỢC XÁC ĐỊNH BẰNG MẬT KHẨU '*94CC7BF027327993D738E11...(MẬT KHẨU ĐƯỢC MÃ HÓA)' VỚI TÙY CHỌN CẤP;


Bây giờ hãy thử tạo một cơ sở dữ liệu mới từ máy chủ db4 và bạn cũng sẽ thấy cơ sở dữ liệu trên db5.

Đây chỉ là một kết quả mẫu để kiểm tra sao chép dữ liệu cụm.



Cụm MySQL đã được thiết lập thành công trên CentOS 7 với 5 nút máy chủ.


Kết luận​

Cụm MySQL là một công nghệ cung cấp Tính khả dụng cao và Dự phòng cho cơ sở dữ liệu MySQL. Nó sử dụng NDB hoặc NDBCLUSTER làm công cụ lưu trữ và cung cấp cụm không chia sẻ và phân mảnh tự động cho cơ sở dữ liệu MySQL. Để triển khai cụm, chúng ta cần 3 thành phần: Management Node (MGM), Data Node (NDB) và SQL Node (API). Mỗi nút phải có bộ nhớ và đĩa riêng. Không nên sử dụng lưu trữ mạng như NFS. Để cài đặt MySQL Cluster trên hệ thống CentOS 7 tối thiểu, chúng ta phải xóa gói mariadb-libs, mariadb-libs xung đột với MySQL-Cluster-server và bạn phải cài đặt gói perl-Data-Dumper, gói này cần thiết cho MySQL-Cluster-server. MySQL Cluster dễ cài đặt và cấu hình trên nhiều máy chủ CentOS.
 
Back
Bên trên