Đang tải... (xem toàn văn)
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 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 21.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
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.
Đỗ Tấn Lập Nguyễn Kiên Trung Đinh Nam Khuê
17/5/2023 Triển khai cơ sở dữ liệu
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 (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ườngMô tảKhóaKiểu dữ liệuKích thước tối đamssv Mã số định danh sinh viên (Mã sinh
Trang 9full_nameTên đầy đủ của sinh viênnoneVARCHAR250date_of_birthNgày sinh của sinh viênnoneDATE
emailEmail của sinh viênnoneVARCHAR250phone_number Số điện thoạinoneVARCHAR50
3.2.2 Course (khóa học)
Tên trườngMô tảKhóaKiểu dữ liệuKích thước tối đacourse_idĐịnh danh môn họcKhóa chínhINT
course_nameTên môn họcnoneVARCHAR50creditsSố tín chỉ của môn họcnoneINT
descriptionMô tả môn họcnoneTEXT
3.2.3 Class (lớp khóa học)
Tên trườngMô tảKhóaKiểu dữ liệuKích thước tối đaclass_idĐịnh danh lớp họcKhóa chínhINT
course_id Định danh khóa học, liên kết với bảngcourse qua trường course_id Khóa ngoạiINT
Định danh giảng viên của lớp khóahọc, liên kết với bảng teacher quatrường teacher_id
Khóa ngoạiINT
3.2.4 Enrollment (đăng ký học)
Tên trườngMô tảKhóaKiểu dữ liệuKí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ýnoneDATE
3.2.5 Teacher (giảng viên)
Tên trườngMô tảKhóaKiểu dữ liệuKích thước tối đateacher_idĐịnh danh giảng viênKhóa chínhINT
Định danh với khoa của giảng viên,liên kết với bảng department quatrường department_id
Khóa ngoạiINT
first_nameHọ của giảng viênnoneVARCHAR10last_nameTên của giảng viênnoneVARCHAR10full_nameTên đầy đủ của giảng viênnoneVARCHAR50emailEmail của giảng viênnoneVARCHAR20phone_numberSố điện thoạinoneVARCHAR10
3.2.6 Department (khoa)
Tên trườngMô tảKhóaKiểu dữ liệuKích thước tối đadepartment_idĐịnh danh khoaKhóa chínhINT
department_name Tên khoanoneVARCHAR30
3.2.7 Assignment (bài tập)
Tên trườngMô tảKhóaKiểu dữ liệuKích thước tối đaassignment_idĐịnh danh bài tậpKhóa chínhINT
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 descriptionMô tả bài tập (câu hỏi, mẫu)noneTEXT
due_dateHạn nộp bàinoneDATE
3.2.8 Submission (bài tập đã nộp)
Tên trườngMô tảKhóaKiểu dữ liệuKích thước tối đasubmission_idĐịnh danh bài tập đã nộpKhóa chínhINT
Định danh sinh viên đã nộp bài, liênkết với bảng student qua trườngstudent_id
Khóa ngoạiINT
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àinoneDATE
file_pathĐường dẫn tới file bài tập đã nộpnoneVARCHAR250
3.2.9 Grade (điểm)
Tên trườngMô tảKhóaKiểu dữ liệuKích thước tối đagrade_idĐịnh danh điểm sốKhóa chínhINT
Định danh sinh viên liên quan đếnđiểm này, liên kết với bảng studentqua trường student_id
Khóa ngoạiINT
Định danh khóa học liên quan đếnđiểm, liên kết với bảng course quatrường course_id
Khóa ngoạiINT
Định danh lớp học liên quan tới điểm,liên kết với bảng class qua trườngclass_id
Khóa ngoạiINT
Trang 12giữa kỳ, điểm cuối kỳ, ) none ENUM weightTrọng số của điểm(10%, 30% 70%)noneENUM
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.