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

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

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 (967.32 KB, 18 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

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

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

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

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

5.2.1. Độ phức tạp... 15 5.2.2. Hiệu năng... 15 6. Tổng kết... 15

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

Lị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

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

1.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: [2] Docker Documentation: Giới thiệu về MySQL Replication (Viblo):

a/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.

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

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

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

2.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 tồ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ý.

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

3.Thiết kế cơ sở dữ liệu

3.1. Biểu đồ quan hệ (Entity-Relationship Diagram)

<small>Hình 3.1: Biểu đồ quan hệ (ER diagram)</small> 3.2. Thiết kế bảng dữ liệu (table)

3.2.1. Student (sinh viên)

<small>Tên trườngMơ tảKhóaKiểu dữ liệuKích thước tối đamssv</small> <sup>Mã số định danh sinh viên (Mã sinh</sup>

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<small>full_nameTên đầy đủ của sinh viênnoneVARCHAR250date_of_birthNgày sinh của sinh viênnoneDATE</small>

<small>emailEmail của sinh viênnoneVARCHAR250phone_number Số điện thoạinoneVARCHAR50</small>

3.2.2. Course (khóa học)

<small>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</small>

<small>course_nameTên mơn họcnoneVARCHAR50creditsSố tín chỉ của mơn họcnoneINT</small>

<small>descriptionMơ tả mơn họcnoneTEXT</small>

3.2.3. Class (lớp khóa học)

<small>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</small>

<small>course_id</small> <sup>Định danh khóa học, liên kết với bảng</sup><sub>course qua trường course_id</sub> <small>Khóa ngoạiINT</small>

<small>Đị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</small>

<small>Khóa ngoạiINT</small>

3.2.4. Enrollment (đăng ký học)

<small>Tên trườngMơ tảKhóaKiểu dữ liệuKích thước tối đa</small>

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

<small>với bảng student qua trường student_id</small><sup>Khóa ngoại</sup> <sup>INT</sup>

<small>class_id</small> <sup>Định danh lớp học được đăng ký, liên</sup>

<small>kết với bảng class qua trường class_id</small> <sup>Khóa ngoại</sup> <sup>INT</sup> <small>enrollment_date Ngày đăng kýnoneDATE</small>

3.2.5. Teacher (giảng viên)

<small>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</small>

<small>Định danh với khoa của giảng viên,liên kết với bảng department quatrường department_id</small>

<small>Khóa ngoạiINT</small>

<small>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</small>

3.2.6. Department (khoa)

<small>Tên trườngMơ tảKhóaKiểu dữ liệuKích thước tối đadepartment_idĐịnh danh khoaKhóa chínhINT</small>

<small>department_name Tên khoanoneVARCHAR30</small>

3.2.7. Assignment (bài tập)

<small>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</small>

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

<small>teacher_id</small> <sup>Định danh giảng viên, liên kết với</sup>

<small>bảng teacher qua trường teacher_id</small> <sup>Khóa ngoại</sup> <sup>INT</sup> <small>assignment_nam</small>

<small>e</small> <sup>Tiêu đề của bài tập</sup> <sup>none</sup> <sup>VARCHAR</sup> <sup>50</sup> <small>descriptionMô tả bài tập (câu hỏi, mẫu)noneTEXT</small>

<small>due_dateHạn nộp bàinoneDATE</small>

3.2.8. Submission (bài tập đã nộp)

<small>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</small>

<small>Định danh sinh viên đã nộp bài, liênkết với bảng student qua trườngstudent_id</small>

<small>Khóa ngoạiINT</small>

<small>assignment_id</small> <sup>Định danh bài tập, liên kết với bảng</sup>

<small>assignment qua trường assignment_id</small> <sup>Khóa ngoại</sup> <sup>INT</sup> <small>submission_date Ngày nộp bàinoneDATE</small>

<small>file_pathĐường dẫn tới file bài tập đã nộpnoneVARCHAR250</small>

3.2.9. Grade (điểm)

<small>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</small>

<small>Đị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</small>

<small>Khóa ngoạiINT</small>

<small>Đị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</small>

<small>Khóa ngoạiINT</small>

<small>Đị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</small>

<small>Khóa ngoạiINT</small>

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

<small>giữa kỳ, điểm cuối kỳ,...)</small> <sup>none</sup> <sup>ENUM</sup> <small>weightTrọng số của điểm(10%, 30%. 70%)noneENUM</small>

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.

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

<small>Hình 4.1. Cấu trúc thư mục thực hiện</small>

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.

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

<small>Hình 4.2. Ví dụ về cấu hình mysql cho Master.</small>

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.

<small>Hình 4.3. Ví dụ cấu hình file mơi trường cho node Master.</small>

Chạy docker-compose up -d để chạy docker-compose, được kết quả như hình:

<small>Hình 4.5. Kết quả sau khi chạy docker-compose up.</small> 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.

<small>Hình 4.4. Cấp quyền Replication Slave.</small>

Lấy địa chỉ ip của node Master để truy cập (trong bài này là 192.168.48.2)

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

<small>Hình 4.5. Địa chỉ ip của node Master.</small>

Lấy thơng tin file log và vị trí của node Master để cấu hình cho các node Slave.

<small>Hình 4.6. Thông tin về Master status.</small>

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.

<small>Hình 4.7. Bắt đầu tạo bản sao.</small>

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:

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

<small>Hình 5.1. Các bảng dữ liệu</small>

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

<small>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).</small> Thêm dữ liệu trong bảng students

<small>Hình 5.3. Thêm dữ liệu trong node Master</small> Kết quả nhận được trong node Slave:

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

<small>Hình 5.4. Dữ liệu được cập nhật trong node Slave</small> 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 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

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

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

</div>

×