Replication là giải pháp được ứng dụng cho môi trường phân phối dữ liệu trên nhiều Server, chính vì vậy Replication được sử dụng khi: - Mở rộng hệ thống Scale-out: nhân bản cơ sở dữ liệu
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Nguyễn Đình Đô
TÌM HIỂU CƠ CHẾ NÂNG CAO HIỆU NĂNG
VÀ TÍNH SẴN SÀNG TRONG MYSQL
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ thông tin
HÀ NỘI-2015
Trang 2ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Nguyễn Đình Đô
TÌM HIỂU CƠ CHẾ NÂNG CAO HIỆU NĂNG
VÀ TÍNH SẴN SÀNG TRONG MYSQL
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công Nghệ Thông TinCán bộ hướng dẫn: ThS Lê Hồng Hải
HÀ NỘI-2015
Trang 3Tác giả 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ác giả tiến hành thực nghiệm khóa luận của mình Tác giả 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ác giả 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ác giả những kiến thức quý báu, làm nền tảng để tác giả hoàn thành khóa luận cũng như công việc trong tương lai
Tác giả cũng xin gửi lời tri ân tới các bạn trong lớp K56CB đã luôn bên cạnh, ủng hộ và giúp đỡ tác giả trong suốt quá trình học tập tại trường
Cuối cùng tác giả 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ác giả trong cuộc sống cũng như trong học tập
Tác giả xin chân thành cảm ơn
Nguyễn Đình Đô
Trang 4TÓM TẮT NỘI DUNG
Xã hội ngày càng phát triển, con người vận động, sáng tạo đi kèm với đó là sự phát triển của công nghệ đã tạo ra khối lượng thông tin vô cùng lớn 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ẽ và linh hoạt Một hệ thống mạnh mẽ là một hệ thống đáp ứng được tất cả các truy vấn của client trong thời gian ngắn nhất, client có thể thực hiện truy vấn trên bất kì nút nào - hệ thống phân tải (hiệu năng cao) Bên cạnh khả năng cân bằng tải thì hệ thống phải đáp linh hoạt trong việc đáp ứng các yêu cầu về tính sẵn sàng, nhất quán dữ liệu trên các máy chủ - nếu một máy chủ gặp sự cố thì các máy chủ khác sẵn sàng đáp ứng các truy vấn từ client mà không làm ảnh hưởng đến hiệu xuất hệ thống Các yếu tố này liên kết mật thiết với nhau đảm bảo hệ thống vận hành ổn định Nếu một hệ thống không đáp ứng được các yếu tố này thì thảm họa có thể xảy ra bất cứ lúc nào, điều này gây ra tổn thất vô cùng nặng nề cho doanh nghiệp
Đã có rất nhiều giải pháp được các nhà nghiên cứu đưa ra cho các hệ quản trị cơ
sở dữ liệu, tuy nhiên có nhiều giải pháp không giải quyết được các yếu tố cần thiết cho
hệ thống máy chủ Vì vậy trong khóa luận này tác giả xin trình bày một số giải pháp Replication (nhân bản cơ sở dữ liệu) trong hệ quản trị cơ sở dữ liệu MySQL Trong khóa luận tác giả sẽ tập chung vào chủ yếu vào giải pháp đang được sử dụng phổ biến nhất và toàn diện nhất đó là giải pháp Multi master Replication trong MySQL sử dụng Galera
Các giải pháp được đưa ra đều hướng đến mục đích nhân bản cơ sở dữ liệu - tạo
ra một cơ sở dữ liệu mới giống hệt cơ sở dữ liệu đang sử dụng để đảm bảo tính sẵn sàng dữ liệu - sử dụng dữ liệu mọi lúc mọi nơi Giải pháp giúp hệ thống tự động sửa lỗi khi có sự cố xảy ra, phân tải đến các máy chủ trong hệ thống Ngoài những yếu tố
đó dữ liệu trên các máy chủ phải nhất quán và thời gian đồng bộ dữ liệu là ngắn nhất
Từ khóa: Replication, nhân bản
Giao dịch, những sự kiện làm thay đổi cơ sở dữ liệu
Semi-synchronous Replication, nhân bản bán đồng bộ
Multi master Replication, nhân bản với nhiều máy chủ chính
Trang 5TÀI LIỆU THAM KHẢO
[1] SÉBASTIEN HAN, (2012), (MySQL Multi-master Replication With Galera), Available: http://www.sebastien-han.fr/blog/2012/04/01/mysql-multi-master-replication-with-galera/ (Accessed: 2012, April 1)
[2] GaLera, (2014), (GALERA CLUSTER DOCUMENTATION), Available: http://galeracluster.com/documentation-webpages/ (Accessed: 2014)
[3] ADVAIT, (2015), (SEMI-SYNCHRONOUS REPLICATION IN MYSQL), Available: http://avdeo.com/2015/02/02/semi-synchronous-replication-in-mysql/ (Accessed: February 2, 2015)
[4] root@opentodo#, (2012), (MySQL Multi Master replication with Galera), Available: http://opentodo.net/2012/12/mysql-multi-master-replication-with-galera/ (Accessed: 12, 2012)
[5] Severalnines, (2013) (Scaling Drupal on Multiple Servers with Galera Cluster for MySQL), Avaiable: http://www.severalnines.com/blog/scaling-drupal-multiple-servers- galera-cluster-mysql (Accesed: April 26, 2013)
[6] Giuseppe Maxia, (2010), (Testing MySQL 5.5 semi-synchronous replication), Avaiable:http://datacharmer.blogspot.com/2010/11/testing-mysql-55-semi-synchronous.html (Accesed: 2010)
[7] (Multi-master replication) Avaiable: http://en.wikipedia.org/wiki/Multi-master_replication (Accesed: 18 March 2015)
[8] Manish Bhandari, (2014), (Galera with MySQL cluster) Avaiable: http://linuxbhandari1.blogspot.com/2014/07/galera-with-mysql-cluster.html (Accesed: Thursday, 3 July 2014)
[9] Seppo Jaakola (Codership) and Alexey Yurchenko (Codership), (2010), (Galera - Synchronous Multi-master Replication For InnoDB) Avaiable: http://en.oreilly.com/mysql2010/public/schedule/detail/13286 (Accesed: 04/14/2010)
[10] Codeship, (Codeship Documentation) Avaiable: https://codeship.com/documentation (2015)
[11] Tool test tự động, (2014), (Cài đặt và sử dụng Jmeter – test hiệu năng website) Avaiable: http://testerth.forumvi.com/t8-topic (Accesed: 22/8/2014)
[12] Mitchell Anicas, (2014), (How To Use Apache JMeter To Perform Load Testing on a Web Server) Avaiable: https://www.digitalocean.com/community/tutorials/how-to-use- apache-jmeter-to-perform-load-testing-on-a-web-server (Accesed: Jun 24, 2014)
Trang 6LỜI CAM ĐOAN
Để hoàn thành khóa luận này thực sự tác giả không thể chỉ dựa vào kiến thức hạn hẹp của bản thân, vì vậy tác giả đã tham khảo tài liệu, các công trình nghiên cứu của những người đi trước Thực sự tác giả cảm ơn những các tác giả đi trước đã cung cấp cho tác giả những kiến thức để tác giả hoàn thành tốt khóa luận của mình Tác giả cam đoan tất cả những kiến thức tác giả tham khảo đều đã được chỉ rõ trong phần tài liệu tham khảo
Trang 7
MỤC LỤC
LỜI CẢM ƠN 1
TÓM TẮT NỘI DUNG 2
TÀI LIỆU THAM KHẢO 3
LỜI CAM ĐOAN 4
MỤC LỤC 5
DANH MỤC HÌNH ẢNH 7
DANH MỤC CÁC THUẬT NGỮ 9
MỞ ĐẦU 10
Chương 1: Tổng quan về Replication 11
1.1 Giới thiệu 11
1.2 Lợi ích của Replication 11
1.3 Giải pháp 12
1.4 Phân loại 13
Chương 2: Giải pháp Replication trong MySQL 15
2.1 Replication cơ bản 15
2.1.1 Giới thiệu 15
2.1.2 Nguyên lý hoạt động 15
2.1.3 Cài đặt và kiểm thử hệ thống 16
2.2 Giải pháp semi-synchronous Replication 18
2.2.1 Đặt vấn đề 18
2.2.2 Giải quyết vấn đề và nguyên lý hoạt động của giải pháp 19
2.2.3 Cài đặt và kiểm thử hệ thống 21
Chương 3: Giải pháp Multi master Replication sử dụng Galera 24
3.1 Nhân rộng đồng bộ 24
3.2 Giới thiệu về giải pháp Multi master Replication 25
3.3 Giới thiệu về Galera Cluster 26
3.3.1 Tổng quan 26
Trang 83.4 Nguyên lý hoạt động của giải pháp Multi master Replication sử dụng
Galera 30
3.4.1 Thành phần cấu tạo của hệ thống 30
3.4.2 Trình tự sử lý một giao dịch trong cụm Galera 33
3.5 Cài đặt và kiểm thử hệ thống 36
3.5.1 Cài đặt và cấu hình hệ thống 36
3.5.2 Kiểm tra hệ thống 38
3.5.3 Nối một nút mới vào cụm 39
3.5.4 Khi một nút trong cụm gặp sự cố 42
3.6 Xây dựng hệ thống cân bằng tải 44
3.7 Đánh giá 48
Chương 4: Kết luận 49
Trang 9DANH MỤC HÌNH ẢNH
Hình 1.1 Mô hình nhân bản cơ sở dữ liệu 11
Hình 1.2 Mô hình sử dụng cho cơ sở dữ liệu sẵn có 13
Hình 1.3 Mô hình sử dụng để cân bằng tải 14
Hình 2.1 Mô hình MySQL Replication 15
Hình 2.2 Nguyên lý hoạt động của Replicaion cơ bản 15
Hình 2.3 Trình tự xử lý giao dịch của Replication cơ bản 19
Hình 2.4 Một giao dịch với nhân rộng bán đồng bộ 20
Hình 3.1 Không đồng bộ giữa master và slave 25
Hình 3.2 Mô hình đồng bộ Multi Master 26
Hình 3.3 Đồ thị biểu diễn thông lượng của Galera và NDB 27
Hình 3.4 Đồ thị biểu diễn thời gian phản hồi của Galera và NDB 28
Hình 3.5 Đồ thị so sánh số lượng người dùng của Galera và NDB 28
Hình 3.6 Biểu đồ so sánh hiệu xuất 2 giải pháp 29
Hình 3.7 Thành phần một cụm Galera 30
Hình 3.8 Một nút trong cụm Galera 30
Hình 3.9 Cấu trúc write-set 32
Hình 3.10 Client gửi giao dịch đến một nút 33
Hình 3.11 Thông điệp được gửi đến các nút khác 34
Hình 3.12 Các nút thực hiện đồng bộ ảo 34
Hình 3.13 Các nút thực hiện những đổi có trong thông điệp 34
Hình 3.14 Biểu đồ tuần tự quá trình thực hiện đồng bộ 35
Hình 3.15 Tạo cơ sở dữ liệu trên node1 38
Hình 3.16 Show cơ sở dữ liệu trên node2 39
Hình 3.17 Show cơ sở dữ liệu trên node3 39
Hình 3.18 Thêm một nút vào trong cụm 40
Hình 3.19 Nút mới gửi yêu cầu đến cụm để yêu cầu tham gia 41
Hình 3.20 Nút được chọn backup dữ liệu lên nút mới 41
Hình 3.21 Nút mới đã được thêm vào cụm 41
Hình 3.22 Sự phân rã của cụm 43
Hình 3.23 Cụm phân rã thành 2 phần bằng nhau 43
Hình 3.24 Mô hình cân bằng tải 44
Hình 3.25 Cân bằng tải giữa các nút 45
Hình 3.26 Cấu hình Jmeter 45
Hình 3.27 Kết quả đo bằng Jmeter 46
Hình 3.28 Tạo ứng dụng trên Máy cân bằng tải (LB) 46
Trang 10Hình 3.29 Ứng dụng được đồng bộ trên node1 47 Hình 3.30 Ứng dụng được đồng bộ trên node2 47 Hình 3.31 Ứng dụng được đồng bộ trên node3 47
Trang 11DANH MỤC CÁC THUẬT NGỮ
6 Semi – synchronous replication Nhân bản bán đồng bộ
7 Multi master replication Nhân bản nhiều master
Trang 12MỞ ĐẦU
Xã hội ngày càng phát triển, con người vận động, sáng tạo đi kèm với đó là khối lượng thông tin tạo ra ngày càng nhiều 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ì lớn và mạnh mẽ Một hệ thống mạnh
mẽ là một hệ thống đáp ứng được tất cả các truy vấn của client trong thời gian ngắn nhất - hệ thống cân bằng tải (hiệu năng cao) Bên cạnh khả năng cân bằng tải thì hệ thống cũng phải đáp ứng được tính sẵn sàng cao và nhất quán dữ liệu giữa các máy chủ Các yếu tố này liên kết mật thiết với nhau đảm bảo hệ thống vận hành ổn định Nếu một hệ thống không đáp ứng được các yếu tố này thì thảm họa có thể xảy ra bất
cứ lúc nào, điều này gây ra tổn thất vô cùng nặng nề cho doanh nghiệp
Đã có rất nhiều giải pháp được các nhà nghiên cứu đưa ra cho các hệ quản trị cơ
sở dữ liệu, tuy nhiên có nhiều giải pháp không giải quyết được các yếu tố cho hệ thống máy chủ Vì vậy khóa luận này tác giả xin trình bày một số giải pháp Replication (nhân bản cơ sở dữ liệu) trong hệ quản trị cơ sở dữ liệu MySQL
Các giải pháp được đưa ra đều hướng đến mục đích nhân bản cơ sở dữ liệu - tạo
ra một cơ sở dữ liệu mới giống hệt cơ sở dữ liệu đang sử dụng để dữ liệu được sử dụng mọi lúc mọi nơi Ngoài ra hệ thống sẽ phân tải cho các server để yêu cầu của khác hàng được đáp ứng nhanh nhất và quan trọng hơn cả là nhất quán dữ liệu
Phần chính của khóa luận này của tác giả sẽ trình bày giải pháp đang được sử dụng phổ biến nhất và toàn diện nhất đó là giải pháp Multi master Replication trong Galera sử dụng Galera Giải pháp giúp xây dựng hệ thống để client có thể thực hiện truy vấn trên bất kì trên bất kì server nào, chịu được khối lượng lớn yêu cầu từ client (hiệu năng cao), đáp ứng dữ liệu mọi lúc mọi nơi nhưng vẫn thể hiện sự nhất quán dữ liệu (tính sẵn sàng) Khóa luận tốt nghiệp của tác giả trình bày sau đây gồm 4 chương như sau:
Chương 1 Giới thiệu về Replication: Giới thiệu về nhân bản cơ sở dữ liệu, lợi ích và đưa ra các giải pháp
Chương 2 Các giải pháp Replication trong MySQL: giới thiệu một số giải pháp nhân bản cơ sở dữ liệu trong MySQL (MySQL Replication cơ bản và Semi – Synchronous Replication)
Chương 3 Multi master Replication trong MySQL sử dụng Galera: Giới thiệu và đi sâu vào giải pháp nhân bản cơ sở dữ liệu trong MySQL sử dụng Galera
Chương 4 Kết luận
Trang 13Chương 1: Tổng quan về Replication
1.1 Giới thiệu
Replication có ý nghĩa là “nhân bản” là tạo ra một phiên bản giống hệt phiên bản đang tồn tại, đang sử dụng
Với cơ sở dữ liệu nhu cầu lưu trữ lớn, đòi hỏi cơ sở dữ liệu phải toàn vẹn, không
bị mất mát trước những sự cố ngoài dự đoán Vì vậy khái niệm “nhân bản” ra đời, tạo một phiên bản cơ sở dữ liệu giống hệt cơ sở dữ liệu đang tồn tại, lưu trữ ở một nơi khác và đồng bộ hóa một cách tự động để tất cả các bản sao có cùng giá trị dữ liệu Nhân bản có thể thực thi giữa những cơ sở dữ liệu trên cùng một server hay các server khác nhau được kết nối bởi mạng LANs, WANs hay internet
Hình 1.1 Mô hình nhân bản cơ sở dữ liệu Phiên bản cơ sở dữ liệu được lưu trữ trên master server Phiên bản cơ sở dữ liệu
“nhân bản” được lưu trữ trên slave server Quá trình nhân bản từ master server sang slave server gọi là Replication
1.2 Lợi ích của Replication
Replication đem lại nhiều lợi ích tùy thuộc vào loại giải pháp Replication mà bạn chọn và những yêu cầu của bạn Nhưng một trong những lợi ích thông thường của Replication là dữ liệu luôn sẵn sàng mọi lúc mọi nơi khi cần
Replication là giải pháp được ứng dụng cho môi trường phân phối dữ liệu trên nhiều Server, chính vì vậy Replication được sử dụng khi:
- Mở rộng hệ thống (Scale-out): nhân bản cơ sở dữ liệu đến các slave server
để cân bằng tải nhằm tăng hiệu suất truy vấn cơ sở dữ liệu
- Bảo mật dữ liệu: vì dữ liệu được nhân bản đến các slave server và các slave server có thể tạm dừng quá trình sao chép, nó có thể chạy các dịch
vụ sao lưu mà không làm ảnh hưởng các dữ liệu trên master server
Trang 14- Phân tích: dữ liệu có thể trực tiếp được tạo ra trên master server, trong khi việc phân tích các thông tin có thể xảy ra trên các slave server mà không ảnh hưởng đến hiệu suất của master server
- Phân phối dữ liệu từ xa: nếu một văn phòng chi nhánh muốn làm việc với bản sao cơ sở dữ liệu chính, chúng ta có thể sử dụng Replication để tạo ra một bản sao của các dữ liệu cho việc sử dụng chúng mà không cần truy cập đến master server
1.3 Giải pháp
Các máy chủ cơ sở dữ liệu làm việc với nhau, khi máy chủ chính gặp sự cố thì máy chủ dự phòng có thể tiếp nhận công việc một cách nhanh chóng (tính sẵn sàng cao) hoặc cho phép nhiều máy tính cùng phục vụ việc truy vấn dữ liệu (cân bằng tải- hiệu năng cao) Lý tưởng nhất nếu các máy chủ làm việc với nhau liền mạch Các máy chủ chỉ để đọc mới có thể kết hợp dễ dàng được với nhau Nhưng chúng ta cần yêu cầu các máy chủ có thể kết hợp việc đọc và ghi, việc này rất khó khăn khi kết hợp các máy chủ với nhau Bởi vì nếu chỉ có công việc đọc thì chúng ta có thể đọc ở bất kì máy chủ nào, nhưng khi ghi các máy chủ phải đồng bộ với nhau để khi truy xuất phải cho kết quả hợp lý và đồng bộ trên tất cả các máy
Việc đồng bộ hóa về cơ bản là khó khăn với các máy chủ làm việc cùng nhau bởi
vì không có một giải pháp duy nhất giúp khắc phục tất cả những vấn đề của việc đồng
bộ, có rất nhiều giải pháp Mỗi giải pháp khắc phục vấn đề một cách khác nhau và giảm thiểu những ảnh hưởng đến một giai đoạn một một cách cụ thể
Một số giải pháp đồng bộ chờ cho đến khi tất cả các máy chủ đồng bộ với nhau điều này đảm bảo rằng sẽ không có mất mát về dữ liệu Một số giải pháp lại thông báo ngay là đã đồng bộ trong khi mới chỉ có duy nhất master server thực hiện và nó đang gửi những sự kiện thay đổi đến các slave server Điều này làm cho một số sự kiện có thể bị mất khi đến các máy chủ slave khiến việc truy vấn không đồng bộ
Hiệu xuất là chỉ tiêu để lựa chọn một giải pháp hợp lý Một hệ thống có hiệu xuất cao là một hệ thống đáp ứng được số lượng người dùng lớn, thời gian phản hồi ít nhất
Do vậy hệ thống phải đáp ứng được số lượng truy vấn (số lượng giao dịch thực hiện trên mỗi máy chủ càng nhiều càng tốt) Chúng ta có thể kể đến một số giải pháp sau: Shared Disk Failover (chia sẻ ổ đĩa dự phòng), File System Replication (nhân bản hệ thống file), Master-Slave Replication (Mô hình nhân bản master/slave), Asynchronous Multimaster Replication (Nhân bản không đồng bộ nhiều master server), Synchronous Multimaster Replication (Nhân bản đồng bộ nhiều master server)
Chú ý Replication trong MySQL chỉ được sử dụng được trong môi trường Linux
Trang 15Bảng so sánh các giải pháp đồng bộ nhân rộng với một số tiêu chí
Đặc tính FileSystem
Replication
Master-Slave Replication
Asynchronous Multimaster Replication
Synchronous Multimaster Replication Không có yêu cầu phần cứng
đặc biệt
Không phải chờ đợi máy chủ
Cấu hình sử dụng để nhân bản cơ sở dữ liệu sẵn có
Trong mô hình này chỉ có một cơ sở dữ liệu là master server còn các cơ sở dữ liệu khác là slave server
Hình 1.2 Mô hình sử dụng cho cơ sở dữ liệu sẵn có
Có thể có nhiều hơn một slave server tùy thuộc vào tải và các nhu cầu khác
Trang 16 Cấu hình sử dụng để cân bằng tải
Cấu hình này cung cấp một kịch bản cân bằng tải, nơi đọc, truy vấn được thực hiện trên master server hoặc bất kì các bản sao trong khi truy vấn cập nhập được thực hiện trên máy chủ master
Hình 1.3 Mô hình sử dụng để cân bằng tải Trong mô hình nay khi ứng dụng gửi yêu cầu đến hệ thống thì yêu cầu sẽ được phân tải cho toàn bộ hệ các server Khi đó toàn bộ server sẽ cùng chịu tải chứ không phải duy nhất một master server chịu tải
Những phần tiếp theo tác giả xin trình bày các giải pháp nhân rộng dữ liệu trong
hệ quản trị cơ sở dữ liệu MySQL đó là các giải pháp Replication cơ bản, synchronous Replication và giải pháp Multi master Replication sử dụng Galera
Trang 17Semi-Chương 2: Giải pháp Replication trong MySQL
2.1 Replication cơ bản
2.1.1 Giới thiệu
Replication trong MySQL cho phép dữ liệu từ một database MySQL server (master server) sẽ tạo bản sao cho một hoặc nhiều database MySQL servers ( slaves server ) Replication trong MySQL là không đồng bộ – các slave không cần thực hiện kết nối vĩnh viễn để nhận thông tin từ các master server Điều này có nghĩa rằng cập nhật dự liệu có thể thực hiện trên các kết nối từ xa và thậm chí cả trên các kết nối tạm thời hoặc liên tục như một dịch vụ dial-up Tùy thuộc vào cấu hình, bạn có thể nhân bản tất cả các database, có thể lựa chọn database mà bạn muốn nhân bản hoặc thậm chí
là bảng trong một cơ sở dữ liệu
Hình 2.1 Mô hình MySQL Replication Replication trong MySQL có tính năng hỗ trợ cho một chiều, sao chép không đồng bộ, trong đó một máy chủ hoạt động như master server, trong khi một hoặc nhiều máy chủ khác hoạt động như slave server
2.1.2 Nguyên lý hoạt động
Phần này sẽ mô tả trình tự hoạt động của Replication trong MySQL
Hình 2.2 Nguyên lý hoạt động của Replicaion cơ bản
Trang 18Dựa vào hình vẽ 2.2 có thể hình dung nguyên lý hoạt động của Replication trong MySQL như sau:
Trên máy chủ master, khi có bản cập nhật (chèn, cập nhật, xóa, thay đổi, vv) đến các cơ sở dữ liệu, master server sẽ ghi các thông tin thay đổi vào binary log (ghi nhị phân), tùy thuộc vào phương pháp replication mà bạn chọn Binary log có chứa “sự kiện” để mô tả những thay đổi cơ sở dữ liệu như các hoạt động tạo bảng hoặc thay đổi
dữ liệu bảng Ngoài ra nó cũng chứa các sự kiện UPDATE, INSERT và DELETE một bản ghi Binary log có các mục đích quan trọng sau:
- Phục vụ replication: các binary log trên máy chủ master cung cấp một hồ sơ
về những thay đổi dữ liệu, được gửi đến các máy chủ slave Các slave server thực hiện những sự kiện được ghi trong binary log để thay đổi cơ sở
dữ liệu sao cho giống như trên master server
- Một số hoạt động phục hồi dữ liệu yêu cầu sử dụng các binary log Sau khi một bản sao lưu đã được phục hồi, các sự kiện trong binary log được thực hiện lại
Slave server cần biết tên của binlog và vị trí binlog trên master server, các slave server sẽ kết nối với master server và lấy tất cả các chỉ mục từ tập tin binlog
Slave server tạo ra một thread (IO thread) kết nối với master server Máy chủ master sau đó tạo ra một binlog dump thread và gửi dữ liệu tới slave server qua IO thread
Các slave server sẽ có quyền lấy dữ liệu được ghi vào binary log chỉ định, quá trình bắt đầu sau khi biết một vị trí cụ thể của binlog và sau đó dữ liệu được viết lên slave’s relay log (xem hình 2.2)
Slave server sau đó sẽ lấy dữ liệu từ các relay log và áp dụng nó vào cơ sở dữ liệu của mình thông qua các SQL thread
Bởi vì mỗi slave server là độc lập, việc thực hiện lại các thay đổi từ master’s binary log, xảy ra độc lập trên mỗi slave server được kết nối với master server Ngoài
ra, do mỗi slave server nhận được một bản sao của binary log bằng cách yêu cầu các master server, các slave server có thể đọc và cập nhật các bản sao của cơ sở dữ liệu ở tốc độ của riêng mình và có thể bắt đầu và dừng quá trình sao chép theo ý muốn mà không ảnh hưởng khả năng cập nhật tình trạng cơ sở dữ liệu mới nhất trên master server hoặc bên slave server khác
Mô hình này chạy tốt nhất khi cả master server và slave server cùng chạy một phiên bản MySQL
Cấu hình trên master server:
Kiểm tra skip_networking, nếu giá trị này là ON thì master server và slave server
Trang 19sẽ không kết nối với nhau được => thêm vào /etc/my.cnf dòng
“skip_networking=Off” để tắt skip_networking
Khai báo server-id và binlog: thêm các dòng sau vào /etc/my.cnf dưới tag
[mysqld] :
Tạo user để slave server dùng user này kết nối vào server để sao lưu dữ liệu:
=> User: replication, Pass: 123456 Chú ý phần IP là IP của slave server
Restart lại mysql để đọc lại thông tin cấu hình mới trong /etc/my.cnf
Kiểm tra trạng thái của master server:
=> Để ý phần “File” và “Position”, giá trị của chúng sẽ được dùng ở bước khai báo thông tin master server bên slave server
Cấu hình trên slave server:
Khai báo trên slave server: thêm dòng sau vào file /etc/my.cnf dưới tag [mysqld] :
Khai báo thông tin của master server để slave server có thể kết nối:
Trang 20Start slave server:
Đến đây bạn đã cấu hình hoàn tất mô hình replication master – slave
Tiến hành kiểm tra hệ thống như sau:
Tạo database trên calvintuananh trên master server
Kiểm tra trên slave server có thể thấy cơ sở dữ liệu calvintuananh đã được tạo
2.2 Giải pháp semi-synchronous Replication
2.2.1 Đặt vấn đề
Với replication thông thường trình tự thực hiện một giao dịch trên hệ thống được thể hiện như trong hình 2.3 Client gửi một giao dịch đến master server (1) các master server sẽ xác nhận các giao dịch đó (2) Sau đó các master server sẽ ghi các giao dịch vào các bản ghi nhị phân (3) Các master server trả lời yêu cầu của client (4) rằng giao dịch thành công Trong khi đó các slave server sẽ sao chép các giao dịch này (5)
Trang 21Hình 2.3 Trình tự xử lý giao dịch của Replication cơ bản Điều gì sẽ xảy ra nếu master server gặp ra sự cố sau thời điểm (4) và trước khi một slave server được đồng bộ (5) Các client đã nhận được thông báo rằng giao dịch
đã thành công nhưng dữ liệu đã bị mất bởi vì các slave server chưa thực hiện nhân bản xong
Để khắc phục tình trạng này phương pháp nhân bản bán đồng bộ (Semi-sync Replication) đã được ra đời
2.2.2 Giải quyết vấn đề và nguyên lý hoạt động của giải pháp
Giới thiệu
Giải pháp semi - synchronous replication là một giải pháp replication trong MySQL, quá trình nhân bản được coi thành công nếu có ít nhất một slave server đã thực hiện tất cả các sự kiện trong một giao dịch mà server master đã thực hiện trước
đó
Để giải quyết vấn đề không đồng bộ chúng ta có thể thêm những mức độ khác nhau của việc đồng bộ như nhân bản hoàn toàn đồng bộ: chờ đợi cho đến khi tất cả các slave server xác nhận đã đồng bộ Nhược điểm: chậm trễ trong việc xác nhận
Nguyên lý hoạt động của hệ thống
Phương pháp semi-synchronous replication (nhân bản bán đồng bộ): phương pháp này có nghĩa là trước khi xác nhận với client rằng một giao dịch đã được nhân bản thì có ít nhất một slave server đã thực hiện xong các sự kiện của giao dịch Hình
Trang 22vẽ 2.4 mô tả trình tự một giao dịch trong hệ thống được xây dựng bằng phương pháp semi-synchronous replication
Hình 2.4 Một giao dịch với nhân rộng bán đồng bộ Quan hình vẽ này chúng ta nhận thấy Cũng giống như kịch bản replication thông thường, tất cả đều như nhau cho đến bước (3) Các master server sẽ không trả lời yêu cầu của khách hàng ngay thay vào đó master server sẽ gửi tới slave server file chứa giao dịch (4) các slave server sẽ chấp nhận và lưu vào replay log (5) Nếu không có thêm hành động nào nữa và có ít nhất một slave server gửi một thông báo cho master server rằng giao dịch đã được thực hiện (6) thì server master sẽ gửi thông báo xác nhận cho client (7)
Lợi ích ở đây là gì?
Nếu master server không may gặp sự cố, giao dịch bị mất nhưng client sẽ không
có những thông tin sai lầm về kết quả nhận được Khi master server bị lỗi, client sẽ nhận được một lỗi và biết rằng giao dịch cần phải thực hiện lại khi server master hồi
phục và nếu một trong các slave server đã được đồng bộ thì hệ thống sẽ được đồng bộ
Giao thức đồng bộ Semi-syn replication
Semi-synchronous replication hoạt động động theo các bước sau:
1) Thực hiện giao dịch: master server thực hiện các hành động từ client gửi tới
2) Chờ một slave server xác nhận rằng đã thực hiện những thay đổi trên server master mà client gửi tới- bước này mất một khoảng thời gian
3) Thông báo với client rằng các cơ sở dữ liệu đã được đồng bộ
Trang 23Cài plugin semisync_master trên master server
Cài plugin semisync_slave trên slave server
- Trên master server
Thêm dòng sau vào file /etc/my.cnf
Restart lại master server
Tạo người dùng replication
- Trên slave server
Thêm dòng sau vào file /etc/my.cnf
Trang 24Restart lại server
- Cấu hình Replication
Trên master server, kiểm tra trạng thái master server
Trên slave server, CHANGE MASTER TO & START SLAVE để slave server kết nối tới master server và bắt đầu nhân bản
Tiến hành kiểm tra hệ thống như sau:
Cơ sở dữ liệu test đã được tạo trên 2 server
Kiểm tra table trên slave server
Tạo table test1 trên master server
Trang 25Kiểm tra trên slave server
Các table đã được đồng bộ
Phần tiếp theo của khóa luận tác giả sẽ đi sâu vào giải pháp Multi master Replication trong MySQL sử dụng Galera Giải pháp này có thể nói là toàn diện nhất Giải pháp giúp nâng cao hiệu năng và tính sẵn sàng của hệ thống cài đặt hệ quản trị MySQL Đây cũng là nội dung cốt lõi của khóa luận mà tác giả muốn trình bày với người đọc
Trang 26Chương 3: Giải pháp Multi master Replication sử dụng Galera
3.1 Nhân rộng đồng bộ
So sánh nhân rộng không đồng bộ và nhân rộng đồng bộ
Nhân rộng không đồng bộ Nhân rộng đồng bộ
Sử dụng phương pháp tiếp cận
không sẵn sàng, có nghĩa là các
master server cập nhập cơ sở dữ
liệu sau đó truyền các thông tin về
việc cập nhập đến các slave server
Sau khi master server truyền các
thông tin thì nó thông báo rằng hệ
Ưu điểm của nhân rộng đồng bộ
Về lý thuyết, nhân rộng đồng bộ có lợi thế hơn nhân rộng không đồng bộ ví dụ như:
Tính sẵn sàng cao: Nhân rộng đồng bộ cung cấp cho cụm cơ sở dữ liệu tính sẵn sàng cao và đảm bảo dịch vụ sẵn sàng 24/7:
- Không mất dữ liệu khi nút bị hỏng
- Dữ liệu trên các nút luôn được đồng bộ
- Không phức tạp, tốn thời gian cho chuyển đổi dự phòng
Hiệu xuất được cải thiện: Việc đồng bộ cho phép chúng ta có thể thực hiện các truy vấn trên tất cả các nút trong cụm song song với nhau -> tăng hiệu xuất làm việc
Tính nhất quán trên tất cả các nút: ví dụ như khi thực hiện truy vấn SELECT trên một nút sau khi đã thực hiện phiên cập nhập dữ liệu trên một nút khác thì sẽ thấy
dữ liệu đã được cập nhập
Hầu hết các phương pháp nhân bản đều là không đồng bộ, MySQL 5.5 đã có phương pháp Semi-sync Replication tốt hơn tuy nhiên việc sao lưu không đồng bộ có nghĩa là dữ liệu rất có thể bị mất Đôi khi việc mất mát dữ liệu trở nên rất nghiêm trọng nếu như trong một hệ thống lớn