Cụm innodb mysql

Nhu cầu doanh nghiệp khi phát triển khai thác các ứng dụng trên nền tảng cơ sở dữ liệu MySQL cần đảm bảo 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 khả dụ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 nút.

1. 1 x MySQL mgm – quản lý và đồng bộ các nút dữ liệu và nút sql
2. 2 x nút sql – chạy dịch vụ mysql để nhận truy vấn.
3. 2 x Nút dữ liệu- chứa dữ liệu – cơ sở dữ liệu.

Số lượng Nút dữ liệu tối thiểu 2 nút.

Quay lại phần cứng và yêu cầu phần mềm 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 nút Dữ liệu có thể trả lời truy cập cho khoảng 200 000 người trực tuyến cùng lúc trên 1 diễn đàn.

Phần mềm.

Cụm MySql có thể phát triển khai thác trên windows hoặc trên hệ thống thông tin *nix [ nix said chung bao gồm các hệ thống thuần unix hoặc tương tự 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ừ mã nguồn.

Một số hệ thống đã được các nhà phát triển đóng gói sẵn phiên bản cụm mysql. Tùy thuộc vào các hệ thống và các gói 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ừ mã nguồn, hệ thống môi trường sử dụng OS FreeBSD , Phần cứng bao gồm 2 máy chủ sử dụng CPU intel xeon 2. Ram 6Ghz 1GB – Giá đỡ 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 máy chủ chạy 1 quy trình đơn lẻ.

Cách cài đặt từ mã nguồn.
Nguồn. mysql. Tải xuống MySQL
Liên kết tải xuống. http. // nhà phát triển. mysql. com/get/Tải xuống/MySQL-Cluster-6. 3/mysql-cluster-gpl-6. 3. 24. hắc ín. gz/từ/http. //gương-fpt-telecom. fpt. net/mysql/

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

Sau khi tải xuống tệp nén chứa mã nguồn . 3. 24. hắc ín. gz from mirror of mysql at fpt-telecom. Cài đặt tiến trình cài đặt. Bao gồm mô hình.
2 máy chủ chạy ảo hóa 6OS sẽ giúp tiết kiệm tài nguyên nhiên liệu và nâng cao hiệu quả hoạt động.

Danh sách các nút trong demo
Dải ip 10. 1. 11. 24/0

Nút MGM. 10. 1. 11. 56
Nút SQL. 10. 1. 11. 57
4 Nút dữ liệu. 10. 1. 11. 58 – 61

Giả sử nguồn tệp đặ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 . 3. 24. hắc ín. gz
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 máy chủ còn lại

Sau khi cài đặt, đặt mysql-cluster vào thư mục /usr/local/mysql ta .

Đoạn cấu hình dành cho cả nút SQL và nút dữ liệu

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/của tôi. cnf
root@~# mèo > /etc/my. cnf
>#Option for mysqld process
>[mysqld]
>Ndbcluster
> . 1. 11. 56
>#Option cho quy trình ndbd
>[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 ]

Chào mừng đến với màn hình MySQL. Các lệnh kết thúc bằng ; .
Id kết nối MySQL của bạn là 2
Phiên bản máy chủ. 5. 1. 32-ndb-7. 0. Phân phối nguồn 5 nhật ký

Nhập 'trợ giúp;' hoặc '\h' để được trợ giúp. Nhập '\ c' để xóa bộ đệm.

mysql>

Hiển thị màn hình như trên là ta đã cài đặt thành công máy chủ mysql.
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 truy vấn từ máy khách.

Đối với các máy chủ vẫn đảm bảo nhiệm vụ quản lý và chứa nút dữ liệu, ta không nhất thiết phải cài đặt và cấu hình cho dịch vụ mysqld chạy trên các máy chủ đó.

Cấu hình MGM
> cd /usr/local/mysql
> mkdir –p var/lib/mysql-cluster< . ini 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 với 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
Tên máy chủ= 10. 1. 11. 58

[ndbd]
Id=3
Tên máy chủ= 10. 1. 11. 60

[ndbd]
Id=4
Tên máy chủ= 10. 1. 11. 59

[ndbd]
Id=5
Tên máy chủ= 10. 1. 11. 61

[mysqld]
Id=6
Tên máy chủ= 10. 1. 11. 57

# chọn số cổng không sử dụng
# trong cấu hình này 63132, 63133 và 63134
# sẽ được sử dụng# . ini
[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] THÔNG TIN — Máy chủ quản lý cụm NDB. mysql-5. 1. 32 ndb-7. 0. 5-thử nghiệm
2009-06-09 18. 25. 08 [MgmSrvr] THÔNG TIN — Đã tải cấu hình từ ‘/usr/local/mysql/mysql-cluster/ndb_1_config. thùng rác. 1′
>ps –aux. grep ndb. grep –v grep
root 27818 0. 0 0. 5 28896 5312 ?? . 23. 76. /libexec/ndb_mgmd -f var/lib/mysql-cluster/confi
root 27821 0. 0 0. 5 8576 5092 ?? . 00. 00. /libexec/ndbd
root 27822 0. 0 7. 5 394128 78084?? . 30. 84. /libexec/ndbd
root 27824 0. 0 0. 5 8576 5104 ?? . 00. 00. /libexec/ndbd
root 27825 0. 0 7. 5 394128 77976?? . 16. 44. /libexec/ndbd

Như vậy là dịch vụ ndb_mgmd đã chạy, hãy kiểm tra kết nối bằng ndb_client
>ndb_mgm
– Cụm NDB . máy chủ cục bộ. 1186
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cấu hình cụm
———————
[ndbd[NDB]] 4 nút
id=2 [not connected, accepting connect from 10.1.11.58]
id=3 [chưa kết nối, chấp nhận kết nối từ 10. 1. 11. 60]
id=4 [chưa kết nối, chấp nhận kết nối từ 10. 1. 11. 59]
id=5 [chưa kết nối, chấp nhận kết nối từ 10. 1. 11. 61]

[ndb_mgmd[MGM]] 1 nút
id=1 @10. 1. 11. 56 [mysql-5. 1. 32 ndb-7. 0. 5]

[mysqld[API]] 1 nút
id=6 [không được kết nối, chấp nhận kết nối từ 10. 1. 11. 57]

ndb_mgm>
ndb_mgm>quit

Khởi động kết nối với MGM tại nút dữ liệu 4

> ndbd -c 10.1.11.56
2009-06-09 11. 54. 42 [ndbd] THÔNG TIN — Cấu hình được tìm nạp từ '10. 1. 11. 56. 1186′, thế hệ. 1
>ps –aux. grep ndbd. grep –v grep
root 27821 0. 0 0. 5 8576 5092 ?? . 00. 00. /libexec/ndbd
root 27822 0. 0 7. 5 394128 78084?? . 36. 62. /libexec/ndbd
Như vậy là dịch vụ ndbd của Data node đã chạy

Kiểm tra kết nối tại NDBCLUSTER MGM
>ndb_mgm . 1. 11. 58 [mysql-5. 1. 32 ndb-7. 0. 5, bắt đầu, Nodegroup. 0, Chính]
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, bắt đầu, Nodegroup. 0]
id=4 @10. 1. 11. 59 [mysql-5. 1. 32 ndb-7. 0. 5, bắt đầu, Nodegroup. 0]
id=5 @10. 1. 11. 61 [mysql-5. 1. 32 ndb-7. 0. 5, bắt đầu, Nodegroup. 0]

[ndb_mgmd[MGM]] 1 nút
id=1 @10. 1. 11. 56 [mysql-5. 1. 32 ndb-7. 0. 5]

[mysqld[API]] 1 nút
id=6 [không được kết nối, chấp nhận kết nối từ 10. 1. 11. 57]

ndb_mgm>

Các nút dữ liệu đang tiến hành kết nối.

ndb_mgm> hiển thị
Cấu hình cụm
———————
[ndbd . 1. 11. 58 [mysql-5. 1. 32 ndb-7. 0. 5, Nhóm nút. 0, Chính]
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, Nhóm nút. 0]
id=4 @10. 1. 11. 59 [mysql-5. 1. 32 ndb-7. 0. 5, Nhóm nút. 1]
id=5 @10. 1. 11. 61 [mysql-5. 1. 32 ndb-7. 0. 5, Nhóm nút. 1]

[ndb_mgmd[MGM]] 1 nút
id=1 @10. 1. 11. 56 [mysql-5. 1. 32 ndb-7. 0. 5]

[mysqld[API]] 1 nút
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 bảng phải thay đổi engine từ MyISAM hoặc InoDB sang engine NDBCLUSTER. Thao tác này có thể sử dụng bảng thay đổi lệnh.

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

Dump db cũ
> mysqldump –u root –p fsoftweb > /home . sql
Mật khẩu.
> mysql –u root –p
Mật khẩu.
Chào mừng bạn đến với màn hình MySQL. Các lệnh kết thúc bằng ; .
Id kết nối MySQL của bạn là 2
Phiên bản máy chủ. 5. 1. 32-ndb-7. 0. Phân phối nguồn 5 nhật ký

Nhập 'trợ giúp;' hoặc '\h' để được trợ giúp. Nhập '\ c' để xóa bộ đệm.

mysql> hiển thị cơ sở dữ liệu;
mysql> hiển thị cơ sở dữ liệu;
+——————–+
| Database |
+——————––+
. thông tin_lược đồ.
. mysql.
. kiểm tra.
+——————––+
3 hàng trong tập hợp [0. 00 giây]
mysql> tạo cơ sở dữ liệu fsoftweb;
Truy vấn OK, 1 hàng bị ảnh hưởng [0. 10 giây]
Mysql> thoát

Cơ sở dữ liệu đã khôi phục
> mysql –u root –p fsoftweb
Password:
> mysql –u root -p
Nhập mật khẩu.
Chào mừng bạn đến với màn hình MySQL. Các lệnh kết thúc bằng ; .
Id kết nối MySQL của bạn là 3
Phiên bản máy chủ. 5. 1. 32-ndb-7. 0. Phân phối nguồn 5 nhật ký

Nhập 'trợ giúp;' hoặc '\h' để được trợ giúp. Nhập '\ c' để xóa bộ đệm.

mysql>hiển thị cơ sở dữ liệu;
+——————–+
. cơ sở dữ liệu.
+——————–+
. thông tin_lược đồ.
. fsoftweb.
. mysql.
. kiểm tra.
+——————––+
4 hàng trong tập hợp [0. 00 giây]
mysql> sử dụng fsoftweb;
Cơ sở dữ liệu đã thay đổi
mysql> hiển thị bảng;
< . 1. 11. 58 [mysql-5. 1. 32 ndb-7. 0. 5, Nhóm nút. 0, Chính]
| Tables_in_fsoftweb |
+——————–+
. Tin tức.
. tin tức_fr.
. tin tức_jp.
. bản tin.
. bản tin_fr.
. bản tin_jp.
. người dùng.
+——————––+
7 hàng trong tập hợp [0. 01 giây]

mysql>
mysql> alter table news engine=ndbcluster;
Truy vấn OK, 337 hàng bị ảnh hưởng [2. 70 giây]
Bản ghi. 337 bản sao. 0 cảnh báo. 0

mysql> alter table news_fr engine=ndbcluster;
Truy vấn OK, 1991 hàng bị ảnh hưởng [4. 37 giây]
Bản ghi. Bản sao năm 1991. 0 cảnh báo. 0

mysql> alter table news_jp engine=ndbcluster;
Truy vấn OK, 207 hàng bị ảnh hưởng [2. 83 giây]
Bản ghi. 207 bản sao. 0 cảnh báo. 0

mysql> alter table newsletter engine=ndbcluster;
Truy vấn OK, 24 hàng bị ảnh hưởng [1. 79 giây]
Bản ghi. 24 bản sao. 0 cảnh báo. 0

mysql> alter table newsletter_fr engine=ndbcluster;
Truy vấn OK, 2 hàng bị ảnh hưởng [2. 09 giây]
Bản ghi. 2 bản sao. 0 cảnh báo. 0

mysql> alter table newsletter_jp engine=ndbcluster;
Truy vấn OK, 16 hàng bị ảnh hưởng [1. 55 giây]
Bản ghi. 16 bản sao. 0 cảnh báo. 0

mysql> alter table user engine=ndbcluster;
Truy vấn OK, 1 hàng bị ảnh hưởng [1. 80 giây]
Bản ghi. 1 bản sao. 0 cảnh báo. 0

mysql>select * from news\G;
…………
********* . hàng ***************************
id. 65
tiêu đề. Ngày 11 tháng 11 năm 2002. Buckingham Technology khởi động Dự án thí điểm với nội dung FPT-SOFT
. Ngày 11 tháng 11 năm 2002 – Ông. Ron Lavery-Founder và EVP of Buckingham Technology đã đến FPT-Soft để bắt đầu dự án thử nghiệm theo Thỏa thuận Tổng thể Công nghệ abc/Buckingham được ký vào tháng 9 năm nay. Sau cả tuần làm việc không biết mệt mỏi, đội ngũ phát triển abc đã thể hiện thành công khả năng làm chủ công nghệ và yêu cầu của dự án. Trong cuộc họp cuối cùng tại abc, ông. Lavery nói rất tin tưởng vào nhóm phát triển abc.
ngày đăng. 0000-00-00
tỷ lệ. 0
hiển thị. Y
ishotnews. N
tin ngắn. NULL
đường dẫn hình ảnh. NULL
337 hàng trong tập hợp [0. 20 giây]

LỖI.
Không có truy vấn nào được chỉ định

Như vậy là toàn bộ cơ sở dữ liệu đã được chuyển sang cụm.
Để kiểm tra ta có thể tắt cụm hệ thống và thực hiện truy vấn như bình thường xem có xảy ra lỗi 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, Nhóm nút. 0]
id=4 @10. 1. 11. 59 [mysql-5. 1. 32 ndb-7. 0. 5, Nhóm nút. 1]
id=5 @10. 1. 11. 61 [mysql-5. 1. 32 ndb-7. 0. 5, Nhóm nút. 1]

[ndb_mgmd[MGM]] 1 nút
id=1 @10. 1. 11. 56 [mysql-5. 1. 32 ndb-7. 0. 5]

[mysqld[API]] 1 nút
id=6 @10. 1. 11. 57 [mysql-5. 1. 32 ndb-7. 0. 5]

ndb_mgm> tắt máy
Đã kết nối với Máy chủ quản lý tại. máy chủ cục bộ. 1186
Nút 2. Đã bắt đầu tắt cụm
Nút 3. Đã bắt đầu tắt cụm
Nút 4. Đã bắt đầu tắt cụm
Nút 5. Đã bắt đầu tắt cụm
Nút 2. Đã hoàn tất tắt nút.
Nút 4. Đã hoàn tất tắt nút.
Nút 3. Đã hoàn tất tắt nút.
Nút 5. Đã hoàn tất tắt nút.
4 Nút cụm NDB đã tắt.
Đang ngắt kết nối để cho phép tắt máy chủ quản lý.
ndb_mgm>
ndb_mgm> show
Không thể kết nối với chuỗi kết nối. nút = 0, máy chủ cục bộ. 1186
Thử lại sau mỗi 5 giây. Nỗ lực còn lại. 2

Như vậy là cụm hệ thống đã tắt – hiện tại chỉ còn nút SQL đang chạy dịch vụ mysqld – nhưng toàn bộ cơ sở dữ liệu không chứa trên Nút SQL đó.
Để kiểm tra việc thực hiện truy vấn tại SQL Node

mysql> select * from news\G;
ERROR 1296 [ . Gặp lỗi 157 ‘Mã lỗi không xác định’ từ NDBCLUSTER
ERROR.
Không có truy vấn nào được chỉ định

Như vậy không có dữ liệu nào được trả về từ cụm hệ thống.

Qua bản demo trên các bạn có thể xây dựng một cụm hệ thống hoàn chỉnh cho nhu cầu của bạn.

Chúc các bạn thành công.

 

Chủ Đề