Tải bản đầy đủ (.pdf) (94 trang)

NGHIÊN CỨU THỬ NGHIỆM GIẢI PHÁP CÂN BẰNG TẢI CHO HỆ QUẢN TRỊ CSDL MYSQL VỚI MYSQL PROXY

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.53 MB, 94 trang )


ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ



Trần Thị Giang


NGHIÊN CỨU THỬ NGHIỆM GIẢI PHÁP CÂN
BẰNG TẢI CHO HỆ QUẢN TRỊ CSDL MYSQL VỚI
MYSQL PROXY



KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC CHÍNH QUY
Ngành: Công nghệ Thông tin






HÀ NỘI – 2012

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ


Trần Thị Giang




NGHIÊN CỨU THỬ NGHIỆM GIẢI PHÁP CÂN
BẰNG TẢI CHO HỆ QUẢN TRỊ CSDL MYSQL VỚI
MYSQL PROXY


KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC CHÍNH QUY
Ngành: Công nghệ Thông tin

Cán bộ hƣớng dẫn: TS Nguyễn Hải Châu




HÀ NỘI – 2012

VIETNAM NATIONAL UNIVERSITY, HANOI
UNIVERSITY OF ENGINEERING AND TECHNOLOGY



Tran Thi Giang



RESEARCH INTO EXPERIMENT OF LOAD
BALANCING SOLUTION FOR MYSQL DATABASE
MANAGEMENT SYSTEM WITH MYSQL PROXY



Major: Information technology

Supervisor: Nguyen Hai Chau, PhD





HA NOI – 2012


LỜI CẢM ƠN
Lời đầu tiên, tôi xin gửi lời cảm ơn và lòng biết ơn sâu sắc nhất tới Tiến sĩ Nguyễn
Hải Châu, ngƣời đã tận tình hƣớng dẫn và chỉ bảo tôi trong suốt quá trình thực hiện khóa
luận tốt nghiệp.
Tôi chân thành cảm ơn các thầy, cô trong bộ môn Hệ thống thông tin đã tạo điều
kiện thuận lợi để tôi tiến hành thực nghiệm khóa luận của mình. Tôi cũng xin gửi lời cảm
ơn đến tất cả các thầy cô trong trƣờng Đại học Công nghệ đã cho tôi một môi trƣờng rất
tốt để học tập và nghiên cứu. Các thầy cô đã giảng dạy và cho tôi những kiến thức quý
báu, làm nền tảng để tôi hoàn thành khóa luận cũng nhƣ công việc trong tƣơng lai.
Tôi cũng xin gửi lời tri ân tới các bạn trong lớp K53CC và K53CLC đã luôn bên
cạnh, ủng hộ và giúp đỡ tôi trong suốt quá trình học tập tại trƣờng.
Cuối cùng, tôi muốn gửi lời cảm ơn vô hạn tới gia đình và bạn bè – những ngƣời
thân yêu luôn ở bên, khuyến khích và động viên tôi trong cuộc sống cũng nhƣ trong học
tập.
Tôi xin chân thành cảm ơn.
Hà nội, tháng 5 năm 2012
Sinh viên
Trần Thị Giang



NGHIÊN CỨU THỬ NGHIỆM GIẢI PHÁP CÂN BẰNG TẢI CHO HỆ QUẢN
TRỊ CSDL MYSQL VỚI MYSQL PROXY
Trần Thị Giang

Khóa QH-2008-I/CQ, ngành Công nghệ thông tin
Tóm tắt Khóa luận tốt nghiệp:
Sự bùng nổ của internet trong những năm gần đây khiến số lƣợng ngƣời dùng truy cập qua
internet đến các máy chủ cơ sở dữ liệu ngày càng tăng mạnh. Với hàng triệu lƣợt truy cập mỗi
ngày thì đòi hỏi hệ thống máy chủ cơ sở dữ liệu phải cực kỳ mạnh mẽ, nếu không máy chủ sẽ bị
quá tải. Một hệ thống máy chủ mạnh mẽ là hệ thống có khả năng đáp ứng đƣợc tất cả các truy
vấn của client trong khoảng thời gian nhanh nhất – hệ thống có khả năng cân bằng tải. Bên cạnh
khả năng cân bằng tải, thì hệ thống cũng cần có khả năng mở rộng và tính sẵn sàng cao. Ba yếu
tố này liên hệ mật thiết với nhau để đảm bảo hệ thống hoạt động ổn định. Nếu một hệ thống mà
không đáp ứng đƣợc một trong ba yêu cầu trên thì thảm họa có thể xảy ra bất cứ lúc nào. Điều
này gây ra một tổn thất vô cùng nặng nề cho doanh nghiệp. Do vậy, cân bằng tải, khả năng mở
rộng và tính sẵn sàng cao quyết định đến yếu tố sống còn của một doanh nghiệp.
Đã có rất nhiều giải pháp cân bằng tải đƣợc các nhà nghiên cứu đƣa ra cho các hệ quản trị
CSDL. Tuy nhiên nhiều giải pháp không giải quyết đƣợc đầy đủ cả ba yếu tố trên cho hệ thống
máy chủ. Vì vậy, khóa luận lựa chọn giải pháp sử dụng MySQL proxy để cân bằng tải cho các
máy chủ cơ sở dữ liệu MySQL. MySQL proxy nhận các truy vấn từ phía client, lọc ra các truy
vấn để gửi đến các máy chủ phù hợp dựa trên thuật toán cân bằng tải, sau đó nhận dữ liệu từ các
máy chủ để trả lại cho khách hàng. Không chỉ đáp ứng đƣợc yêu cầu cân bằng tải, giải pháp này
còn đáp ứng đƣợc nhu cầu mở rộng và đảm bảo tính sẵn sàng cao của hệ thống nhờ việc sử dụng
phƣơng pháp Replication cho MySQL.
Thực nghiệm đƣợc tiến hành với hai mô hình, một mô hình chỉ có hai máy chủ - mô hình
với một master và một slave, và một mô hình mở rộng hơn với ba máy chủ – mô hình một
master và hai slave. Kết quả thu đƣợc từ các tham số đánh giá tải và hiệu năng của server cho
thấy rằng, giải pháp đƣợc kiểm nghiệm là khả quan và áp dụng đƣợc trong thực tế.

Từ khóa: MySQL Proxy, cân bằng tải


RESEARCH INTO EXPERIMENT OF LOAD BALANCING SOLUTION
FOR MYSQL DATABASE MANAGEMENT SYSTEM WITH MYSQL PROXY
Tran Thi Giang

QH-2008-I/CQ course, Information Technology major
Abstract of thesis:
In recent years, the boost of internet cause the number of user who access to database
server through Internet increase rapidly. With millions of clients access every day, this require
server system powerfull, otherwise the system will be overload. A powerfull server system is
system can be satisfy all clients requests within the shortest possible time – the system is capable
of load balancing. In addition, the system also need scalability and high availability. These three
factors combine together closely to ensure stable system operation. If the system is lacks of one
factor, disater will happen any time. This cause an extremely heavy loss for businesses.
Therefore, load balancing, scalability and high availability factors determine survival of
businesses.
The researchers in over the world gave a lot of load balancing solutions for database
mannagement systems. However, there are some solutions do not satisfy fully three factors
above. So the thesis chooses a load balancing solution for MySQL database management system
that uses a load balancer, called MySQL Proxy. MySQL Proxy is a program that sits between
clients and MySQL servers. All of MySQL Proxy‟s activities based on the Lua scripting
language and Load Balancing Algorithms. It receives queries from clients, monitors, analyzes
them, passes them to the MySQL server and returns the responses from the MySQL Server to the
appropriate client. Not only load balancing, this solution also solves the scalability and high
availability problem base on the Replication MySQL method.
The experiment based on three models of Replication, the first model there is only one
MySQL server, the second model is the simple replication model (one master and one slave), and
last model is the master – multi slaves replication model (one master and two slaves). The load

parameters assessment and the performance of the servers show that the results is satisfactory
and this solution can apply in fact.
Keywords: MySQL Proxy, Load balancing


LỜI CAM ĐOAN
Tôi xin cam đoan giải pháp cân bằng tải hệ quản trị CSDL MySQL sử dụng
MySQL Proxy và thực nghiệm đƣợc trình bày trong khóa luận này là do tôi thực hiện
dƣới sự hƣớng dẫn và chỉ bảo của Tiến sĩ Nguyễn Hải Châu.
Tất cả các tài liệu tham khảo từ các nghiên cứu liên quan đều đƣợc nêu nguồn gốc
một cách rõ ràng từ danh mục Tài liệu tham khảo trong khóa luận. trong khóa luận,
không có việc sao chép tài liệu, công trình nghiên cứu của ngƣời khác mà không chỉ rõ về
tài liệu tham khảo
Hà nội, tháng 5 năm 2012
Sinh viên
Trần Thị Giang



MỤC LỤC
MỞ ĐẦU 1
CHƢƠNG 1: SỰ CẦN THIẾT CỦA VIỆC CÂN BẰNG TẢI TRUY VẤN ĐỌC CHO
HỆ QUẢN TRỊ CSDL MYSQL 3
1.1. CÁC KIỂU QUÁ TẢI MÁY CHỦ [8] 3
1.1.1. Số lƣợng truy cập hợp lệ đến máy chủ quá lớn 3
1.1.2. Máy chủ bị tấn công 3
1.1.3. Internet 4
1.2. SỰ CẦN THIẾT CỦA VIỆC CÂN BẰNG TẢI CHO CÁC HỆ QUẢN TRỊ
CSDL NÓI CHUNG VÀ MYSQL NÓI RIÊNG 5
1.2.1. Sự cần thiết của việc cân bằng tải cho các hệ quản trị nói chung 5

1.2.2. Sự cần thiết của việc cân bằng tải hệ quản trị CSDL MySQL với việc sử
dụng bộ cân bằng tải là MySQL Proxy 6
1.3. MỘT SỐ TIÊU CHÍ ĐÁNH GIÁ TẢI VÀ HIỆU NĂNG CỦA MÁY CHỦ 7
1.3.1. CPU Utilization 7
1.3.2. Memory usage 8
1.3.3. Thời gian phản hồi 8
1.4. XÁC ĐỊNH MỤC TIÊU NGHIÊN CỨU CỦA KHÓA LUẬN LÀ CÁC ỨNG
DỤNG QUÁ TẢI TRUY VẤN ĐỌC 8
CHƢƠNG 2: CÁC GIẢI PHÁP CÂN BẰNG TẢI CHO CÁC HỆ QUẢN TRỊ CSDL. . 10
2.1. CÁC GIẢI PHÁP CÂN BẰNG TẢI CHO HỆ QUẢN TRỊ CSDL MYSQL 10
2.1.1. Giải pháp sử dụng Replication cơ sở dữ liệu với MySQL Proxy 10
2.1.2. Giải pháp sử dụng Clustering [3] 10
2.2. GIẢI PHÁP CÂN BẰNG TẢI CHO HỆ QUẢN TRỊ CSDL POSTGRESQL 12
2.2.1. Giải pháp sử dụng Replication cơ sở dữ liệu 12

2.2.2. Giải pháp sử dụng Partitioning cơ sở dữ liệu - Cân bằng tải các truy vấn ghi
với PL/Proxy 17
2.3. GIẢI PHÁP CÂN BẰNG TẢI CHO HỆ QUẢN TRỊ CSDL ORACLE 18
2.3.1. Giải pháp cân bằng tải phía client 18
2.3.2. Giải pháp cân bằng tải phía server 19
2.3.3. Giải pháp Oracle Real Application Cluster 19
2.4. GIẢI PHÁP CÂN BẰNG TẢI CHO HỆ QUẢN TRỊ CSDL SQL 21
2.4.1. Giải pháp sử dụng Replication cơ sở dữ liệu 21
2.4.2. Giải pháp Database mirroring 26
2.4.3. Giải pháp Network Load Balancing 27
2.5. Các thuật toán cân bằng tải 29
2.5.1. Giải thuật thuật Roun-robin 29
2.5.2. Hàm băm 30
2.5.3. Giải thuật xác định tổng số kết nối nhỏ nhất 32
CHƢƠNG 3: BÀI TOÁN CÂN BẰNG TẢI READ CHO HỆ QUẢN TRỊ CSDL

MYSQL VỚI MYSQL PROXY. 33
3.1. GIỚI THIỆU VỀ MYSQL PROXY VÀ NGÔN NGỮ KỊCH BẢN LUA 33
3.1.1. Giới thiệu về mysql proxy 33
3.1.2. Giới thiệu về ngôn ngữ kịch bản Lua 34
3.1.3. Nguyên lý hoạt động của MySQL Proxy với ngôn ngữ kịch bản Lua [25] 35
3.2. GIỚI THIỆU VỀ GIẢI PHÁP REPLICATION TRONG HỆ QUẢN TRỊ CSDL
MYSQL 37
3.3. GIỚI THIỆU VỀ CÔNG CỤ MYSQLSLAP 42
3.4. PHÁT BIỂU BÀI TOÁN 43
3.5. MÔ HÌNH GIẢI QUYẾT BÀI TOÁN 44
3.4.1. Mô hình MySQL Proxy – một master – một slave 44

3.4.2. Mô hình MySQL Proxy – một master – multi slave 44
CHƢƠNG 4: THỰC NGHIỆM VÀ ĐÁNH GIÁ 46
4.1. MÔI TRƢỜNG THỰC NGHIỆM 46
4.2. TIẾN HÀNH THỰC NGHIỆM 46
4.2.1. Cài đặt MySQL Proxy 46
4.2.2. Cấu hình cho giải pháp replication trong hệ quản trị CSDL MySQL [7] 49
4.2.3. Kịch bản Lua 51
4.2.4. Thử nghiệm 53
4.3. PHÂN TÍCH, ĐÁNH GIÁ KẾT QUẢ THỰC NGHIỆM 55
4.3.1. Client gửi truy vấn trực tiếp đến máy chủ MySQL 55
4.3.2. Mô hình MySQL Proxy – một master – một slave 56
4.3.3. Mô hình MySQL Proxy – một master – hai slave 64
4.4. NHẬN XÉT 74
4.4.1. Khả năng chịu tải của server 74
4.4.2. Khả năng mở rộng 74
4.4.3. Tính sẵn sàng cao 75
KẾT LUẬN 76




DANH SÁCH CÁC BẢNG
Bảng 1: Cấu hình các máy 46
Bảng 2: Kết quả thời gian chạy các truy vấn trong mô hình chỉ có một MySQL server 56
Bảng 3: Kết quả thời gian chạy các truy vấn trong mô hình MySQL Proxy-master-slave
64
Bảng 4: Kết quả thời gian chạy các truy vấn trong mô hình MySQL Proxy-master-multi
slave 72


DANH SÁCH CÁC HÌNH VẼ

Hình 1: Mô hình PGCluster trong giải pháp cân bằng tải 12
Hình 2: Mô hình của Slony-I trong cân bằng tải 14
Hình 3: Mô hình pgpool-II trong cân bằng tải 15
Hình 4: Giải pháp cân bằng tải hệ quản trị CSDL PostgreSQL với PL/Proxy 17
Hình 5: Giải pháp cân bằng tải cho hệ quản trị CSDL Oracle phía client 18
Hình 6: Giải pháp cân bằng tải phía server cho hệ quản trị CSDL Oracle 19
Hình 7: Giải pháp cân bằng tải cho hệ quản trị CSDL Oracle Real Application Cluster . 20
Hình 8: Giải pháp Merge replication cân bằng tải cho hệ quản trị CSDL SQL 22
Hình 9: Giải pháp Transaction replication cân bằng tải cho hệ quản trị CSDL SQL 24
Hình 10: Giải pháp Log shipping để cân bằng tải cho hệ quản trị CSDL SQL 25
Hình 11: Giải pháp Database Mirroring cân bằng tải cho hệ quản trị CSDL SQL 27
Hình 12: Giải pháp Network load balancing cân bằng tải cho hệ quản trị CSDL SQL 29
Hình 13: Các thủ tục cần thực hiện khi client gửi một truy vấn đến server qua MySQL
Proxy 36
Hình 14: Mô hình replication đơn giản master – slave trong MySQL 39
Hình 15: Mô hình replication master – multi slave trong MySQL 39
Hình 16: Mô hình master – relay slave trong MySQL 40

Hình 17: Mô hình replication master – master trong MySQL 41

Hình 18: Mô hình master-slave replication với MySQL Proxy 44
Hình 19: Mô hình master – multi salve replication với MySQL Proxy 45
Hình 20: Hiệu năng của server trong mô hình chỉ có duy nhất MySQL server 56
Hình 21: Hiệu năng CPU của master 73
Hình 22: Hiệu năng về Processes 73
Hình 23: Hiệu năng trung bình tải 74



DANH SÁCH CÁC TỪ VIẾT TẮT

STT
Từ viết tắt
Từ tiếng anh
Từ Tiếng Việt
1
CPU
Central Processing Unit
Đơn vị xử lý trung tâm
2
RAM
Random Access Memory
Bộ nhớ truy cập ngẫu nhiên
3
RAC
Real Application Cluster
Cụm ứng dụng thực
4

CSDL
Database
Cơ sở dữ liệu



DANH SÁCH CÁC THUẬT NGỮ

STT
Thuật ngữ Tiếng Anh
Thuật ngữ Tiếng Việt
1
Load balance
Cân bằng tải
2
Load balancer
Bộ cân bằng tải
3
Replication
Nhân rộng
4
Database Server
Máy chủ cơ sở dữ liệu
5
Web server
Máy chủ web
6
Server
Máy chủ
7

Client
Khách hàng
8
Website
Trang web
9
CPU Utilization
Sử dụng CPU
10
Memory usage
Sử dụng bộ nhớ
11
Cluster
Cụm
12
failover
Chuyển đổi dự phòng
13
Partitioning
Phân mảnh
14
Stored procedure
Thủ tục lƣu trữ
15
Real Application Cluster

16
Merge replication
Nhân rộng hợp nhất
17

Snapshot Agent
Đại lý chụp ảnh
18
Merge Agent
Đại lý hợp nhất
19
Publication
Sự xuất bản

20
Subscriber
Ngƣời mua
21
Publisher
Nhà xuất bản
22
Transactional replication
Nhân rộng giao dịch
23
Distribution Agent
Đại lý phân phối
24
CREATE
Tạo
25
UPDATE
Cập nhật
26
INSERT
Chèn

27
DELETE / DROP
Xóa
28
SELECT
Chọn
29
Log Reader Agent

30
transaction log
Bản ghi giao dịch
31
Log shipping

32
primary server
Máy chủ chính
33
secondary server
Máy chủ thứ
34
monitor server
Máy chủ theo dõi
35
primary database
Cơ sở dữ liệu chính
36
secondary databases
Cơ sở dữ liệu thứ

37
Database mirroring
Cơ sở dữ liệu phản ánh
38
hot standby server
Máy chủ chờ nóng
39
Binary log
Bản ghi nhị phân
1

MỞ ĐẦU
Sự bùng nổ của internet trong những năm gần đây khiến số lƣợng ngƣời dùng truy
cập qua internet đến các máy chủ cơ sở dữ liệu ngày càng tăng mạnh. Với hàng triệu lƣợt
truy cập mỗi ngày thì đòi hỏi hệ thống máy chủ cơ sở dữ liệu phải cực kỳ mạnh mẽ, nếu
không máy chủ sẽ bị quá tải. Một hệ thống máy chủ mạnh mẽ là hệ thống có khả năng
đáp ứng đƣợc tất cả các truy vấn của client trong khoảng thời gian nhanh nhất – hệ thống
có khả năng cân bằng tải. Bên cạnh khả năng cân bằng tải, thì hệ thống cũng cần có khả
năng mở rộng và tính sẵn sàng cao. Ba yếu tố này liên hệ mật thiết với nhau để đảm bảo
hệ thống hoạt động ổn định. Nếu một hệ thống mà không đáp ứng đƣợc một trong ba yêu
cầu trên thì thảm họa có thể xảy ra bất cứ lúc nào. Điều này gây ra một tổn thất vô cùng
nặng nề cho doanh nghiệp. Do vậy, cân bằng tải, khả năng mở rộng và tính sẵn sàng cao
quyết định đến yếu tố sống còn của một doanh nghiệp.
Đã có rất nhiều phƣơng pháp cân bằng tải đƣợc đƣa ra cho các hệ quản trị CSDL.
Tuy nhiên nhiều phƣơng pháp không giải quyết đƣợc đầy đủ cả ba yếu tố trên cho hệ
thống máy chủ. Vì vậy, khóa luận đƣa ra phƣơng pháp sử dụng MySQL proxy để cân
bằng tải cho các máy chủ cơ sở dữ liệu MySQL. MySQL proxy không chỉ đáp ứng đƣợc
yêu cầu cân bằng tải mà còn đáp ứng đƣợc nhu cầu mở rộng và đảm bảo tính sẵn sàng
cao của hệ thống nhờ việc sử dụng phƣơng pháp Replication cho MySQL. Do vậy, ý
nghĩa thực tiễn của giải pháp này là rất lớn. Ngoài ra, nó còn có ý nghĩa trong việc nghiên

cứu và phát triển các giải pháp cân bằng tải tốt hơn khi số lƣợng ngƣời dùng truy cập
tăng lên rất nhiều. Do các truy cập đến máy chủ cơ sở dữ liệu chủ yếu là đọc dữ liệu, nên
khóa luận tập trung nghiên cứu về giải pháp cân bằng tải cho máy chủ cơ sở dữ liệu
MySQL sử dụng MySQL Proxy cho các truy vấn đọc.
Chƣơng 1: Trình bày về các nguyên nhân gây quá tải máy chủ, từ đó xác định tính
cần thiết của việc cân bằng tải cho các hệ quản trị CSDL nói chung và cho hệ quản trị
CSDL MySQL. Chƣơng 1 cũng giới thiệu về các tiêu chí đánh giá tải và hiệu năng của
máy chủ.
Chƣơng 2: Giới thiệu một số giải pháp cân bằng tải cho các hệ quản trị CSDL:
MySQL, PostgreSQL, Oracle và SQL. Trình bày một số thuật toán đƣợc sử dụng trong
các giải pháp cân bằng tải.
2

Chƣơng 3: Trình bày bài toán cân bằng tải cho hệ quản trị CSDL MySQL với Load
Balancer là MySQL Proxy. Chƣơng này tìm hiểu về giải pháp replication trong hệ quản
trị CSDL MySQL, nguyên lý hoạt động của MySQL Proxy, ngôn ngữ kịch bản Lua đƣợc
sử dụng để điều khiển các hành động của MySQL Proxy và công cụ mysqlslap để giả lập
các client, sinh truy vấn đến các máy chủ.
Chƣơng 4: Thực nghiệm và đánh giá. Tiến hành thực nghiệm cân bằng tải các truy
đọc cho các máy chủ với hai mô hình MySQL Proxy – một master – một slave và mô
hình MySQL Proxy – một master – multi slave. Công cụ đƣợc sử dụng để sinh ra các truy
vấn là mysqlslap.
Phần kết luận và hƣớng phát triển khóa luận: Tóm lƣợc những điểm chính của khóa
luận. Chỉ ra những điểm cần khắc phục, đồng thời đƣa ra hƣớng nghiên cứu trong thời
gian tiếp theo.

3

CHƢƠNG 1: SỰ CẦN THIẾT CỦA VIỆC CÂN BẰNG TẢI TRUY VẤN
ĐỌC CHO HỆ QUẢN TRỊ CSDL MYSQL

1.1. CÁC KIỂU QUÁ TẢI MÁY CHỦ [8]
1.1.1. Số lƣợng truy cập hợp lệ đến máy chủ quá lớn
Trong một khoảng thời gian ngắn có thể có đến hàng nghìn hoặc thậm chí là hành
triệu client kết nối đến server. Do vậy, nếu hệ thống server không mạnh thì việc quá tải
server là không thể tránh khỏi.
Những yêu cầu truy cập từ client đến server đƣợc phân chia thành hai loại:
- Truy vấn ghi: các client gửi yêu cầu ghi vào cơ sở dữ liệu của server. Các yêu cầu
ghi này là: CREATE (cơ sở dữ liệu, bảng, ), UPDATE (dữ liệu), INSERT (dữ liệu
vào bảng) và DELETE (hàng, trƣờng dữ liệu) hay DROP (bảng, cơ sở dữ liệu, )
- Truy vấn đọc: các client gửi yêu cầu đọc một hoặc nhiều đối tƣợng trong cơ sở dữ
liệu của server. Các yêu cầu đọc này là: SELECT.
Trong số các truy vấn từ client đến server thì phần lớn là các truy vấn đọc. Bởi vì
đối với các ứng dụng web thì ngƣời dùng thƣờng yêu cầu hiển thị dữ liệu nhiều hơn là
cập nhật dữ liệu.
Bên cạnh đó, nếu server đƣợc bảo dƣỡng, hoặc nâng cấp một phần cứng hay một
phần mềm bị thất bại thì một tài nguyên nào đó của server không có sẵn. Khi client kết
nối đến server và cần dùng tài nguyên này thì nó sẽ phải chờ và với một lƣợng truy cập
lớn server sẽ bị quá tải.
1.1.2. Máy chủ bị tấn công
a) Tấn công từ chối phân tán dịch vụ (Distributed Denial of Service attacks)
Một tấn công từ chối dịch vụ (DoS attack) hay tấn công từ chối phân tán dịch vụ
(DDoS attack) là một xâm phạm để làm cho một tài nguyên máy tính hoặc tài nguyên
mạng không có sẵn đối với ngƣời sử dụng.
Thủ phạm của cuộc tấn công DoS thƣờng nhằm đến mục tiêu là các website hoặc
các dịch vụ lƣu trữ trên web server cấu hình cao nhƣ ngân hàng, cổng thanh toán thẻ tín
dụng hay thậm chí là cả root namserver.
4

Một phƣơng pháp phổ biến của cuộc tấn công liên quan đến bão hòa server với các
yêu cầu thông tin liên lạc bên ngoài. Nó buộc server phải thiết lập lại hoặc tiêu thụ tài

nguyên của server để server không thể cung cấp dịch vụ dự định của mình, cản trở các
phƣơng tiện truyền thông giao tiếp giữa client với server. Do vậy, server không thể đáp
ứng đƣợc các truy vấn hợp lệ của client hoặc đáp ứng rất chậm. Các cuộc tấn công nhƣ
vậy thƣờng dẫn đến tình trạng quá tải của server.
b) Sâu máy tính (computer worms):
Một con sâu máy tính là một phần mềm dộc hại, một chƣơng trình độc hại mà nó
có thể tự tái tạo để lây lan ra các máy tính khác. Thông thƣờng, sâu máy tính sử dụng một
mạng lƣới máy tính để lây lan. Vì thế, mạng lƣới ấy bị nhiễm sâu và đƣợc kiểm soát bởi
tác giả sâu. Sâu máy tính gây ra sự gián đoạn lớn bằng cách làm tăng lƣu lƣợng mạng và
các hiệu ứng không mong muốn khác, nó còn có thể xóa các tập tin trên server.
c) Viruss XSS
Một virus máy tính là một chƣơng trình máy tính có thể tự tái tạo và lây lan từ một
máy tính khác. Virus có thể làm tăng nguy cơ lây lan sang máy tính khác bằng cách lây
nhiễm các tập tin trên một hệ thống tập tin mạng hoặc một hệ thống tập tin đƣợc truy cập
bởi các máy tính khác.
Virus XSS có thể gây ra lƣợng truy cập cao có thể đến hàng triệu truy cập trong một
khoảng thời gian rất ngắn, vì hàng triệu các trình duyệt bị nhiễm bệnh và/hoặc ngay cả
các server cũng bị nhiễm bệnh. Do vậy, nó gây ra tình trạng quá tải của server.
1.1.3. Internet
a) Internet bots
Internet bots (Botnet) còn đƣợc gọi là web robots, WWW robots hay đơn giản là
bots, là ứng dụng phần mềm tự động thực thi các nhiệm vụ trên mạng Internet. Thông
thƣờng Bot thực hiện các nhiệm vụ đơn giản đƣợc lập trình sẵn và có cấu trúc lặp đi lặp
lại với tốc độ cao hơn một ngƣời bình thƣờng.
Một Botnet đƣợc định nghĩa là một “mạng gồm rất nhiều máy tính bị xâm nhập và
có thể đƣợc kẻ tấn công điều khiển từ xa”. “Máy tính bị xâm nhập” là máy tính bị lây
nhiễm phần mềm độc hại (Bot). Nhƣ vậy, Botnet là tập hợp các Bot đƣợc sử dụng với
mục đích xấu. Botmaster là một ngƣời hoặc một nhóm ngƣời điều khiển Botnet.
5


Mục đích kiểm soát Botnets của tin tặc là một số hình thức hoạt động bất hợp pháp.
Những hoạt động này bao gồm, tấn công từ chối dịch vụ phân tán (DDoS), phát tán thƣ
giác (spamming), theo dõi lƣu lƣợng dữ liệu trên hệ thống mạng (sniffing network
traffic), theo dõi bàn phím (keylogging), phát tán mã độc (spreading malware), v.v [2]
Nếu lƣu lƣợng không đƣợc lọc hoặc giới hạn trên các web site lớn với rất ít tài
nguyên (nhƣ băng thông, v.v…) thì sẽ gây ra tình trạng quá tải cho server.
b) Mạng chậm
Khi mạng chậm thì các yêu cầu của khách hàng đƣợc phục vụ chậm hơn và số
lƣợng kết nối tăng lên rất nhiều vƣợt quá giới hạn server đạt đƣợc. Do vậy, nguy cơ máy
chủ bị quá tải là rất cao.
1.2. SỰ CẦN THIẾT CỦA VIỆC CÂN BẰNG TẢI CHO CÁC HỆ QUẢN TRỊ
CSDL NÓI CHUNG VÀ MYSQL NÓI RIÊNG
1.2.1. Sự cần thiết của việc cân bằng tải cho các hệ quản trị nói chung
Sự phát triển của internet khiến cho số lƣợng ngƣời dùng truy cập đến các web
server ngày càng tăng mạnh, đặc biệt là các mạng xã hội hoặc các website chia sẻ trực
tuyến. Các website này không chỉ cho phép ngƣời dùng trao đổi và chia sẻ thông tin, giao
lƣu và kết bạn mà còn cho phép ngƣời dùng lƣu trữ tài liệu với dung lƣợng khá lớn. Đầu
năm 2012, hãng nghiên cứu thị trƣờng Nielsen
1
đã công bố 10 website đƣợc truy cập
nhiều nhất vào năm 2011, trong đó, đứng đầu là Google
2
trung bình có khoảng 153,44
triệu ngƣời dùng Mỹ truy cập mỗi tháng; đứng thứ hai trên bảng xếp hạng là Facebook
3

với 137,64 triệu ngƣời dùng; Apple
4
là 61,6 triệu ngƣời dùng [9]. Với hàng triệu lƣợt truy
cập mỗi ngày đòi hỏi hệ thống máy chủ phải cực kỳ mạnh mẽ, nếu không máy chủ sẽ bị

quá tải. Một hệ thống hoạt động tốt khiến ngƣời dùng hài lòng, từ đó số lƣợng ngƣời
dùng ngày càng tăng lên, gây quá tải máy chủ, dẫn đến yêu cầu nâng cấp hệ thống. Cứ
nhƣ vậy, hệ thống đƣợc nâng cấp và ngƣời dùng ngày càng tăng. Vòng tuần hoàn này dẫn
đến nhu cầu phải xây dựng một hệ thống có khả năng đáp ứng đƣợc số lƣợng lớn ngƣời
dùng trong thời gian dài, và khi ngƣời dùng tăng lên thì có thể mở rộng hệ thống một
cách dễ dàng mà không ảnh hƣởng đến hoạt động của hệ [1].
Bên cạnh sự bùng nổ của các website chia sẻ trực tuyến, một số đơn vị nhƣ các
hãng hàng không, ngân hàng, các doanh nghiệp lớn thì mạng máy tính có thể ví nhƣ hệ
thần kinh điều khiển hoạt động của toàn doanh nghiệp và máy chủ là trái tím của mạng
6

máy tính. Sự ngƣng hoạt động của máy chủ làm tê liệt toàn bộ các hoạt động chính của
doanh nghiệp, và thiệt hại khó có thể lƣờng trƣớc đƣợc. Ngoài ra, nhƣ đã giới thiệu ở
trên, kẻ xấu lợi dụng khi các máy chủ của doanh nghiệp quá tải sẽ tấn công doanh nghiệp,
lấy đi những tài liệu quan trọng hay những khoản tiền lớn – ví dụ nhƣ trong ngân hàng.
Nếu điều này xảy ra thì tổn thất cho doanh nghiệp là rất lớn, có thể bị phá sản.
Với các tình trạng trên, nhu cầu cân bằng tải hệ thống máy chủ, đặc biệt là cân bằng
tải cho các máy chủ cơ sở dữ liệu là điều kiện tất yếu. Ngoài nhu cầu cân bằng tải, nhu
cầu mở rộng hệ thống và tính sẵn sàng cao của các máy chủ cũng rất cần thiết. Cân bằng
tải là khả năng chia tải cho các database server của hệ thống để đáp ứng đƣợc tất cả các
yêu cầu của ngƣời dùng một cách nhanh nhất, không bị bất kỳ một thời gian trễ nào. Khi
ngƣời dùng tăng và phạm vi ngƣời dùng mở rộng ra, do vậy hệ thống phải đƣợc triển
khai trên quy mô rộng lớn nhƣ trên một quốc gia hay toàn cầu. Với khả năng cân bằng tải
và khả năng mở rộng quy mô nhƣ vậy làm tính sẵn sàng của hệ thống cao hơn rất nhiều.
Khi một database server bị lỗi, thì một server khác thay thế server bị lỗi ngay tức khắc.
Ba yếu tố này liên hệ mật thiết với nhau, hỗ trợ nhau để đảm bảo hệ thống hoạt động tốt,
ổn định trong thời gian dài.
1.2.2. Sự cần thiết của việc cân bằng tải hệ quản trị CSDL MySQL với việc sử dụng
bộ cân bằng tải là MySQL Proxy
Hệ quản trị CSDL MySQL đã trở thành hệ quản trị CSDL mã nguồn mở phổ biến

nhất thế giới. Bởi vì MySQL có hiệu suất cao, độ tin cậy cao và dễ sử dụng. MySQL
chạy trên hơn 20 nền tảng bao gồm cả Linux, Windows, Mac OS, Solaris, IBM AIX, tạo
ra sự linh hoạt để kiểm soát. Bên cạnh đó, MySQL cung cấp một loạt các công cụ cơ sở
dữ liệu, hỗ trợ, đào tạo và các dịch vụ tƣ vấn để quản trị cơ sở dữ liệu thành công. Nó
cũng là hệ quản trị CSDL của sự lựa chọn cho một thế hệ ứng dụng mới đƣợc xây dụng
trên LAMP (Linux, Apache, MySQL / Perl / Python). Nhiều tổ chức lớn nhất thế giới và
phát triển nhanh nhất bao gồm Facebook, Google, Adobe, Alcatel Lucent, Youtube, và
Zappos đều dựa trên MySQL để tiết kiệm thời gian, tiền bạc và cung cấp năng lƣợng cao
cho các Website, các hệ thống kinh doanh quan trọng và các phần mềm đóng gói [9].
Cũng nhƣ các hệ quản trị CSDL khác, với sự phổ biến của mình, hệ quản trị CSDL
MySQL cần thiết phải đƣợc cân bằng tải. Ban đầu khi triển khai hệ thống Website các
doanh nghiệp, tổ chức thƣờng hay chọn giải pháp Webserver và Database Server trên
cùng một server. Giải pháp này giúp các doanh nghiệp tiết kiệm đƣợc khá nhiều chi phí
7

đầu tƣ thiết bị phần cứng, nhƣng sau thời gian đƣa vào vận hành thì server hiện tại không
thể đáp ứng đƣợc nhu cầu truy cập rất lớn của ngƣời dùng hoặc quá trình truy cập rất
chậm. Ngoài ra, khi server gặp sự cố thì tất cả các hoạt động của nó bị ngừng lại làm cho
các hoạt động của doanh nghiệp cũng bị ảnh hƣởng nghiêm trọng và có thể gây ra tổn
thất rất lớn đến uy tín và tài chính của doanh nghiệp.
Doanh nghiệp đã nghĩ đến giải pháp sao lƣu và phục hồi dữ liệu. Một phần hay
toàn bộ cơ sở dữ liệu của doanh nghiệp đƣợc sao lƣu, hay chỉ sao lƣu các thông tin biểu
diễn cấu trúc cơ sở dữ liệu nhƣ tạo cơ sở dữ liệu (CREAT DATABASE), tạo bảng
(CREAT TABLE) và nội dung của các câu lệnh làm thay đổi cơ sở dữ liệu nhƣ câu lệnh
INSERT. Nếu các sự kiện nhƣ nguồn điện, hỏng thiết bị có thể làm cho hỏng hoặc mất
dữ liệu, thì giải pháp này tránh đƣợc tình trạng đó bằng cách phục hồi dữ liệu đã đƣợc
sao lƣu. Tuy nhiên, giải pháp này chƣa giải quyết đƣợc vấn đề cân bằng tải cho server.
Hai giải pháp trên đều không khả thi khi thì giải pháp replication cơ sở dữ liệu với
bộ cân bằng tải MySQL Proxy đã đƣợc đƣa ra cho hệ quản trị CSDL MySQL. Giải pháp
này đang đƣợc các doanh nghiệp ƣu tiên hàng đầu vì nó giải quyết đƣợc các vấn đề mà

hai giải pháp trên chƣa làm đƣợc: cân bằng tải, khả năng mở rộng và tính sẵn sàng cao.
1.3. MỘT SỐ TIÊU CHÍ ĐÁNH GIÁ TẢI VÀ HIỆU NĂNG CỦA MÁY CHỦ
1.3.1. CPU Utilization
CPU – đơn vị xử lý trung tâm – đƣợc xem nhƣ là bộ não của máy tính, nó là tài
nguyên quan trọng nhất vì nó liên quan trực tiếp đến khả năng xử lý, tính toán của hệ
thống. Tốc độ xử lý của CPU thƣờng đƣợc tính theo số xung nhịp đồng hồ hoặc số lƣợng
phép tình cơ bản đƣợc thực hiện trong một giây. Đơn vị tốc độ đƣợc tính theo MHz (tần
số xung nhịp của đồng hồ trong một giây) hoặc MIPS (Million Instruction Per Second –
triệu phép tính cơ bản trong một giây).
CPU Utilization (hay còn đƣợc gọi là CPU usage) là tổng thời gian mà CPU đƣợc
sử dụng cho quá trình tính toán và xử lý một chƣơng trình máy tính. CPU Utilization là
một trong những yếu tố đánh giá hiệu năng của máy chủ. Nếu tỉ lệ phần trăm của CPU là
cao thì thời gian xử lý một chƣơng trình máy tính là lớn, những chƣơng trình khác muốn
thực thi thì phải chờ cho đến khi CPU đƣợc giải phóng, do vậy hiệu suất của máy chủ là
thấp. Nếu tỉ lệ phần trăm của CPU thấp, thì thời gian xử lý một chƣơng trình máy tính là
nhỏ, hiệu suất của máy tính là cao.
8

1.3.2. Memory usage
Memory – bộ nhớ - là một thành phần quan trọng của máy tính, đƣợc sử dụng để
lƣu trữ các chƣơng trình và dữ liệu trƣớc khi chƣơng trình đƣợc thi hành. Các đặc trƣng
cơ bản của bộ nhớ là thời gian truy cập dữ liệu và dung lƣợng bộ nhớ. Thời gian truy cập
là khoảng thời gian cần thiết kể từ khi phát tín hiệu điều khiển đọc/ghi đến khi việc
đọc/ghi hoàn thành. Tốc độ truy cập là một yếu tố quyết định đến tốc độ chung của máy
tính. Dung lƣợng bộ nhớ chỉ khối lƣợng dữ liệu mà bộ nhớ có thể lƣu trữ đồng thời.
Trong linux, yếu tố quan trọng trong việc xác định hiệu suất là dung lƣợng bộ nhớ sẵn có
trong RAM – bộ nhớ vật lý – và bộ nhớ ảo – SWAP space.
RAM – bộ nhớ truy cập ngẫu nhiên – là một loại bộ nhớ chính của máy tính để lƣu
trữ mã chƣơng trình và dữ liệu trong suốt thời gian thực thi, chúng sẽ bị xóa khi mất
nguồn điện. Đây là loại bộ nhớ có thể ghi và đọc dữ liệu và thời gian truy cập đến bất kỳ

ô nhớ nào cũng nhƣ nhau.
Bộ nhớ ảo là một không gian trong đĩa cứng, đƣợc sử dụng khi dung lƣợng của
RAM đã đầy. Bộ nhớ ảo là một kỹ thuật cho phép xử lý một chƣơng trình không đƣợc
nạp toàn bộ vào RAM. Trong RAM chỉ lƣu trữ các lệnh và dữ liệu phục vụ cho hoạt động
của chƣơng trình tại một thời điểm nhất định. Khi cần tới các lệnh hoặc dữ liệu mới hệ
thống sẽ nạp chúng vào bộ nhớ tại vị trí trƣớc đó bị chiếm giữ bởi các lệnh không dùng
vào thời điểm này. Các lệnh và dữ liệu không dùng đến đƣợc chuyển vào bộ nhớ ảo.
Thông số “free” trong RAM và “swap” trong bộ nhớ ảo cho biết dung lƣợng bộ nhớ
có sẵn trong là bao nhiêu, từ đó có thể đánh giá hiệu suất của máy chủ. Nếu dung lƣợng
bộ nhớ càng lớn thì hiệu suất của máy chủ càng cao và ngƣợc lại.
1.3.3. Thời gian phản hồi
Thời gian phản hồi các truy vấn của client gửi đến server chính là một yếu tố để
đánh giá tải và hiệu năng của máy chủ. Nếu thời gian phản hồi các truy vấn là thấp thì
hiệu suất của máy chủ cao, các truy vấn của client đƣợc đáp ứng nhanh mà không có sự
chậm chễ. Ngƣợc lại, nếu thời gian phản hồi các truy vấn là lớn thì hiệu suất của máy chủ
giảm, client sẽ phải đợi một thời gian lâu để có kết quả trà về từ máy chủ.
1.4. XÁC ĐỊNH MỤC TIÊU NGHIÊN CỨU CỦA KHÓA LUẬN LÀ CÁC ỨNG
DỤNG QUÁ TẢI TRUY VẤN ĐỌC
9

Trong hầu hết các ứng dụng web nhƣ các website báo điện tử (dantri,
vnexpress,…), website chia sẻ trực tuyến (Youtube,…) hay các mạng xã hội thì yêu cầu
truy vấn dữ liệu của ngƣời dùng chủ yếu là truy vấn đọc (đọc tin tức, xem video,…). Giả
sử các truy vấn đọc xảy ra hàng giây thì truy vấn ghi xảy ra hàng phút hoặc có thể là hàng
giờ. Vì thế, tần suất các truy vấn đọc xảy ra là lớn hơn rất nhiều so với các truy vấn ghi.
Do nhu cầu trên, nên khóa luận tập trung nghiên cứu và thử nghiệm giải pháp cân
bằng tải cho các truy vấn đọc.

×