Trong bài viết này Sydexa sẽ mô tả Database replication một chìa khóa tăng cường tính sẵn sàng và độ tin cậy cho CSDL trong các hệ thống lớn. Hãy chia sẻ bài viết này với những bạn bè đang muốn học về thiết kế hệ thống chịu tải cao bạn nha 😍
Chúng mình có tạo Group cho các bạn cùng chia sẻ và học hỏi về thiết kế hệ thống nha 😄😄😄
Các bạn tham gia để gây dựng cộng đồng System Design Việt Nam thật lớn mạnh nhé 😍😍😍
Cộng Đồng System Design Việt Nam: https://www.facebook.com/groups/sydexa
Kênh TikTok: https://www.tiktok.com/@sydexa.com
Giả sử bạn đang xây dựng một hệ thống thương mại điện tử (e-commerce) phục vụ khách hàng trên toàn quốc. Khi một khách hàng đặt hàng trên website, các thông tin về đơn hàng, sản phẩm, thanh toán, v.v. cần được lưu trữ trong cơ sở dữ liệu.
Một số vấn đề có thể xảy ra trong trường hợp này:
- Hiệu suất: Khi số lượng khách hàng và đơn hàng tăng lên, cơ sở dữ liệu chính sẽ phải xử lý ngày càng nhiều yêu cầu. Điều này có thể dẫn đến hiệu suất chậm và ảnh hưởng đến trải nghiệm của khách hàng.
- Sự cố và khả năng phục hồi: Nếu có sự cố xảy ra với cơ sở dữ liệu chính (ví dụ: hỏng hóc phần cứng, mất điện, v.v.), dữ liệu của khách hàng sẽ bị mất, gây ảnh hưởng nghiêm trọng đến hoạt động kinh doanh.
Để khắc phục các vấn đề này, chúng ta sẽ cần đến sự trợ giúp của Database Replication.
Database Replication là gì?
Database replication là quá trình sao chép và lưu trữ các bản sao của cơ sở dữ liệu trên nhiều server cơ sở dữ liệu khác nhau.
Quá trình này bao gồm việc sao chép dữ liệu từ một cơ sở dữ liệu chính (master) sang các cơ sở dữ liệu phụ (slave). Các cơ sở dữ liệu slave thường được sử dụng cho các hoạt động đọc dữ liệu.
Mục tiêu chính của database replication là:
- Đảm bảo dữ liệu luôn sẵn sàng và nhất quán trên nhiều vị trí.
- Cải thiện hiệu suất bằng cách phân tán lượng truy cập.
- Tăng tính dự phòng trong trường hợp một cơ sở dữ liệu bị lỗi
Phân loại Database Replication dựa trên kiến trúc
Master-Slave Replication
Master-slave replication là một trong những mô hình phổ biến nhất trong database replication. Trong kiến trúc này, có một cơ sở dữ liệu chính được gọi là "master", và một hoặc nhiều cơ sở dữ liệu phụ được gọi là "slave".
Cơ chế hoạt động của Master-Slave Replication:
- Ghi dữ liệu: Tất cả các thao tác ghi (insert, update, delete) đều được thực hiện trên database master. Slave database không thể thực hiện các thao tác ghi trực tiếp.
- Nhân bản dữ liệu: Mọi thay đổi trên database master sẽ được nhân bản (replicated) và áp dụng lên các database slave. Quá trình này thường được thực hiện theo cách bất đồng bộ (asynchronous) để tối ưu hiệu suất.
- Đọc dữ liệu: Các yêu cầu đọc dữ liệu (select) có thể được thực hiện trên cả database master và slave. Việc phân tán các yêu cầu đọc giúp cải thiện hiệu suất.
Ưu điểm của master-slave replication:
- Tính sẵn sàng cao: Nếu master gặp sự cố, một slave sẽ nhanh chóng được thăng cấp lên thành master mới, và tất cả các thao tác database sẽ tạm thời được thực hiện trên master mới này để đảm bảo hoạt động của hệ thống.
- Cân bằng tải: Các yêu cầu đọc có thể được phân bổ đến các slave, cải thiện hiệu suất của hệ thống.
- Dễ quản lý: Cấu trúc đơn giản với một database master giúp việc triển khai, cấu hình và quản lý trở nên dễ dàng. Việc quản lý tập trung tại master cũng giúp đơn giản hóa các hoạt động như giám sát, backup, recovery, và mở rộng hệ thống bằng cách thêm các slave mới.
Nhược điểm của master-slave replication:
- Nếu database master gặp sự cố, toàn bộ hệ thống sẽ bị gián đoạn.
- Khi mất kết nối giữa master và slave, tính nhất quán của dữ liệu có thể bị ảnh hưởng. Dữ liệu trên các slave có thể không được đồng bộ hóa kịp thời.
- Việc tập trung các hoạt động ghi vào một database master sẽ làm cho hiệu suất giảm, khi số lượng slave tăng lên, lưu lượng đến master cũng tăng lên. Điều này có thể làm giảm hiệu suất của database master.
Multi-Master Replication
Khác với mô hình master-slave replication, multi-master replication là một mô hình database replication với nhiều database đóng vài trò là master, có khả năng thực hiện các thao tác ghi dữ liệu.
Cơ chế hoạt động của Multi-Master Replication:
- Các database master đều có quyền ghi dữ liệu.
- Các thay đổi này sau đó sẽ được nhân bản (replicated) và áp dụng lên tất cả các database khác.
- Quá trình này diễn ra hai chiều, nghĩa là mọi database master đều có thể ghi dữ liệu và nhân bản lẫn nhau.
- Việc đọc dữ liệu vẫn diễn ra ở tất cả các database tương tự như master-slave replication.
Ưu điểm của multi-master replication:
- Tính sẵn sàng cao: Khi một database master gặp sự cố, các master khác vẫn có thể tiếp tục hoạt động.
- Khả năng mở rộng tốt: Có thể dễ dàng thêm các database master mới vào hệ thống.
- Phân tán tải: Các thao tác ghi có thể được phân tán trên nhiều database master.
Nhược điểm của multi-master replication:
- Xử lý xung đột phức tạp: Khi có nhiều master, việc xảy ra xung đột khi cập nhật dữ liệu sẽ xảy ra thường xuyên và phức tạp hơn. Cần có cơ chế phát hiện và giải quyết xung đột.
- Tính nhất quán: Tùy thuộc vào cơ chế nhân bản, tính nhất quán của dữ liệu có thể bị ảnh hưởng.
- Phức tạp trong triển khai và quản lý: Việc thiết lập và vận hành hệ thống multi-master phức tạp hơn so với master-slave.
Asynchronous Replication
Trong kiểu Asynchronous Replication, quá trình nhân bản dữ liệu từ database master sang các database slave diễn ra theo một cách không đồng bộ.
Khi có yêu cầu từ client, các thay đổi sẽ được áp dụng trên database master và phản hồi lại các thay đổi cho client, sau đó những thay đổi này mới được nhân bản và áp dụng lên các database slave, nhưng không phải ngay lập tức mà ở một thời điểm khác theo quy tắc của hệ thống.
Ưu điểm: Vì database master không phải chờ đợi các slave được cập nhật, nên việc thực hiện thay đổi trên master sẽ nhanh hơn. Điều này giúp cải thiện hiệu suất chung của hệ thống.
Nhược điểm: Vì không được cập nhật dữ liệu liên tục nên có thể dẫn đến sự không nhất quán giữa database master và slave.
Asynchronous Replication thường được sử dụng trong các trường hợp ít yêu cầu tính nhất quán tuyệt đối, nhưng cần cải thiện hiệu suất và giảm độ trễ.
Synchronous Replication
Trong kiểu Synchronous Replication, quá trình nhân bản dữ liệu từ database master sang các database slave diễn ra theo cách đồng bộ.
Khi có yêu cầu từ client, các thay đổi sẽ được áp dụng trên database master và slave cùng một lúc sau đó mới phản hồi lại cho client.
Ưu điểm: Đảm báo tính nhất quán của dữ liệu. Khi master bị lỗi có thể lập tức chuyển sang sử dụng một slave khác, vì dữ liệu luôn được đồng bộ hóa.
Nhược điểm: Do yêu cầu phải đồng bộ hóa các thao tác giữa master và slave, nên hiệu suất của hệ thống có thể bị ảnh hưởng, đặc biệt khi có nhiều thao tác ghi.
Synchronous Replication thường được sử dụng trong các ứng dụng yêu cầu tính nhất quán dữ liệu rất cao, ngay cả khi điều này ảnh hưởng đến hiệu suất một phần. Ví dụ như các hệ thống tài chính, ngân hàng, y tế…
Database replication là một giải pháp tuyệt vời và có thể giải quyết nhiều bài toán phức tạp trong thiết kế hệ thống. Tuy nhiên, chính nó cũng là một bài toán mà người kỹ sư cần phải cân nhắc thật kỹ trước khi áp dụng.
Sydexa.com xin hẹn gặp lại các bạn ở các bài viết thú vị hơn nha
Lời nhắn
Chúng mình có tạo Group cho các bạn cùng chia sẻ và học hỏi về thiết kế hệ thống nha 😄😄😄
Các bạn tham gia để gây dựng cộng đồng System Design Việt Nam thật lớn mạnh nhé 😍😍😍
Cộng Đồng System Design Việt Nam: https://www.facebook.com/groups/sydexa