1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

94 873 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề 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
Tác giả Trần Thị Giang
Người hướng dẫn TS. Nguyễn Hải Châu
Trường học Đại học Quốc gia Hà Nội Trường Đại học Công nghệ
Chuyên ngành Công nghệ thông tin
Thể loại Khóa luận tốt nghiệp
Năm xuất bản 2012
Thành phố Hà Nội
Định dạng
Số trang 94
Dung lượng 1,53 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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ù

Trang 1

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

Trang 2

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

Trang 3

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

Trang 4

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

Trang 5

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

Trang 6

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

Trang 7

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

Trang 8

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

Trang 9

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

Trang 10

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

Trang 11

DANH SÁCH CÁC BẢNG

Bảng 1: Cấu hình các máy 46Bả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 64Bả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

Trang 12

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

Trang 13

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

Trang 14

DANH SÁCH CÁC TỪ VIẾT TẮ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

Trang 15

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

15 Real Application Cluster

Trang 16

20 Subscriber Người mua

22 Transactional replication Nhân rộng giao dịch

30 transaction log Bản ghi giao dịch

Trang 17

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

Trang 18

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

Trang 19

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

Trang 20

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

Trang 21

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 Nielsen1 đã công bố 10 website được truy cập nhiều nhất vào năm 2011, trong đó, đứng đầu là Google2 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à Facebook3với 137,64 triệu người dùng; Apple4 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

Trang 22

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í

Trang 23

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

Trang 24

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

Trang 25

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

Trang 26

10

CHƯƠNG 2: CÁC GIẢI PHÁP CÂN BẰNG TẢI CHO CÁC HỆ QUẢN

TRỊ CSDL.

2.1 CÁC GIẢI PHÁP CÂN BẰNG TẢI CHO HỆ QUẢN TRỊ CSDL MYSQL

2.1.1 Giải pháp sử dụng Replication cơ sở dữ liệu với MySQL Proxy

Giải pháp này là mục tiêu nghiên cứu của khóa luận, chi tiết được trình bày trong chương 3 và chương 4

2.1.2 Giải pháp sử dụng Clustering [3]

Clustering là một kiến trúc nhằm đảm bảo nâng cao khả năng sẵn sàng cho các hệ thống mạng máy tính Clustering cho phép sử dụng nhiều máy chủ kết hợp với nhau tạo thành một cụm và có khả năng chịu được lỗi nhằm nâng cao độ sẵn sàng cho hệ thống

Nó có thể bao gồm nhiều máy chủ kết nối với nhau theo dạng song song hoặc phân tán, nếu một máy chủ ngừng hoạt động do bị sự cố hoặc để nâng cấp bảo trì thì luôn luôn có một bản sao dự phòng tương tự của máy chủ đó sẽ đảm nhiệm công việc giúp

MySQL Cluster là một công cụ lưu trữ dữ liệu dựa trên giải pháp clustering, được thiết kế cho khả năng chịu lỗi, dự phòng, khả năng sẵn sàng, khả năng mở rộng và hiệu suất cao Dữ liệu được lưu trữ và nhân rộng trên các nút dữ liệu riêng biệt, mỗi nút dữ liệu cài đặt trên một máy chủ và luôn luôn có chứa một bản sao dữ liệu giống hệt nó trong hệ thống Mỗi cụm chứa các nút quản lý, giúp quản lý, kiểm tra, giám sát toàn hệ thống Các phiên bản ban đầu của MySQL Cluster lưu trữ tất cả các thông tin trong bộ nhớ chính với khả năng lưu trữ không ổn định Nhưng các phiên bản sau này đã khắc phục được nhược điểm này của MySQL Cluster cho phép lưu trữ dữ liệu trên đĩa giúp MySQL Cluster có thể làm việc với lượng dữ liệu lưu trữ rất lớn, lớn hơn bộ nhớ chính của máy Sự quan trọng của MySQL Cluster còn ở khả năng sử dụng máy chủ MySQL như là một cộng cụ truy vấn để truy vấn đến cơ sở dữ liệu nằm trên các nút chứa dữ liệu

Vì thế, có thể di chuyển các ứng dụng thiết kế để tương tác với MySQL sang MySQL Cluster tốt Ngoài ra khái niệm nút ngang hàng cho phép một cập nhật được thực hiện trên một máy chủ sẽ được nhìn thấy ngay lập tức trên các máy chủ khác Và việc truyền tải các thay đổi sử dụng một cơ chế thông tin liên lạc tinh vi được thiết kế cho việc truyền thông qua mạng hiệu quả rất cao Mục đích của tất cả các việc đó là để MySQL Cluster đạt được một hiệu suất cao nhất có thể, để phân phối tải, và thỏa mãn khả năng sẵn sàng cao và tính dự phòng

Trang 27

11

Mô hình MySQL Cluster trong bài toán cân bằng tải Trên máy 192.168.1.50 sẽ cài đặt Load balancer mà cụ thể là các chương trình ldirectord và ipvsadm Chương trình ipvsadm có nhiệm vụ phân tải khi có yêu cầu truy vấn đến máy chủ cơ sở dữ liệu thì sẽ phân phối đều đến các máy chủ thành viên

để xử lý Chương trình ldirectord có nhiệm vụ giám sát và kiểm tra tín hiệu của các máy chủ cơ sở dữ liệu thành viên thông qua các truy vấn kiểm tra Trong trường hợp dịch vụ của một máy chủ cơ sở dữ liệu bị lỗi thì máy chủ đó sẽ bị loại ra khỏi danh sách và các truy vấn sẽ được dồn đến các máy chủ còn lại

Máy Load balancer sẽ tạo ra một dịa chỉ ip ảo 192.168.1.100 và các ứng dụng sẽ truy cập tới địa chỉ này, Load balancer sau đó sẽ tự động gửi yêu cầu của ứng dụng tới các MySQLD (192.168.1.70 và 192.168.1.80) thật MySQLD nhận truy vấn, xử lý và gửi lại kết quả cho ứng dụng

Trang 28

12

2.2 GIẢI PHÁP CÂN BẰNG TẢI CHO HỆ QUẢN TRỊ CSDL POSTGRESQL

PostgreSQL là hệ quản trị CSDL đối tượng - quan hệ mạnh mẽ và mã nguồn mở

Nó đã được phát triển 15 năm, và đã được chứng mình là hệ quản trị CSDL có độ bền mạnh, tính toàn vẹn dữ liệu và tính đúng đắn [11] PostgreSQL cũng đưa ra một số giải pháp cân bằng tải cho hệ thống:

2.2.1 Giải pháp sử dụng Replication cơ sở dữ liệu

Bốn phương pháp replication phổ biến trong hệ quản trị CSDL PostgreSQL đại diện cho bốn phương thức hoạt động của replication: multi-master đồng bộ, multi-master không đồng bộ, master to multi-salve không đồng bộ và statement-based middelware là:

a) PGCluster

PGCluster là hệ thống replication đồng bộ của các thành phần multi-master cho PostgreSQL PGCluster bao gồm ba kiểu server, một Load Balancer, Cluster DB và một Replication server

Hình 1: Mô hình PGCluster trong giải pháp cân bằng tải

Chức năng của PGCluster: PGCluster có hai chức năng chính:

Trang 29

13

- Chức năng cân bằng tải

 Các yêu cầu tham chiếu của client được Load Balancer phân phối đến các Cluster DB Nó hiệu quả với các ứng dụng Web với yêu cầu tham chiếu lớn

 Một đối tượng replication có thể được chỉ định cho mỗi bảng Khi các bảng nhận được một yêu cầu cập nhật và các yêu cầu tham chiếu là khác nhau, PGCluster có thể phân phối các bảng để nhận các yêu cầu cập nhật và có thể chỉ sao chép các bảng mà nhận yêu cầu tham chiếu

- Tính sẵn sàng cao

 Khi thất bại xảy ra trong cơ sở dữ liệu Cluster, Load Balancer và Replication server tách cơ sở dữ liệu bị lỗi từ hệ thống và tiếp tục dịch vụ với việc sử dụng các cơ sở dữ liệu còn lại

 Dữ liệu được sao chép tự động vào cơ sở dữ liệu phục hồi hoặc bổ sung từ

cơ sở dữ liệu khác Trong quá trình phục hồi, các truy vấn nhận được sẽ được thực thi từ Replication server [12]

b) Bucardo

Bucardo là một hệ thống replication không đồng bộ, cho phép cả hai phương pháp

multi-master và multi-slave Nó được phát triển ở Backcountry.com bởi Jon Jensen và

Greg Sabino Mullane của End Point Corporation, và hiện tại nó được sử dụng ở nhiều tổ thức khác nhau Bucardo là phần mềm mã nguồn mở và miễn phí [13]

Bucardo là không đồng bộ Thay vào đó, hy vọng rằng các nút thường xuyên liên lạc với nhau như hầu hết các giải pháp replication trong các hệ quản trị CSDL, Bucardo cho phép một master ngắt kết nối để thực hiện một số lượng công việc tùy ý và sau đó tái đồng bộ khi master kết nối lại với các server còn lại Điều này làm cho nó thích hợp với kịch bản mà cơ sở dữ liệu lưu trữ trên một hệ thống điện thoại di động Một máy tính xách tay có thể chạy các server cơ sở dữ liệu, trước khi bắt đầu chuyến đi, công việc đồng

bộ hóa được thực hiện, sau đó cập nhật theo cả hai hướng với tất cả các thay đổi được thực hiện khi quay trở lại văn phòng

Bucardo không phải là một giải pháp replication thích hợp cho hầu hết các yêu cầu chuyển đổi dự phòng và tính sẵn sàng cao Nhưng nó có thể phù hợp với việc phân chia

Trang 30

Hình 2: Mô hình của Slony-I trong cân bằng tải

Slony-I có những tính năng sau:

- Replication: Slony-I được trang bị với một hệ thống không đồng bộ, master có thể thực hiện truy vấn mà không đợi cho quá trình đồng bộ diễn ra ở slave, thậm chí đặt một slave ở một vị trí từ xa trong một mạng chậm, như mạng WAN, thì hiệu suất xử lý của master không hề giảm xuống Điều này rất hữu ích khi sử dụng replication cho các mục đích sao lưu

- Phân tầng: trong Slony-I có thể kết nối giữa slave với các slave khác Khi đó, một slave có thể vừa là một master của một số slave và vừa là một slave của một master khác Nếu chỉ có một master thì tải trọng trên master là rất lớn Giải pháp Slony-I với cơ chế phân tầng sẽ giảm tải cho master, làm tăng hiệu suất của master nói riêng và của toàn bộ hệ thống nói chung Tuy nhiên, khi dữ liệu được cập nhật, thông tin về dữ liệu đó phải thông qua nhiều server nên sự khác biệt về

cơ sở dữ liệu tại một số điểm trở nên lớn hơn

Trang 31

15

- Chuyển đổi dự phòng: là khả năng chuyển vai trò từ master sang slave Master cũ

có các hành vi tương đương như slave sau khi quá trình failover diễn ra Chức năng Switchover là rất hữu ích trong trường hợp khi master server bảo trì hay bị lỗi Do vậy, không làm gián đoạn các dịch vụ cung cấp cho client

- Cân bằng tải: Với tất cả các tính năng trên, thì Slony-I có một đặc tính quan trọng

là cân bằng tải Các truy vấn từ ứng dụng của client sẽ được phân phối đến các server: truy vấn ghi được gửi đến master và truy vấn đọc được gửi đến các slave

Do vậy, sự quá tải hệ thống là không còn và hiệu suất của hệ thống được nâng cao[14]

d) Pgpool-II

pgpool-II là một trung gian giữa PostgreSQL server và một PostgreSQL client

Hình 3: Mô hình pgpool-II trong cân bằng tải

pgpool-II cung cấp các tính năng sau:

- Kết nối Pooling: pgpool-II duy trì các kết nối đã được thiết lập đến PostgreSQL server, và sử dụng lại chúng bất cứ khi nào mà một kết nối mới với cùng một thuộc tính kết nối đến (ví dụ như cùng thuộc tính username, database, protocol version) Nó làm giảm chi phí kết nối và cải thiện thông lượng tổng thể của hệ thống

Trang 32

16

- Replication: pgpool-II có thể quản lý nhiều PostgreSQL server Kích hoạt tính năng replication làm cho nó có thể tạo ra một bản sao lưu thời gian thực trên hai hay nhiều hơn PostgreSQL cluster, để dịch vụ có thể tiếp tục mà không bị gián đoạn nếu một trong số các cluster bị lỗi

- Load Balancing: Khi một cơ sở dữ liệu được nhân rộng, thực hiện một truy vấn SELECT trên bất kỳ server nào cũng sẽ trả lại cùng một kết quả pgpool-II mang lại những lợi thế của tính năng replication để giảm tải trên mỗi PostgreSQL server Nó thực hiện điều đó bằng cách phân phối các truy vấn SELECT giữa các server có sẵn, do đó cải thiện hiệu suất tổng thể của hệ thống Trong một kịch bản lý tưởng, hiệu suất đọc có thể nâng cao tỉ lệ thuận với số lượng PostgreSQL server Cân bằng tải hoạt động tốt nhất trong một kịch bản mà có rất nhiều người dùng thực hiện nhiều truy vấn đọc cùng một lúc

- Hạn chế kết nối khi quá nhiều kết nối: có một giới hạn về số lượng tối đa các kết nối đồng thời tới PostgreSQL server, và các kết nối mới bị từ chối khi mà số lượng này đạt được Có thể nâng cao số lượng tối đa các kết nối này, tuy nhiên, điều này sẽ làm tăng tiêu thụ tài nguyên và có tác động tiêu cực đến hiệu suất tổng thể pgpool-II cũng có một giới hạn kết nối về số lượng tối đa các kết nối, nhưng các kết nối mới sẽ được thêm vào hàng đợi thay vì trả lại một lỗi ngay lập tức

- Truy vấn song song: sử dụng tính năng truy vấn song song, dữ liệu có thể được phân chia giữa nhiều server, do đó một truy vấn có thể được thực thi đồng thời trên tất cả các server, điều này làm giảm thời gian thực hiện tổng thể Truy vấn song song hoạt động tốt nhất khi tìm kiếm dữ liệu với quy mô lớn pgpool-II cho biết giao thức của PostgreSQL back-end và front-end và tiếp nhận các thông điệp giữa một back-end và một front-end Vì vậy, một ứng dụng cơ sở dữ liệu (front-end) nghĩ rằng pgpool-II là một PostgreSQL thật sự và server (back-end) nhìn pgpool-II như một trong số các client của mình Bởi vì pgpool-II là minh bạch cho cả server và client, một ứng dụng cơ sở dữ liệu hiện có có thể được sử dụng với pgpool-II mà gần như không có một sự thay đổi về mã nguồn của nó [15] Như vậy, pgpool-II không chỉ là một phương pháp replication của hệ quản trị CSDL PostgreSQL mà nó còn đóng vai trò là một Load Balancer

Trang 33

PL/Proxy được thiết kế để phân phối các cuộc gọi stored procedure Nó tự động

phân phối dự liệu và đảm bảo rằng một phần nhất định của dữ liệu kết thúc tại một nút nhất định Khi một yêu cầu đến, PL/Proxy sẽ tự động tìm các phân mảnh, nơi mà chứa dữ liệu cần cho yêu cầu từ client và nó sẽ lấy dữ liệu trả về cho client Thuật toán được

PL/Proxy sử dụng để tìm các phân mảnh là thuật toán Hàm băm, dựa trên hastext của

trường đang chia tách, cái mà cho phép chia tách công bằng giữa một vài các nút mà

không cần biết trước sự phân bố của dữ liệu Hastext cung cấp hàm nội bộ mà lấy bất kỳ

đầu vào là text và tạo ra đầu ra là một số nguyên như một mã băm Một ưu điểm chính là các ứng dụng không biết được dữ liệu thực sự đến từ đâu - điều này được xử lý bởi PL/Proxy – nó chỉ cần gọi một stored procedure và chờ đợi câu trả lời [5]

Hình 4: Giải pháp cân bằng tải hệ quản trị CSDL PostgreSQL với PL/Proxy

Trang 34

18

2.3 GIẢI PHÁP CÂN BẰNG TẢI CHO HỆ QUẢN TRỊ CSDL ORACLE

Oracle là một hệ quản trị CSDL đối tượng – quan hệ được cung cấp và phát triển bởi tập đoàn Oracle Đây là một hệ quản trị CSDL có tính an toàn, bảo mật cao, tính nhất quán và toàn vẹn dữ liệu, cho phép người dùng truy cập tới cơ sở dữ liệu phân tán như một khối thống nhất [16]

2.3.1 Giải pháp cân bằng tải phía client

Phương pháp cân bằng tải này có sẵn từ Oracle 8i Khi một phiên người dùng cố gắng để kết nối với cơ sở dữ liệu, cơ sở dữ liệu của người nghe sẽ chỉ định phiên ngẫu nhiên đến một trong số nhiều thiết bị đầu cuối được liệt kê để lắng nghe

Hình 5: Giải pháp cân bằng tải cho hệ quản trị CSDL Oracle phía client

Phương pháp cân bằng tải này dễ dàng được thực hiện, tuy nhiên nó cũng có một giới hạn rõ ràng: người lắng nghe không có ý tưởng nếu phiên người dùng không được giao cho một thiết bị đầu cuối tương ứng với cơ sở dữ liệu khi máy chủ đã quá tải Hơn nữa, khi người nghe chủ yếu được chọn các kết nối hoàn toàn ngẫu nhiên thì không có đảm bảo rằng kết nối đã chọn đang sẵn sàng ở thời điểm đó Điều này có thể buộc các phiên người dùng chờ đợi trong một thời gian tương đối dài – thậm chí là vài phút - cho

Trang 35

19

đến khi hệ điều hành chỉ ra cho người nghe rằng kết nối không sẵn sàng, làm cho phiên

người dùng thất bại với lỗi ORA-01034ORACLE not available[17]

2.3.2 Giải pháp cân bằng tải phía server

Do hạn chế của phương pháp trên nên rõ ràng, một giải pháp tốt hơn là cần thiết, và

từ Oracle 9i đã cung cấp một cân bằng tải phía server Phương pháp cân bằng tải phía này chia đều tải kết nối giữa tất cả các server có sẵn bằng cách xác định tổng số các kết nối trên mỗi server, và sau đó phân bố các yêu cầu kết nối phiên người dùng đến server có tải

ít nhất dựa trên tổng số phiên đã được kết nối [17]

Hình 6: Giải pháp cân bằng tải phía server cho hệ quản trị CSDL Oracle

2.3.3 Giải pháp Oracle Real Application Cluster

Oracle Real Application Cluster (RAC) cung cấp các tùy chọn cho các ứng dụng

mở rộng quy mô vượt quá khả năng của một server Điều này cho phép khách hàng tận dụng lợi thế của chi phí phần cứng thấp để giảm tổng chi phí sở hữu của họ và cung cấp môi trường có khả năng mở rộng tính toán mà hỗ trợ khối lượng công việc ứng dụng của

họ

Trang 36

cardinality tối thiểu (tức là số lƣợng nút mà trên đó các ứng dụng cần chạy ở tất cả các

lần) cho một hoặc nhiều ứng dụng quan trọng [18]

Hình 7: Giải pháp cân bằng tải cho hệ quản trị CSDL Oracle Real Application Cluster

Trang 37

21

2.4 GIẢI PHÁP CÂN BẰNG TẢI CHO HỆ QUẢN TRỊ CSDL SQL

Hệ quản trị CSDL SQL là một hệ quản trị CSDL quan hệ, được phát triển bởi tập đoàn Microsoft

2.4.1 Giải pháp sử dụng Replication cơ sở dữ liệu

a) Merge replication

Merge replication được thực hiện bởi SQL Server Snapshot Agent và Merge Agent Nếu publication (publication được định nghĩa trong một hoặc nhiều cơ sở dữ liệu trong Publisher, publication thiết lập các bảng, cột và các bộ lọc) không được lọc hoặc sử dụng

bộ lọc tĩnh, Snapshot Agent tạo ra một ảnh chụp duy nhất Nếu publication sử dụng bộ lọc tham số, Snapshot Agent tạo ra một ảnh chụp cho mỗi phân mảnh của dữ liệu Merge Agent áp dụng cho các ảnh chụp ban đầu đến các Subscriber Khi dữ liệu thay đổi và lược đồ được sửa đổi ở Publisher thì Subscriber được theo dõi với các thay đổi đó Subscriber đồng bộ với Publisher khi kết nối mạng và trao đổi tất cả những thay đổi giữa Publisher và Subcriber kể từ khi đồng bộ hóa xảy ra ở thời điểm gần nhất [19]

Merge replication thường được sử dụng trong môi trường server-client Merger replication thích hợp trong bất kỳ tình huống sau:

- Subscriber có thể có nhiều cập nhật cùng một dữ liệu ở các thời điểm khác nhau

và sau đó lan truyền những thay đổi đó đến Publisher và đến các Subscriber khác

- Subscriber cần để nhận dữ liệu, làm thay đổi ngoại tuyến, và sau đó đồng bộ các thay đổi với Publisher và các Subscriber khác

- Mỗi Subscriber yêu cầu các phân mảnh khác nhau của dữ liệu

- Xung đột có thể xảy ra, khi đó cần có khả năng phát hiện và giải quyết chúng

- Ứng dụng yêu cầu dữ liệu

Trang 38

22

Hình 8: Giải pháp Merge replication cân bằng tải cho hệ quản trị CSDL SQL

Đây là một loại cấu hình lý tưởng, kể từ khi Subscriber được truy vấn/cập nhật suốt

cả ngày, trong khi kho cung cấp thông tin có thể được cập nhật hàng trăm hoặc hàng ngìn lần trước khi một cập nhật được thông qua Publisher Một hệ thống như vậy sẽ giữ cho

độ trễ mạng ở mức tối thiểu cũng như giảm tải mạng cần thiết cho một hệ thống chức năng

b) Transactional replication

Transactional replication thường bắt đầu với một ảnh chụp của các đối tượng và dữ liệu từ publication Ngay sau khi ảnh chụp ban đầu được thực hiện, những thay đổi dữ liệu và sửa đổi biểu đồ được thực hiện tại Publisher sẽ thường xuyên được phân phối đến Subscriber khi chúng xảy ra (gần thời gian thực) Những thay đổi dữ liệu được áp dụng cho Subscriber trong cùng một thứ tự và trong phạm vi giao dịch giới hạn khi chúng xảy

ra ở Publisher; vì vậy, trong một publication, thống nhất giao dịch được đảm bảo

Transactional replication thường được sử dụng trong môi trường server-to-server và thích hợp trong mỗi trường hợp sau:

- Các thay đổi tăng nhanh cần được truyền đến Subcriber ngay khi chúng xảy ra

Trang 39

- Publisher có khối lượng các hoạt động insert, update và delete rất lớn

- Máy chủ cơ sở dữ liệu của Publisher hoặc Subscriber không phải là máy chủ cơ

sở dữ liệu SQL, chẳng hạn như Oracle

Mặc định, các Subscriber được coi là read-only, bởi vì các thay đổi không được truyền lại cho Publisher Transactional replication không cung cấp các tùy chọn cho phép cập nhật ở Subscriber

Transaction replication được thực hiện bởi SQL Server Snapshot Agent, Log Reader Agent và Distribution Agent Snapshot Agent chuẩn bị các file ảnh chụp bao gồm

sơ đồ và dữ liệu của các bảng published và các đối tượng cơ sở dữ liệu, lưu trữ các file

trong một thư mục ảnh chụp, và đồng bộ hóa các bản ghi trong cơ sở dữ liệu distributor

trên Distributor server

Log Reader Agent giám sát các transaction log của mỗi cơ sở dữ liệu được cấu hình

cho transaction replication và sao lưu các giao dịch được đánh dấu cho replication từ bản ghi transaction trong cơ sở dữ liệu distributor, đóng vai trò như một hàng đợi lưu trữ và chuyển tiếp Distribution Agent sao chép các file ảnh chụp ban đầu từ thư mục ảnh chụp

và các giao dịch lưu giữ trong các bảng của cơ sở dữ liệu distribution đến Subscriber Các thay đổi tăng lên sẽ tạo ra ở Publisher một luồng đến Subscriber theo lịch trình của Distribution Agent, cái mà có thể chạy liên tiếp cho độ trễ tối thiểu, hoặc trong khoảng thời gian theo lịch trình Bởi vì các thay đổi từ dữ liệu phải được tạo ra ở Publisher (khi transation replication được sử dụng mà không cập nhật ngay tức khắc hoặc tùy chọn cập nhật theo hàng đợi), tránh khỏi xung đột cập nhật Cuối cùng, tất cả Subscriber sẽ nhận được cùng một giá trị như Publisher Nếu cập nhật ngay tức khắc hoặc tùy chọn cập nhật theo hàng đợi được sử dụng với transaction replication, cập nhật

có thể được tạo ra ở Subscriber và với cập nhật theo hàng đợi thì xung đột có thể xảy ra

Trang 40

24

Các Subscriber sẽ trả lời các truy vấn chỉ đọc từ client gửi đến và Publisher sẽ chịu trách nhiệm trả lời các truy vấn ghi với các lệnh cập nhật dữ liệu nhƣ : CREATE, UPDATE, INSERT, DELETE, DROP,… Công việc phân phối các truy vấn đến các Subscriber và Publisher đƣợc giao cho một Load Balancer Load Balancer phải lọc ra các truy vấn chỉ đọc gửi đến Subsriber và các truy vấn còn lại gửi về Publisher Nếu có nhiều Subscriber thì Load Balancer sẽ sử dụng một thuật toán để phân tải đều cho các

Subscriber [20]

Hình 9: Giải pháp Transaction replication cân bằng tải cho hệ quản trị CSDL SQL

c) Log shipping

Ngày đăng: 27/08/2014, 12:04

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Võ Duy Pho, Cân bằng tải cho các hệ Webserver lớn và đảm bảo Scalability, Khóa luận tốt nghiệp, Đại học Bách Khoa Hà Nội, 2006 Sách, tạp chí
Tiêu đề: Cân bằng tải cho các hệ Webserver lớn và đảm bảo Scalability
[2] Đinh Thị Thu Dung, Nghiên cứu, xây dựng và phòng chống Botnet, Khóa luận tốt nghiệp, Đại học Công nghệ - Đại học Quốc gia Hà Nội, 2012 Sách, tạp chí
Tiêu đề: Nghiên cứu, xây dựng và phòng chống Botnet
[3] Đỗ Thanh An, Tìm hiểu MySQL Cluster và ứng dụng, Khóa luận tốt nghiệp, Đại học Công nghệ - Đại học Quốc gia Hà Nội, 2012 Sách, tạp chí
Tiêu đề: Tìm hiểu MySQL Cluster và ứng dụng
[5] Gregory Smith, PostgreSQL 9.0 High Performance, 2010, pp. 370-393 Sách, tạp chí
Tiêu đề: PostgreSQL 9.0 High Performance
[6] Sheeri Cabral, Keith Murphy, MySQL Administrator‟s Bible, Wiley Publishing, Inc., Indianapolis, Indiana, 2009, pp Sách, tạp chí
Tiêu đề: MySQL Administrator‟s Bible
[7] Charles Bell, Mats Kindahl, and Lars Thalmann, MySQL High Availability, 2010, O‟Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472, pp. 12-16Trang web Sách, tạp chí
Tiêu đề: MySQL High Availability
[4] Đinh Mạnh Tường, Cấu trúc dữ liệu và giải thuật, Khoa Công nghệ Thông tin, Đại học Công nghệ - Đại học Quốc gia Hà Nội, tr. 246-247Tiếng Anh Khác

HÌNH ẢNH LIÊN QUAN

Hình 1: Mô hình PGCluster trong giải pháp cân bằng tải - 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
Hình 1 Mô hình PGCluster trong giải pháp cân bằng tải (Trang 28)
Hình 2: Mô hình của Slony-I trong cân bằng tải - 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
Hình 2 Mô hình của Slony-I trong cân bằng tải (Trang 30)
Hình 3: Mô hình pgpool-II trong cân bằng tải - 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
Hình 3 Mô hình pgpool-II trong cân bằng tải (Trang 31)
Hình 4: Giải pháp cân bằng tải hệ quản trị CSDL PostgreSQL với PL/Proxy - 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
Hình 4 Giải pháp cân bằng tải hệ quản trị CSDL PostgreSQL với PL/Proxy (Trang 33)
Hình 5: Giải pháp cân bằng tải cho hệ quản trị CSDL Oracle phía client - 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
Hình 5 Giải pháp cân bằng tải cho hệ quản trị CSDL Oracle phía client (Trang 34)
Hình 6: Giải pháp cân bằng tải phía server cho hệ quản trị CSDL Oracle - 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
Hình 6 Giải pháp cân bằng tải phía server cho hệ quản trị CSDL Oracle (Trang 35)
Hình 7: Giải pháp cân bằng tải cho hệ quản trị CSDL Oracle Real Application Cluster - 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
Hình 7 Giải pháp cân bằng tải cho hệ quản trị CSDL Oracle Real Application Cluster (Trang 36)
Hình 8: Giải pháp Merge replication cân bằng tải cho hệ quản trị CSDL SQL - 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
Hình 8 Giải pháp Merge replication cân bằng tải cho hệ quản trị CSDL SQL (Trang 38)
Hình 9: Giải pháp Transaction replication cân bằng tải cho hệ quản trị CSDL SQL - 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
Hình 9 Giải pháp Transaction replication cân bằng tải cho hệ quản trị CSDL SQL (Trang 40)
Hình 10: Giải pháp Log shipping để cân bằng tải cho hệ quản trị CSDL SQL - 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
Hình 10 Giải pháp Log shipping để cân bằng tải cho hệ quản trị CSDL SQL (Trang 41)
Hình 11: Giải pháp Database Mirroring cân bằng tải cho hệ quản trị CSDL SQL - 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
Hình 11 Giải pháp Database Mirroring cân bằng tải cho hệ quản trị CSDL SQL (Trang 43)
Hình 12: Giải pháp Network load balancing cân bằng tải cho hệ quản trị CSDL SQL - 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
Hình 12 Giải pháp Network load balancing cân bằng tải cho hệ quản trị CSDL SQL (Trang 45)
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 - 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
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 (Trang 52)
Hình 15: Mô hình replication master – multi slave trong MySQL - 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
Hình 15 Mô hình replication master – multi slave trong MySQL (Trang 55)
Hình 14: Mô hình replication đơn giản master – slave trong MySQL - 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
Hình 14 Mô hình replication đơn giản master – slave trong MySQL (Trang 55)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w