Database Server MySQL Cluster

Tác giả server360, T.M.Một 21, 2013, 09:05:41 SÁNG

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Database Server MySQL Cluster

Xin giới thiệu với các bạn về cách thiết lập hệ thống MySQL Cluster .

Ưu điểm của MySQL Cluster.
- Tính sẵn sàng cao.
- Hiệu suất tải khi hoạt động.

Mô hình tối thiểu yêu cầu bao gồm 4 node:

1 . 1 x MySQL mgm – quản lý và đồng bộ các data node và sql node
2 . 2 x sQL node – chạy service mysql để nhận các query.
3 . 2 x Data node- chứa dữ liệu – database.

Số lượng Data node tối thiểu 2 node.

Về phần cứng và phần mềm yêu cầu tùy thuộc vào ứng dụng và số lượng truy vấn . Đối với cấu hình P4 3GHZ ram 1GB cho 1 Data node có thể đáp ứng truy cập cho khoảng 200 000 người online cùng lúc trên 1 forum.

Phần mềm:

MySql cluster có thể triển khai trên windows hoặc trên hệ thông *nix ( nix nói chung bao gồm các hệ thống thuần unix hoặc like unix như GNU/Linux )
Môi trường triển khai

- Windows
- Unix ( SunOS, AIX, *BSD )
- Linux ( HP linux, Linux nói chung như Fedora Core , RedHat Linux phiên bản cho doanh nghiệp, Debian, OpenSUSE hoặc các phiên bản tương tự sử dụng linux kernel)

Các cách cài đặt.

- Cài đặt từ gói biên dịch sẵn
- Cài đặt từ source code.

Một số hệ thống đã được các nhà phát triển đóng gói sẵn phiên bản mysql cluster . Tùy thuộc vào các hệ thống và các trình quản lý gói phần mềm khác nhau nên cách cài đặt khác nhau. Ở phần này tôi không đi sâu vào cài đặt từ gói đóng sẵn nên tôi sẽ không đề cập đến.

Ở trong mô hình này tôi lựa chọn sử dụng các biên dịch từ source code, hệ thống môi trường sử dụng OS FreeBSD , Phần cứng bao gồm 2 server sử dụng CPU intel xeon 2.6Ghz Ram 1GB – Rack 1U .Sử dụng công nghệ ảo hóa để tận dụng toàn bộ tài nguyên và hiệu suất còn dư khi sử dụng server chạy 1 process đơn lẻ.

Cách cài đặt từ source code.
Nguồn source :   Đăng nhập để xem liên kết
Link download:   Đăng nhập để xem liên kết

-Yêu cầu các lib và trình biên dịch như gcc,gmake,libtool, automake,autoconf...

Sau khi download file nén chứa source code có tên mysql-cluster-gpl-6.3.24.tar.gz từ mirror của mysql tại fpt-telecom. Ta tiến hành cài đặt. Mô hình bao gồm:
2 server chạy ảo hóa 6OS sẽ giúp tiết kiệm tài nguyên và nâng cao hiệu suất hoạt động.

Danh sách các node trong demo
Dải ip 10.1.11.0/24

MGM node : 10.1.11.56
SQL node : 10.1.11.57
4 Data Node : 10.1.11.58 – 61

Giả sử file source đặt tại thư mục /tmp ta tiến hành cài đặt như sau

Mã nguồn [Chọn]
$/tmp> su
Password: (ghõ password của root vào đây – pass sẽ không hiện ra)
root@/tmp# groupadd mysql
root@/tmp# useradd –c 'Mysql user' –g mysql –s /sbin/fail \ mysql
root@/tmp# tar –zxvf mysql-cluster-gpl-6.3.24.tar.gz

root@/tmp# cd mysql-cluster-gpl-6.3.24

root@/tmp/mysql-cluster-gpl-6.3.24#umask 022

root@/tmp/mysql-cluster-gpl-6.3.24#./configure\ prefix=/usr/local/mysql \
–with-plugins = all

root@/tmp/mysql-cluster-gpl-6.3.24#make ( hoặc gmake )

root@/tmp/mysql-cluster-gpl-6.3.24#make install


Lặp lại toàn bộ thao tác trên 5 server còn lại

Sau khi cài đặt mysql-cluster vào thư mục /usr/local/mysql ta tiến hành cấu hình mysql.

Đoạn cấu hình dành cho cả SQL node và Data Node

Mã nguồn [Chọn]
root@/tmp/mysql-cluster-gpl-6.3.24# cd
root@~# export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/libexec
root@~# cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
root@~# cat << EOF >> /etc/my.cnf

>#Option for mysqld process
>[mysqld]
>Ndbcluster
>Ndbcluster-connectstring=10.1.11.56
>#Option for ndbd process
>[mysql-cluster]
>Ndb-connectstring=10.1.11.56
>EOF

Đoạn cấu hình dành riêng cho SQL Node

Mã nguồn [Chọn]
root@~# mysql_install_db –-user=mysql
root@~# mysqld_safe –-user=mysql &
root@~# mysqladmin –u root password '123456'
root@~# mysql –u root –p
Enter password: ( nhập pass của user root có quyền đăng nhập vào mysql service )

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.32-ndb-7.0.5-log Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>


Hiện ra màn hình như trên là ta đã cài đặt thành công mysql server.
Với thao tác cấu hình như trên ta chỉ tiến hành cho SQL Node để chạy Service Mysql nhận các query từ client.

Đối với các server còn lại đảm nhiệm việc quản lý và chứa data node ta không cần thiết phải cài đặt và cấu hình cho service mysqld chạy trên các server đó.

Cấu hình MGM

Mã nguồn [Chọn]
> cd /usr/local/mysql
> mkdir –p var/lib/mysql-cluster
> mkdir –p data
> cp share/mysql/ndb-config-2-node.ini var/lib/mysql-cluster
> ee var/lib/mysql-cluster


Sửa nội dung cho phù hợp mô hình

Mã nguồn [Chọn]
# Example Ndbcluster storage engine config file.
#
[ndbd default]
NoOfReplicas= 2
MaxNoOfConcurrentOperations= 10000
DataMemory= 80M
IndexMemory= 24M
TimeBetweenWatchDogCheck= 30000
DataDir= /usr/local/mysql/data
MaxNoOfOrderedIndexes= 512

[ndb_mgmd default]
DataDir= /usr/local/mysql/data

[ndb_mgmd]
Id=1
HostName= 10.1.11.56

[ndbd]
Id=2
HostName= 10.1.11.58

[ndbd]
Id=3
HostName= 10.1.11.60

[ndbd]
Id=4
HostName= 10.1.11.59

[ndbd]
Id=5
HostName= 10.1.11.61

[mysqld]
Id=6
HostName= 10.1.11.57

# choose an unused port number
# in this configuration 63132, 63133, and 63134
# will be used
[tcp default]
PortNumber= 63132


Save file lại, sau đó khởi động NDB CLUSTER MGM

Mã nguồn [Chọn]
>ndb_mgmd –f var/lib/mysql-cluster/config.ini
2009-06-09 18:25:08 [MgmSrvr] INFO — NDB Cluster Management Server. mysql-5.1.32 ndb-7.0.5-beta
2009-06-09 18:25:08 [MgmSrvr] INFO — Loaded config from '/usr/local/mysql/mysql-cluster/ndb_1_config.bin.1′
>ps –aux|grep ndb|grep –v grep
root 27818 0.0 0.5 28896 5312 ?? Is Mon06PM 5:23.76 ./libexec/ndb_mgmd -f var/lib/mysql-cluster/confi
root 27821 0.0 0.5 8576 5092 ?? IsJ Mon06PM 0:00.00 ./libexec/ndbd
root 27822 0.0 7.5 394128 78084 ?? IJ Mon06PM 12:30.84 ./libexec/ndbd
root 27824 0.0 0.5 8576 5104 ?? IsJ Mon06PM 0:00.00 ./libexec/ndbd
root 27825 0.0 7.5 394128 77976 ?? IJ Mon06PM 10:16.44 ./libexec/ndbd


Như vậy là service ndb_mgmd đã chạy, kiểm tra kết nối bằng ndb_client

Mã nguồn [Chọn]
>ndb_mgm
– NDB Cluster — Management Client –
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
———————
[ndbd(NDB)] 4 node(s)
id=2 (not connected, accepting connect from 10.1.11.58)
id=3 (not connected, accepting connect from 10.1.11.60)
id=4 (not connected, accepting connect from 10.1.11.59)
id=5 (not connected, accepting connect from 10.1.11.61)

[ndb_mgmd(MGM)] 1 node(s)
id=1 @10.1.11.56 (mysql-5.1.32 ndb-7.0.5)

[mysqld(API)] 1 node(s)
id=6 (not connected, accepting connect from 10.1.11.57)

ndb_mgm>
ndb_mgm>quit


Khởi động kết nối đến MGM tại 4 Data node

Mã nguồn [Chọn]
> ndbd -c 10.1.11.56
2009-06-09 11:54:42 [ndbd] INFO — Configuration fetched from '10.1.11.56:1186′, generation: 1
>ps –aux|grep ndbd|grep –v grep
root 27821 0.0 0.5 8576 5092 ?? IsJ Mon11AM 0:00.00 ./libexec/ndbd
root 27822 0.0 7.5 394128 78084 ?? IJ Mon11AM 12:36.62 ./libexec/ndbd


Như vậy là service ndbd của Data node đã chạy

Kiểm tra kết nối tại NDBCLUSTER MGM

Mã nguồn [Chọn]
>ndb_mgm
ndb_mgm> show
Cluster Configuration
———————
[ndbd(NDB)] 4 node(s)
id=2 @10.1.11.58 (mysql-5.1.32 ndb-7.0.5, starting, Nodegroup: 0, Master)
id=3 @10.1.11.60 (mysql-5.1.32 ndb-7.0.5, starting, Nodegroup: 0)
id=4 @10.1.11.59 (mysql-5.1.32 ndb-7.0.5, starting, Nodegroup: 0)
id=5 @10.1.11.61 (mysql-5.1.32 ndb-7.0.5, starting, Nodegroup: 0)

[ndb_mgmd(MGM)] 1 node(s)
id=1 @10.1.11.56 (mysql-5.1.32 ndb-7.0.5)

[mysqld(API)] 1 node(s)
id=6 (not connected, accepting connect from 10.1.11.57)

ndb_mgm>


Các Data node đang tiến hành kết nối.

Mã nguồn [Chọn]
ndb_mgm> show
Cluster Configuration
———————
[ndbd(NDB)] 4 node(s)
id=2 @10.1.11.58 (mysql-5.1.32 ndb-7.0.5, Nodegroup: 0, Master)
id=3 @10.1.11.60 (mysql-5.1.32 ndb-7.0.5, Nodegroup: 0)
id=4 @10.1.11.59 (mysql-5.1.32 ndb-7.0.5, Nodegroup: 1)
id=5 @10.1.11.61 (mysql-5.1.32 ndb-7.0.5, Nodegroup: 1)

[ndb_mgmd(MGM)] 1 node(s)
id=1 @10.1.11.56 (mysql-5.1.32 ndb-7.0.5)

[mysqld(API)] 1 node(s)
id=6 @10.1.11.57 (mysql-5.1.32 ndb-7.0.5)

ndb_mgm>


Kết nối thành công.

Để sử dụng engine ndbcluster tất cả các table phải thay đổi engine từ MyISAM hay InoDB sang engine NDBCLUSTER. Thao tác này có thể sử dụng lệnh alter table.

Ví dụ đối với db fsoftweb làm như sau

Mã nguồn [Chọn]
Dump db cũ
> mysqldump –u root –p fsoftweb > /home/root/fsoftweb.sql
Password:
> mysql –u root –p
Password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.32-ndb-7.0.5-log Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> show databases;
mysql> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| mysql |
| test |
+——————–+
3 rows in set (0.00 sec)
mysql> create database fsoftweb;
Query OK, 1 row affected (0.10 sec)
Mysql> quit

Restored database
> mysql –u root –p fsoftweb
Password:
> mysql –u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.1.32-ndb-7.0.5-log Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| fsoftweb |
| mysql |
| test |
+——————–+
4 rows in set (0.00 sec)
mysql> use fsoftweb;
Database changed
mysql> show tables;
+——————–+
| Tables_in_fsoftweb |
+——————–+
| news |
| news_fr |
| news_jp |
| newsletter |
| newsletter_fr |
| newsletter_jp |
| user |
+——————–+
7 rows in set (0.01 sec)

mysql>
mysql> alter table news engine=ndbcluster;
Query OK, 337 rows affected (2.70 sec)
Records: 337 Duplicates: 0 Warnings: 0

mysql> alter table news_fr engine=ndbcluster;
Query OK, 1991 rows affected (4.37 sec)
Records: 1991 Duplicates: 0 Warnings: 0

mysql> alter table news_jp engine=ndbcluster;
Query OK, 207 rows affected (2.83 sec)
Records: 207 Duplicates: 0 Warnings: 0

mysql> alter table newsletter engine=ndbcluster;
Query OK, 24 rows affected (1.79 sec)
Records: 24 Duplicates: 0 Warnings: 0

mysql> alter table newsletter_fr engine=ndbcluster;
Query OK, 2 rows affected (2.09 sec)
Records: 2 Duplicates: 0 Warnings: 0

mysql> alter table newsletter_jp engine=ndbcluster;
Query OK, 16 rows affected (1.55 sec)
Records: 16 Duplicates: 0 Warnings: 0

mysql> alter table user engine=ndbcluster;
Query OK, 1 row affected (1.80 sec)
Records: 1 Duplicates: 0 Warnings: 0

mysql>select * from news\G;
............
*************************** 337. row ***************************
id: 65
title: November 11th, 2002: Buckingham Technology kicked off the Pilot Project with FPT-SOFT
content: November 11th, 2002 – Mr. Ron Lavery-Founder and EVP of Buckingham Technology arrived in FPT-Soft to start the pilot project under abc/Buckingham Technology Master Agreement signed in September this year. After the full week working tirelessly, abc development team had successfully demonstrated their capabilities to master the project\'s technology and requirement. In the last meeting at abc, Mr. Lavery spoke highly confidence on the abc development team.
postingdate: 0000-00-00
rate: 0
visible: Y
ishotnews: N
shortnews: NULL
imagepath: NULL
337 rows in set (0.20 sec)

ERROR:
No query specified


Như vậy là toàn bộ database đã được chuyển sang cluster.
Để kiểm tra ta có thể shutdown hệ thống cluster và thực hiện query như bình thường xem có lỗi xảy ra hay không ?

Mã nguồn [Chọn]
>ndb_mgm
ndb_mgm> show
Cluster Configuration
———————
[ndbd(NDB)] 4 node(s)
id=2 @10.1.11.58 (mysql-5.1.32 ndb-7.0.5, Nodegroup: 0, Master)
id=3 @10.1.11.60 (mysql-5.1.32 ndb-7.0.5, Nodegroup: 0)
id=4 @10.1.11.59 (mysql-5.1.32 ndb-7.0.5, Nodegroup: 1)
id=5 @10.1.11.61 (mysql-5.1.32 ndb-7.0.5, Nodegroup: 1)

[ndb_mgmd(MGM)] 1 node(s)
id=1 @10.1.11.56 (mysql-5.1.32 ndb-7.0.5)

[mysqld(API)] 1 node(s)
id=6 @10.1.11.57 (mysql-5.1.32 ndb-7.0.5)

ndb_mgm> shutdown
Connected to Management Server at: localhost:1186
Node 2: Cluster shutdown initiated
Node 3: Cluster shutdown initiated
Node 4: Cluster shutdown initiated
Node 5: Cluster shutdown initiated
Node 2: Node shutdown completed.
Node 4: Node shutdown completed.
Node 3: Node shutdown completed.
Node 5: Node shutdown completed.

4 NDB Cluster node(s) have shutdown.
Disconnecting to allow management server to shutdown.
ndb_mgm>
ndb_mgm> show
Unable to connect with connect string: nodeid=0,localhost:1186
Retrying every 5 seconds. Attempts left: 2

Như vậy là hệ thống cluster đã shutdown – hiện tại chỉ còn SQL node là đang chạy service mysqld – nhưng toàn bộ database không chứa trên SQL Node đó.
Để kiểm tra ta thực hiện truy vấn tại SQL Node

mysql> select * from news\G;
ERROR 1296 (HY000): Got error 157 'Unknown error code' from NDBCLUSTER
ERROR:
No query specified


Như vậy không có dữ liệu nào được trả về từ hệ thống cluster. Qua demo trên các bạn có thể xây dựng một hệ thống cluster hoàn chình cho nhu cầu của bạn.