Trường Đại học Công nghệ - ĐHQGHN Khoa công nghệ thông tin ---BÁO CÁO PHẦN A HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Chủ đề: Thiết lập nhân bản 1 Master - 2 Slave, áp dụng thử nghiệm với cơ sở dữ liệu
Trang 1Trường Đại học Công nghệ - ĐHQGHN Khoa công nghệ thông tin
-BÁO CÁO PHẦN A HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Chủ đề: Thiết lập nhân bản 1 Master - 2 Slave, áp dụng thử nghiệm với
cơ sở dữ liệu quản lý điểm thi sinh viên.
Giảng viên: Vũ Bá Duy
Ngày: 15/5/2023
Chuẩn bị bởi: Nhóm 15
Thành viên:
Đỗ Tấn Lập - 20020202
Nguyễn Kiên Trung - 20020489
Đinh Nam Khuê - 20020110
Trang 2Mục lục
Mục lục 2
Lịch sử sửa đổi 3
Danh mục hình ảnh 3
1 Tổng quan 3
1.1 Giới thiệu 3
1.2 Đề xuất cách đọc 3
1.3 Tài liệu tham khảo 4
2 Tìm hiểu mô hình Master - Slave 4
2.1 Định nghĩa 4
2.2 Cách thức hoạt động 4
2.3 Quy trình hoạt động 4
2.4 Ưu điểm và nhược điểm 5
3 Thiết kế cơ sở dữ liệu 6
3.1 Biểu đồ quan hệ (Entity-Relationship Diagram) 6
3.2 Thiết kế bảng dữ liệu (table) 7
3.2.1 Student (sinh viên) 7
3.2.2 Course (khóa học) 7
3.2.3 Class (lớp khóa học) 7
3.2.4 Enrollment (đăng ký học) 8
3.2.5 Teacher (giảng viên) 8
3.2.6 Department (khoa) 8
3.2.7 Assignment (bài tập) 9
3.2.8 Submission (bài tập đã nộp) 9
3.2.9 Grade (điểm) 9
4 Triển khai thử nghiệm 10
4.1 Chuẩn bị 10
4.2 Triển khai 10
4.2.1 Cấu hình môi trường (Environment) 10
4.2.2 Cấu hình MySQL 12
5 Đánh giá kết quả, hiệu năng 13
5.1 Kết quả 13
5.2 Đánh giá 15
Trang 35.2.1 Độ phức tạp 15 5.2.2 Hiệu năng 15
6 Tổng kết 15
Trang 4Lịch sử sửa đổi
Đỗ Tấn Lập
Nguyễn Kiên Trung
Đinh Nam Khuê
17/5/2023 Thêm bản thiết kế cơ
sở dữ liệu
1.1
Đỗ Tấn Lập
Nguyễn Kiên Trung
Đinh Nam Khuê
17/5/2023 Triển khai cơ sở dữ
liệu
1.2
Danh mục hình ảnh
Hình 3.1: Biểu đồ quan hệ (ER diagram) 7
Hình 4.1 Cấu trúc thư mục thực hiện 12
Hình 4.2 Ví dụ về cấu hình mysql cho Master 13
Hình 4.3 Ví dụ cấu hình file môi trường cho node Master 13
Hình 4.5 Kết quả sau khi chạy docker-compose up 13
Hình 4.4 Cấp quyền Replication Slave 13
Hình 4.5 Địa chỉ ip của node Master 14
Hình 4.6 Thông tin về Master status 14
Hình 4.7 Bắt đầu tạo bản sao 14
Hình 5.1 Các bảng dữ liệu 15
Hình 5.2 Kết quả sau quá trình Slave (trên 1 node, tương tự với node còn lại) 15
Hình 5.3 Thêm dữ liệu trong node Master 15
Hình 5.4 Dữ liệu được cập nhật trong node Slave 16
Trang 51 Tổng quan
1.1 Giới thiệu
Đây là báo cáo môn học Hệ quản trị cơ sở dữ liệu về chủ đề “Thiết lập nhân bản 1 Master - 2 Slave, áp dụng cho cơ sở dữ liệu quản lý điểm thi sinh viên” được thực hiện và trình bày bởi nhóm 15
1.2 Đề xuất cách đọc
Tài liệu này mô tả về việc tìm hiểu mô hình Master - Slave và thực nghiệm
áp dụng với cơ sở dữ liệu quản lý điểm sinh viên Tài liệu được chia thành các phần như sau:
● Tìm hiểu về mô hình Master - Slave
● Thiết kế cơ sở dữ liệu quản lý điểm sinh viên
● Triển khai mô hình
● Đánh giá kết quả
1.3 Tài liệu tham khảo
[1] MySQL Replication:https://dev.mysql.com/doc/refman/8.0/en/replication.html [2] Docker Documentation:https://docs.docker.com/
[3] Giới thiệu về MySQL Replication (Viblo):
https://viblo.asia/p/gioi-thieu-ve-mysql-replication-master-slave-bxjvZYwNkJZ
2 Tìm hiểu mô hình Master - Slave
2.1 Định nghĩa
Mô hình Master - Slave (hay MySQL Replication Master-Slave) là một mô hình cơ sở dữ liệu phân tán trong đó có một máy chủ chính (Master)
và một hoặc nhiều máy chủ phụ (Slave) Mô hình này sử dụng nhằm mục đích tăng tính sẵn sàng, độ tin cậy và hiệu suất của cơ sở dữ liệu
Trang 62.2 Cách thức hoạt động
Trong mô hình Master-Slave, máy chủ Master là nơi nhận và xử lý các thao tác ghi như INSERT, UPDATE, DELETE từ hệ thống hoặc người quản trị Dữ liệu mới được ghi vào máy chủ Master và sau đó được sao chép lại đến các máy chủ Slave
Máy chủ Slave nhận các bản sao dữ liệu từ máy chủ Master và được
sử dụng cho các thao tác đọc (read) Điều này giúp phân bố tải giữa các máy chủ, giảm thiểu tình trạng quá tải và cung cấp khả năng mở rộng đọc 2.3 Quy trình hoạt động
Mô hình Master-Slave hoạt động như sau:
● Đồng bộ hóa ban đầu (Initial Synchronization): Ban đầu, các máy chủ Master và Slave sẽ được đồng bộ với nhau Sau đó một bản sao dữ liệu của Master sẽ được tạo ra và chép sang Slave
● Ghi dữ liệu (Write Operation): Các thao tác ghi dữ liệu (như INSERT, UPDATE, DELETE) sẽ được thực hiện trên máy chủ Master Mỗi khi
có thay đổi trên máy chủ Master, các bản ghi tương ứng sẽ được ghi vào binary log
● Sao chép dữ liệu (Data Replication): Máy chủ Slave theo dõi binary log trên Master, khi có thay đổi thì sẽ thực hiện thay đổi tương ứng trên máy chủ Slave Dữ liệu sẽ được sao chép từ Master sang Slave thông qua giao thức replication
● Đọc dữ liệu (Read Operations): Các thao tác đọc dữ liệu (SELECT) sẽ được chia tải ra cả Master và Slave
● Xử lý sự cố và khôi phục: Trong trường hợp máy chủ Master gặp sự
cố, một máy chủ Slave có thể được chuyển đổi để đảm nhận vai trò làm Master và tiếp tục theo quy trình Sau khi khắc phục được sự cố, máy chủ bị lỗi sẽ được khôi phục với vai trò là Slave và tiếp tục đồng
bộ với Master mới
Trang 72.4 Ưu điểm và nhược điểm
- Tăng tính sẵn có và độ tin cậy cao,
với mô hình này nếu máy chủ
Master bị lỗi thì Slave có thể đảm
nhận vai trò Master và hệ thống vẫn
có thể tiếp tục mà không bị gián
đoạn
- Phân bố tải trên hệ thống: máy chủ
Slave có thể xử lý truy vấn đọc
(SELECT) nên giảm được tải cho
máy chủ Master Điều này giúp cải
thiện hiệu suất và thời gian đáp ứng
của hệ thống
- Sao lưu và khôi phục dữ liệu: Có
thể coi máy chủ Slave là một bản
sao lưu dự phòng của Master Nếu
Master gặp sự cố thì dữ liệu vẫn
được bảo toàn và khôi phục từ
Slave
- Độ trễ trong sao chép dữ liệu: Máy chủ Slave nhận dữ liệu từ máy chủ Master qua quá trình sao chép nên
sẽ có độ trễ nhất định và có chênh lệch về dữ liệu giữa Master và Slave
- Khả năng xung đột dữ liệu
- Quản lý phức tạp: Yêu cầu cấu hình
và quản lý phức tạp hơn so với một máy chủ đơn lẻ
- Đòi hỏi kiến thức chuyên môn cao
để quản lý
Trang 83 Thiết kế cơ sở dữ liệu
3.1 Biểu đồ quan hệ (Entity-Relationship Diagram)
Hình 3.1: Biểu đồ quan hệ (ER diagram) 3.2 Thiết kế bảng dữ liệu (table)
3.2.1 Student (sinh viên)
Tên trường Mô tả Khóa Kiểu dữ liệu Kích thước tối đa mssv Mã số định danh sinh viên (Mã sinh
Trang 9full_name Tên đầy đủ của sinh viên none VARCHAR 250
date_of_birth Ngày sinh của sinh viên none DATE
email Email của sinh viên none VARCHAR 250
phone_number Số điện thoại none VARCHAR 50
3.2.2 Course (khóa học)
Tên trường Mô tả Khóa Kiểu dữ liệu Kích thước tối đa course_id Định danh môn học Khóa chính INT
course_name Tên môn học none VARCHAR 50
credits Số tín chỉ của môn học none INT
description Mô tả môn học none TEXT
3.2.3 Class (lớp khóa học)
Tên trường Mô tả Khóa Kiểu dữ liệu Kích thước tối đa class_id Định danh lớp học Khóa chính INT
course_id Định danh khóa học, liên kết với bảngcourse qua trường course_id Khóa ngoại INT
teacher_id
Định danh giảng viên của lớp khóa
học, liên kết với bảng teacher qua
trường teacher_id
Khóa ngoại INT
3.2.4 Enrollment (đăng ký học)
Tên trường Mô tả Khóa Kiểu dữ liệu Kích thước tối đa
Trang 10với bảng student qua trường student_idKhóa ngoại INT
class_id Định danh lớp học được đăng ký, liên
kết với bảng class qua trường class_id Khóa ngoại INT
enrollment_date Ngày đăng ký none DATE
3.2.5 Teacher (giảng viên)
Tên trường Mô tả Khóa Kiểu dữ liệu Kích thước tối đa teacher_id Định danh giảng viên Khóa chính INT
department_id
Định danh với khoa của giảng viên,
liên kết với bảng department qua
trường department_id
Khóa ngoại INT
first_name Họ của giảng viên none VARCHAR 10
last_name Tên của giảng viên none VARCHAR 10
full_name Tên đầy đủ của giảng viên none VARCHAR 50
email Email của giảng viên none VARCHAR 20
phone_number Số điện thoại none VARCHAR 10
3.2.6 Department (khoa)
Tên trường Mô tả Khóa Kiểu dữ liệu Kích thước tối đa department_id Định danh khoa Khóa chính INT
department_name Tên khoa none VARCHAR 30
3.2.7 Assignment (bài tập)
Tên trường Mô tả Khóa Kiểu dữ liệu Kích thước tối đa assignment_id Định danh bài tập Khóa chính INT
Trang 11teacher_id Định danh giảng viên, liên kết với
bảng teacher qua trường teacher_id Khóa ngoại INT
assignment_nam
e Tiêu đề của bài tập none VARCHAR 50
description Mô tả bài tập (câu hỏi, mẫu) none TEXT
due_date Hạn nộp bài none DATE
3.2.8 Submission (bài tập đã nộp)
Tên trường Mô tả Khóa Kiểu dữ liệu Kích thước tối đa submission_id Định danh bài tập đã nộp Khóa chính INT
student_id
Định danh sinh viên đã nộp bài, liên
kết với bảng student qua trường
student_id
Khóa ngoại INT
assignment_id Định danh bài tập, liên kết với bảng
assignment qua trường assignment_id Khóa ngoại INT
submission_date Ngày nộp bài none DATE
file_path Đường dẫn tới file bài tập đã nộp none VARCHAR 250
3.2.9 Grade (điểm)
Tên trường Mô tả Khóa Kiểu dữ liệu Kích thước tối đa grade_id Định danh điểm số Khóa chính INT
student_id
Định danh sinh viên liên quan đến
điểm này, liên kết với bảng student
qua trường student_id
Khóa ngoại INT
course_id
Định danh khóa học liên quan đến
điểm, liên kết với bảng course qua
trường course_id
Khóa ngoại INT
class_id
Định danh lớp học liên quan tới điểm,
liên kết với bảng class qua trường
class_id
Khóa ngoại INT
Trang 12giữa kỳ, điểm cuối kỳ, ) none ENUM
weight Trọng số của điểm(10%, 30% 70%) none ENUM
4 Triển khai thử nghiệm
Trong phần triển khai thực nghiệm này, ta sẽ triển khai mô hình 1 Master - 2 Slave với cơ sở dữ liệu quản lý điểm sinh viên đã xây dựng ở trên Mô hình sẽ được triển khai thử nghiệm trên hệ điều hành windows với docker
4.1 Chuẩn bị
● Docker: Phiên bản 23.0.5 hoặc cao hơn
● Docker-compose: Phiên bản 2.17.3
4.2 Triển khai
4.2.1 Cấu hình môi trường (Environment)
Cấu trúc folder bao gồm 3 thư mục: Master, Slave1 và Slave2, lưu file cấu hình cho mysql, file môi trường env, và file docker-compose.yml
Trang 13Hình 4.1 Cấu trúc thư mục thực hiện Cấu hình file my.cnf cho node Master và 2 node Slave Chú ý thuộc tính server-id
là duy nhất, nguyên dương với mỗi node Ở đây với node Master: server-id=1, với Slave1: server-id=2, với Slave2: server-id=3
Trang 14Hình 4.2 Ví dụ về cấu hình mysql cho Master.
Cấu hình file môi trường: env cho 3 node File này bao gồm các biến môi trường dùng trong các node tương ứng
Hình 4.3 Ví dụ cấu hình file môi trường cho node Master.
Chạy docker-compose up -d để chạy docker-compose, được kết quả như hình:
Hình 4.5 Kết quả sau khi chạy docker-compose up.
4.2.2 Cấu hình MySQL
Tạo người dùng và cấp quyền REPLICATION Slave trên node Master Trong bước này chỉ cần tạo 1 người dùng để cho 2 node Slave cùng sử dụng
Hình 4.4 Cấp quyền Replication Slave.
Lấy địa chỉ ip của node Master để truy cập (trong bài này là 192.168.48.2)
Trang 15Hình 4.5 Địa chỉ ip của node Master.
Lấy thông tin file log và vị trí của node Master để cấu hình cho các node Slave
Hình 4.6 Thông tin về Master status.
Dùng thông tin vừa lấy được để cấu hình cho các node Slave-1 và Slave-2 và bắt đầu Slave Câu lệnh flush privileges: dùng để cập nhật lại quyền, để có thể dùng ngay mà không phải restart mysql
Hình 4.7 Bắt đầu tạo bản sao.
5 Đánh giá kết quả, hiệu năng
5.1 Kết quả
Tạo cơ sở dữ liệu student_grade theo thiết kế có sẵn trên nút Master thu được kết quả như sau:
Trang 16Hình 5.1 Các bảng dữ liệu Trong 2 node Slave cũng sẽ nhận được các bảng tương tự Dùng câu lệnh show tables cho các node Slave
Hình 5.2 Kết quả sau quá trình Slave (trên 1 node, tương tự với node còn lại).
Thêm dữ liệu trong bảng students
Hình 5.3 Thêm dữ liệu trong node Master Kết quả nhận được trong node Slave:
Trang 17Hình 5.4 Dữ liệu được cập nhật trong node Slave 5.2 Đánh giá
5.2.1 Độ phức tạp
Theo như việc triển khai ở phần 4, ta có thể thấy mô hình 1 Master-2 Slave
có độ phức tạp về cấu hình và quản lý hơn so với một máy chủ đơn lẻ Cần có kiến thức và kỹ năng chuyên sâu về quản lý máy chủ, Docker, replication và quản lý cơ
sở dữ liệu để cài đặt, theo dõi và bảo trì hệ thống Bao gồm cả cấu hình để đồng bộ hóa, quản lý xung đột dữ liệu và giải quyết sự cố khi có sự chênh lệch dữ liệu giữa các máy chủ
Triển khai mô hình 1 Master-2 Slave yêu cầu cấu hình các máy chủ Master
và Slave một cách chính xác Cần xác định và cấu hình các thông số như địa chỉ IP, cổng kết nối, tên người dùng và mật khẩu cho việc sao chép dữ liệu Ngoài ra, cần cấu hình các thiết lập bảo mật để đảm bảo rằng chỉ những máy chủ Slave được ủy quyền mới có thể sao chép dữ liệu từ máy chủ Master
5.2.2 Hiệu năng
Như đã đề cập ở phần ưu và nhược điểm, triển khai mô hình 1 Master-2 Slave cung cấp khả năng phân bố tải trên hệ thống Các máy chủ Slave có thể xử lý các truy vấn đọc, giảm thiểu tình trạng quá tải máy chủ Điều này cải thiện hiệu suất và thời gian đáp ứng của hệ thống Ngoài ra, khả năng sao lưu dữ liệu từ máy chủ Master đến các máy chủ Slave giúp bảo vệ dữ liệu và tăng tính sẵn sàng Tuy nhiên nhược điểm có thể nói đến khi triển khai mô hình này là vấn đề về đồng nhất
dữ liệu do độ trễ khi thực hiện đồng bộ hóa (replication)
6 Tổng kết
Trong bài báo cáo này, chúng ta đã tìm hiểu về mô hình Master-Slave trong triển khai cơ sở dữ liệu và ứng dụng thực nghiệm với cơ sở dữ liệu quản lý điểm
Trang 18sinh viên Ta đã đề cập đến cách hoạt động của mô hình này, trình bày thiết kế cơ
sở dữ liệu và các bước triển khai với mô hình 1 Master-2 Slave
Qua việc tìm hiểu và thực nghiệm, có thể thấy mô hình này có các ưu điểm nổi trội so với việc triển khai cơ sở dữ liệu truyền thống như tăng khả năng chịu tải, tăng tính sẵn sàng và đem lại hiệu năng tốt Tuy nhiên cũng có một số mặt hạn chế phải nói đến là việc cấu hình phức tạp hơn, yêu cầu kiến thức chuyên môn về quản trị hệ thống tốt và điểm yếu về việc đồng nhất dữ liệu
Tổng kết lại, qua quá trình tìm hiểu và thực nghiệm đã đem lại cho ta một cái nhìn tổng quan hơn về mô hình Master-Slave, những mặt lợi-hại Điều này giúp
ta có thể lựa chọn và áp dụng mô hình Master-Slave hiệu quả với những dự án trong tương lai