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 - Pdf 22


ĐẠ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



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

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

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
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

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

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

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

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

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ị

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à

ô 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.

Trích đoạn GIỚI THIỆU VỀ CÔNG CỤ MYSQLSLAP TIẾN HÀNH THỰC NGHIỆM PHÂN TÍCH, ĐÁNH GIÁ KẾT QUẢ THỰC NGHIỆM Mô hình MySQL Proxy – một master – hai slave Tính sẵn sàng cao
Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status