Tải bản đầy đủ (.pdf) (53 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.21 MB, 53 trang )

































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





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

Cán bộ hướng dẫn:
ThS. Lê Hồng Hải










HÀ NỘI-2015

1

LỜI CẢM ƠN
Sau nhiều tháng nghiên cứu và thực hiện, khóa luận của tác giả đã hoàn tất và đã
đạt được một số kết quả nhất định.
Lời đầu tiên, tác giả xin gửi lời cảm ơn và lòng biết ơn sâu sắc nhất tới thầy Lê
Hồng Hải, người đã tận tình hướng dẫn và chỉ bảo tác giả trong suốt quá trình thực
hiện khóa luận tốt nghiệp.
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.

Hà Nội, Tháng 04/2015
Sinh viên thực hiện

Nguyễn Đình Đô

2

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

TÀI LIỆU THAM KHẢO
[1] SÉBASTIEN HAN, (2012), (MySQL Multi-master Replication With Galera), Available:

(Accessed: 2012, April 1).
[2] GaLera, (2014), (GALERA CLUSTER DOCUMENTATION), Available:
(Accessed: 2014).
[3] ADVAIT, (2015), (SEMI-SYNCHRONOUS REPLICATION IN MYSQL), Available:
(Accessed: February 2,
2015).
[4] root@opentodo#, (2012), (MySQL Multi Master replication with Galera), Available:
(Accessed: 12,
2012).
[5] Severalnines, (2013) (Scaling Drupal on Multiple Servers with Galera Cluster for
MySQL), Avaiable: />galera-cluster-mysql (Accesed: April 26, 2013).
[6] Giuseppe Maxia, (2010), (Testing MySQL 5.5 semi-synchronous replication),
Avaiable:
(Accesed: 2010)
[7] (Multi-master replication) Avaiable:
(Accesed: 18 March 2015).
[8] Manish Bhandari, (2014), (Galera with MySQL cluster) Avaiable:
(Accesed:
Thursday, 3 July 2014)
[9] Seppo Jaakola (Codership) and Alexey Yurchenko (Codership), (2010), (Galera -
Synchronous Multi-master Replication For InnoDB) Avaiable:

(Accesed: 04/14/2010)
[10] Codeship, (Codeship Documentation) Avaiable:
(2015)
[11] Tool test tự động, (2014), (Cài đặt và sử dụng Jmeter – test hiệu năng website) Avaiable:
(Accesed: 22/8/2014)
[12] Mitchell Anicas, (2014), (How To Use Apache JMeter To Perform Load Testing on a
Web Server) Avaiable: />apache-jmeter-to-perform-load-testing-on-a-web-server (Accesed: Jun 24, 2014)

4


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.
















5

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


6

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


7

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

8

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


9

DANH MỤC CÁC THUẬT NGỮ
STT Thuật ngữ Tiếng Anh Thuật ngữ Tiếng Việt
1 Replication Nhân bản, nhân rộng
2 Server Máy chủ
3 Master server Máy chủ cơ sở dữ liệu chính
4 Slave server Máy chủ cơ sở dữ liệu sao lưu
5 Node Nút
6 Semi – synchronous replication Nhân bản bán đồng bộ
7 Multi master replication Nhân bản nhiều master

8 Database Cơ sở dữ liệu
9 Cluster Cụm
10 Client Khách hàng
10

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

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

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

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
   
Cho phép nhiều master  
Không phải chờ đợi máy chủ
đồng bộ
 
Master bị lỗi sẽ không bao giờ
bị mất dữ liệu
 
Slave chỉ chấp nhận các truy
vấn đọc
 
Không giải quyết các xung đột
cần thiết
   
Số liệu được tham khảo trên
1.4. Phân loại
Có 2 loại cấu hình sử dụng phổ biến trong Replication đó là cấu hình được sử
dụng để nhân bản cơ sở dữ liệu sẵn có và loại thứ 2 là để cân bằng tải.
 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
14

 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, Semi-
synchronous Replication và giải pháp Multi master Replication sử dụng Galera.


15

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

16

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.
2.1.3. Cài đặt và kiểm thử hệ thống
Cài đặt MySQL Replication với mô hình 1 master server và 1 slave server
Địa chỉ IP các server:
Master server: 192.168.1.250
Slave server: 192.168.1.251
 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
17

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:


18

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

19


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
20

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ộ.
21

2.2.3. Cài đặt và kiểm thử hệ thống
Cài đặt Semi-Synchronous Replication với mô hình 1 master server và 1 slave
server.
Địa chỉ IP các server:
Master server: 192.168.0.136
Slave server: 192.168.0.137
 Cài đặt và cấu hình hệ thống
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

22

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.

23

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.

×