Một kỹ thuật trong thiết kế hệ thống công nghệ thông tin, giúp tăng khả năng chịu tải của cở sở dữ liệu!
Dữ liệu luôn là yếu tố quan trọng trong các hệ thống phần mềm. Hiện nay, phần lớn dữ liệu của hệ thống phần mềm sẽ được lưu trữ ở các máy chủ cơ sở dữ liệu và được truy vấn khi cần. Với các hệ thống có lượng dữ liệu và lượng người truy cập lớn, hầu như mọi yêu cầu từ người dùng đều cần phải truy vấn dữ liệu từ cơ sở dữ liệu. Hãy thử tưởng tượng, lượng lớn người dùng liện tục truy cập hệ thống trong thời gian ngắn điều này đồng nghĩa với việc cũng có 1 lượng lớn yêu cần máy chủ cơ sở dữ liệu xử lý. Trong trường hợp này khả năng cao máy chủ cơ sở dữ liệu của chúng ta sẽ bị quá tải , thao tác đọc và ghi đến cơ sở dữ liệu sẽ mất nhiều thời gian và ảnh hưởng đến hiệu năng chung của toàn bộ hệ thống. Để giải quyết vấn đề này chúng ta có khá là nhiều cách nhưng trong bài viết này mình sẽ tập trung vào tối ưu hóa máy chủ cơ sở dữ liệu với một kỹ thuật gọi là Database Replication và demo cài đặt Database Replication trên MySQL Database.
1. Database Replication là gì?
Để hiểu Database Replication ta cùng phân tích 2 kiến trúc hệ thống sau:
Kiến trúc hệ thống 1: Chúng ta thường có một máy chủ cơ sở dữ liệu cho hệ thống vừa và nhỏ. Máy chủ cơ sở dữ liệu này sẽ có vai trò xử lý các yêu cầu Đọc và Ghi đến cơ sỡ dữ liệu từ các máy chủ web. Trong trường hợp này một máy chủ cơ sở dữ liệu có cấu hình đủ tốt có thể đáp ứng được nhu cầu của người dùng.
Kiến trúc hệ thống 2: Với hệ thống có lượng dữ liệu lớn, lượng người truy cập lớn và nhu cầu sử dụng cơ sở dữ liệu từ nhiều nơi thì một máy chủ cho cơ sở dữ liệu là không đủ và trong một sở trường hợp sẽ không đảm bảo tính High Avalablity của cơ sở dữ liệu. Từ đây ý tưởng nhân bản toàn bộ dữ liệu ra nhiều máy chủ cơ dữ liệu và từ đó các máy chủ này có thể chia sẻ các yêu cầu truy vấn dữ liệu cùng với nhau. Ý tưởng này được gọi là Database Replication. Hình bên dưới thể hiện rõ kiến trúc hệ thống có sử dụng Data Replication cho database.
Một số lưu ý thực hiện Database Replication:
1. Tách biệt các thao tác Đọc và Ghi đến cơ sở dữ liệu
2. Chỉ thực hiện thao tác ghi đến MySQL Master
3. Ưu tiên thực hiện thao tác đọc đến MySQL Slave
4. Số lượng Slave tùy vào nhu cần của hệ thống
2. Cài đặt Database Replication trên MySQL Database
2.1. Cài đặt MySQL Master Server và MySQL Slave Server
Ở Bước này chúng ta cần chuẩn bị 2 server và tiến hành cài đặt MySQL lên 2 server đó. Trong bài demo mình sẽ sử dụng AWS EC2 server để tạo 1 MySQL Master server, 1 MySQL Slave server.
Đây là 2 server đã được cài đặt MySQL 5.7 của mình:
MySQL Master server: 10.x.x.52 MySQL Slave server: 10.x.x.63
2.2. Cấu hình Replication trên MySQL Master Server
2.3. Cấu hình Replication trên MySQL Slave Server
2.4. Kiểm tra kết quả