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

tìm hiểu cơ chế nâng cao hiệu năng và tính sẵn sàng trong mysql

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

Định dạng
Số trang 53
Dung lượng 2,21 MB

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

Nội dung

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 3

Tá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 4

TÓ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 5

TÀ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 6

LỜ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 8

3.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 9

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

Hì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 11

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

MỞ ĐẦ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 13

Chươ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 15

Bả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 17

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

Dự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 19

sẽ 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 20

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

Hì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 22

vẽ 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 23

Cà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 24

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

Kiể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 26

Chươ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

Ngày đăng: 28/08/2015, 11:58

HÌNH ẢNH LIÊN QUAN

Hình 1.2.  Mô hình sử dụng cho cơ sở dữ liệu sẵn có - tìm hiểu cơ chế nâng cao hiệu năng và tính sẵn sàng trong mysql
Hình 1.2. Mô hình sử dụng cho cơ sở dữ liệu sẵn có (Trang 15)
Hình 2.2.  Nguyên lý hoạt động của Replicaion cơ bản - tìm hiểu cơ chế nâng cao hiệu năng và tính sẵn sàng trong mysql
Hình 2.2. Nguyên lý hoạt động của Replicaion cơ bản (Trang 17)
Hình 3.2.  Mô hình đồng bộ Multi Master - tìm hiểu cơ chế nâng cao hiệu năng và tính sẵn sàng trong mysql
Hình 3.2. Mô hình đồng bộ Multi Master (Trang 28)
Hình 3.4 là biểu đồ so sánh thời gian phản hồi của 2 giải pháp. - tìm hiểu cơ chế nâng cao hiệu năng và tính sẵn sàng trong mysql
Hình 3.4 là biểu đồ so sánh thời gian phản hồi của 2 giải pháp (Trang 30)
Hình 3.5.  Đồ thị so sánh số lượng người dùng của Galera và NDB - tìm hiểu cơ chế nâng cao hiệu năng và tính sẵn sàng trong mysql
Hình 3.5. Đồ thị so sánh số lượng người dùng của Galera và NDB (Trang 30)
Hình 3.14.  Biểu đồ tuần tự quá trình thực hiện đồng bộ - tìm hiểu cơ chế nâng cao hiệu năng và tính sẵn sàng trong mysql
Hình 3.14. Biểu đồ tuần tự quá trình thực hiện đồng bộ (Trang 37)
Hình 3.16.  Show cơ sở dữ liệu trên node2  Node3 - tìm hiểu cơ chế nâng cao hiệu năng và tính sẵn sàng trong mysql
Hình 3.16. Show cơ sở dữ liệu trên node2 Node3 (Trang 41)
Hình 3.21.   Nút mới đã được thêm vào cụm - tìm hiểu cơ chế nâng cao hiệu năng và tính sẵn sàng trong mysql
Hình 3.21. Nút mới đã được thêm vào cụm (Trang 43)
Hình 3.19.  Nút mới gửi yêu cầu đến cụm để yêu cầu tham gia - tìm hiểu cơ chế nâng cao hiệu năng và tính sẵn sàng trong mysql
Hình 3.19. Nút mới gửi yêu cầu đến cụm để yêu cầu tham gia (Trang 43)
Hình 3.22.  Sự phân rã của cụm - tìm hiểu cơ chế nâng cao hiệu năng và tính sẵn sàng trong mysql
Hình 3.22. Sự phân rã của cụm (Trang 45)
Hình 3.23.  Cụm phân rã thành 2 phần bằng nhau - tìm hiểu cơ chế nâng cao hiệu năng và tính sẵn sàng trong mysql
Hình 3.23. Cụm phân rã thành 2 phần bằng nhau (Trang 45)
Hình 3.25.  Cân bằng tải giữa các nút - tìm hiểu cơ chế nâng cao hiệu năng và tính sẵn sàng trong mysql
Hình 3.25. Cân bằng tải giữa các nút (Trang 47)
Hình 3.26.  Cấu hình Jmeter - tìm hiểu cơ chế nâng cao hiệu năng và tính sẵn sàng trong mysql
Hình 3.26. Cấu hình Jmeter (Trang 47)
Hình 3.27.  Kết quả đo bằng Jmeter - tìm hiểu cơ chế nâng cao hiệu năng và tính sẵn sàng trong mysql
Hình 3.27. Kết quả đo bằng Jmeter (Trang 48)
Hình 3.29.  Ứng dụng được đồng bộ trên node1  Node2 - tìm hiểu cơ chế nâng cao hiệu năng và tính sẵn sàng trong mysql
Hình 3.29. Ứng dụng được đồng bộ trên node1 Node2 (Trang 49)

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