Khi master bị lỗi không thể tiếp tục hoạt động hoặc master đƣợc bảo trì và nâng cấp thì một slave có thể đảm nhiệm vai trò của master trong thời gian master vắng mặt. Để làm đƣợc điều này, thì đơn giản chỉ cần thay đổi trong câu lệnh của MySQL Proxy:
Cấu hình cũ khi master vẫn hoạt động:
--proxy-backend-addresses = master-host:port
--proxy-read-only-backend-addresses = slave1-host:port --proxy-read-only-backend-addresses = slave2-host:port
Khi master ngừng hoạt động, giả sử dùng slave1 để thay thế vị trí của master:
--proxy-backend-addresses = slave1-host:port
--proxy-read-only-backend-addresses = slave2-host:port
Sau khi master đƣợc phục hồi, thì dựa vào file Binary log của slave1, master có thể biết đƣợc sự thay đổi đã diễn ra trong cơ sở dữ liệu của mình, từ đó, nó đồng bộ dữ liệu với slave1 mà đã thay thế nó. Lúc này cấu hình trong MySQL Proxy lại quay về nhƣ cũ.
Do vậy, các server của hệ thống luôn sẵn sàng hoạt động, luôn sẵn sàng đáp ứng đƣợc tất cả các truy vấn của client, không xảy ra một sự chậm chễ nào.
76
KẾT LUẬN
Khóa luận đã tập trung nghiên cứu bài toán cân bằng tải cho hệ quản trị CSDL MySQL với MySQL Proxy trong hai mô hình: mô hình MySQL Proxy – master – slave và mô hình MySQL Proxy – master – multi slave.
Về mặt nội dung, khóa luận đã đạt đƣợc những kết quả sau:
Tìm hiểu và phân tích các bài toán cân bằng tải cho các hệ quản trị CSDL MySQL, PostgreSQL, Oracle và SQL.
Tìm hiểu về các tiêu chí đánh giá tải và hiệu năng của máy chủ.
Tìm hiểu về giải pháp replication trong hệ quản trị CSDL MySQL, tìm hiểu về MySQL Proxy, các giải thuật trong bài toán cân bằng tải, nguyên lý hoạt động MySQL Proxy nhờ ngôn ngữ kịch bản Lua. Từ đó, lựa chọn hai mô hình MySQL Proxy – master – slave và MySQL Proxy – master – multi slave để giải quyết bài toán cân bằng tải các truy vấn đọc, đánh giá tải và hiệu năng của MySQL server trong mỗi mô hình.
Do hạn chế về mặt thời gian, kiến thức, số lƣợng và cấu hình của máy tính để thực nghiệm nên khóa luận vẫn còn những điểm hạn chế sau:
Chỉ dừng lại ở bài toán cân bằng tải các truy vấn đọc cho hệ quản trị CSDL MySQL.
Chƣa thử nghiệm đƣợc với số lƣợng client truy cập lớn và số lƣợng các MySQL server chƣa đủ lớn.
Giải pháp cân bằng tải cho hệ quản trị CSDL MySQL sử dụng MySQL Proxy bƣớc đầu đã có những kết quả tốt, khả quan. Trong thời gian tới, tôi sẽ nghiên cứu và phát triển bài toán cân bằng tải theo những hƣớng sau:
Cân bằng tải các truy vấn ghi dựa vào phƣơng pháp Sharding cơ sở dữ liệu MySQL với MySQL Proxy.
Thử nghiệm trên nhiều MySQL server để đánh giá chính xác tải và hiệu năng của các server.
77
TÀI LIỆU THAM KHẢO Tiếng Việ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
[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
[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
[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-247
Tiếng Anh
[5] Gregory Smith, PostgreSQL 9.0 High Performance, 2010, pp. 370-393
[6] Sheeri Cabral, Keith Murphy, MySQL Administrator‟s Bible, Wiley Publishing, Inc., Indianapolis, Indiana, 2009, pp.
[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-16 Trang web [8] http://en.wikipedia.org/wiki/Web_server [9] http://www.thanhnien.com.vn/pages/20111231/google-va-facebook-duoc-truy- cap-nhieu-nhat-nam-2011.aspx [9] http://www.mysql.com/why-mysql/ [11] http://www.postgresql.org/about/ [12] http://pgcluster.projects.postgresql.org/feature.html [13] http://bucardo.org/wiki/Bucardo [14] http://ossipedia.ipa.go.jp/capacity/EV0612230251/ [15] http://www.pgpool.net/docs/latest/doc/pgpool-en.html
78 [16] http://www.oracle.com [17] http://networksandservers.blogspot.com/2011/03/load-balancing-ii.html [18] http://everac99.wordpress.com/2008/03/31/the-oracle-rac-what-is-it-an-how- does-it-work/ [19] http://msdn.microsoft.com/en-us/library/ms152746.aspx [20] http://msdn.microsoft.com/en-us/library/ms151176.aspx [21] http://msdn.microsoft.com/en-us/library/ms187103.aspx [22] http://msdn.microsoft.com/en-us/library/ms189852.aspx [23] http://technet.microsoft.com/en-us/library/bb742455.aspx [24] http://quantrimaychu.com/showthread.php?t=3355 [25] http://dev.mysql.com/doc/refman/5.5/en/mysql-proxy.html [26] http://lieuclub.forumvi.com/t119-topic [27] http://dev.mysql.com/doc/refman/5.5/en/mysqlslap.html