Tư vấn bán hàng
Hà Nội
Hỗ trợ trực tuyến - Hà Nội
01 . Tư vấn bán hàng
Zalo 0916660041 Ms Dung
Zalo 0916660504 Mr Trung
Zalo 0916789025 Ms Hồng
02 . KH doanh nghiệp, dự án
Zalo 0912270988 Ms Hồng
Zalo 0888048966 Mr.Tuấn
Zalo 0917886988 Mr.Han
03 . Hỗ trợ kỹ thuật
Zalo 0916660502 Mr.Thành
Zalo 0916789025 CSKH
Chúng tôi luôn mang đến giá cả ưu đãi đặc biệt cho các doanh nghiệp, bao gồm cả doanh nghiệp nước ngoài đầu tư trực tiếp (FDI) và các chuỗi cửa hàng bán lẻ. Chúng tôi sẵn sàng hợp tác cùng bạn để tiến tới thành công ! Xem thêm chính sách bán hàng. Xin vui lòng liên hệ với chúng tôi!
VP Hà Nội: Số 41/117 Thái Hà, Phường Trung Liệt, Quận Đống Đa, Thành phố Hà Nội I Thời gian làm việc: Từ 8h-17h30 Thứ 2 đến Thứ 7 hàng tuần
Hồ Chí Minh
Hỗ trợ trực tuyến - Hồ Chí Minh
01 . Tư vấn bán hàng
Zalo 0941581166 Ms Vân
Zalo 0912270988 Mr.Hồng
Zalo 0916660042 Mr.Quốc Anh
02 . KH doanh nghiệp, dự án
Zalo 0912270988 Ms Hồng
Zalo 0917886988 Mr.Hán
03 . Hỗ trợ kỹ thuật
Zalo 0932144273 Mr.Lộc
Zalo 0916660502 CSKH
Chúng tôi luôn mang đến giá cả ưu đãi đặc biệt cho các doanh nghiệp, bao gồm cả doanh nghiệp nước ngoài đầu tư trực tiếp (FDI) và các chuỗi cửa hàng bán lẻ. Chúng tôi sẵn sàng hợp tác cùng bạn để tiến tới thành công ! Xem thêm chính sách bán hàng. Xin vui lòng liên hệ với chúng tôi!
VP HCM: Số 226 Nguyễn Phúc Nguyên Phường 9, Quận 3, Thành phố Hồ Chí Minh I Thời gian làm việc: Từ 8h-17h30 Thứ 2 đến Thứ 6 và sáng thứ 7
Nhu cầu doanh nghiệp khi triển khai các ứng dụng trên nền cơ sở dữ liệu MySQL cần đảm bảo cho hệ thống ổn định và khả năng chịu lỗi cao .Hôm nay chúng tôi giới thiệu cho các bạn giải pháp Cluster MySQL trong bộ bài viết về Loadbalcer Database MySQL
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 : MySQL :: MySQL Downloads
Link download: http://dev.mysql.com/get/Downloads/MySQL-Cluster-6.3/mysql-cluster-gpl-6.3.24.tar.gz/from/http://mirror-fpt-telecom.fpt.net/mysql/
-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
$/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
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
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
> 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
# 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
>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
>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
> 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
>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.
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
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 ?
>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.
Chúc các bạn thành công.