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.
Đảm bảo không có lỗi.
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.
Dán cấu hình bên dưới:
Lưu tệp và thoát.
Kết quả sẽ tương tự như sau:
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:
Bạn có thể thấy nút quản lý đã được khởi động với: mysql-6.6 và ndb-7.4.
Sau đó tải xuống gói MySQL Cluster và giải nén:
Đảm bảo không có lỗi.
Dán cấu hình bên dưới:
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".
Bây giờ hãy khởi động data node/ndbd:
kết quả:
Nút dữ liệu db2 đã kết nối tới nút quản lý ip 192.168.1.120.
Và tải xuống gói MySQL Cluster:
Và dán cấu hình bên dưới:
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:
Chúng ta có thể sử dụng lệnh thendb_mgm để xem trạng thái cụm:
Một lệnh hữu ích khác là:
Đăng nhập vào máy chủ db4:
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:
đây là mẫu của tôi:
Bây giờ hãy thay đổi mật khẩu bằng lệnh bên dưới:
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:
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.
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:
Và cấp cho người dùng root mới quyền đọc và ghi từ nút từ xa:
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ủ.
Để 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
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
Mã:
cd /var/lib/mysql-cluster
vi config.ini
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
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
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
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.- db2 = 192.168.1.121
- 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]
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
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
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
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
Mã:
ndbd
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:- db4 = 192.168.1.123
- 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]
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
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ủ
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]
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]
Mã:
cd ~
cat .mysql_secret
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
Mã:
mysql_secure_installation
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
Mã:
CREATE USER 'root'@'%' IDENTIFIED BY 'aqwe123';
Mã:
chọn người dùng, máy chủ, mật khẩu từ mysql.user;
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ủ.