Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Những thách thức khi mở rộng quy mô cơ sở dữ liệu Moodle MySQL

Moodle, một Hệ thống Quản lý Học tập mã nguồn mở, ngày càng trở nên phổ biến hơn vào năm ngoái khi đại dịch buộc phải khóa cứng và phần lớn các hoạt động giáo dục đã chuyển từ các trường học, cao đẳng và đại học sang các nền tảng trực tuyến. Cùng với đó, các nhóm CNTT đã đặt ra một áp lực để đảm bảo rằng các nền tảng trực tuyến đó sẽ có thể chịu tải cao hơn nhiều so với những gì họ từng trải qua. Các câu hỏi đã được đặt ra - làm thế nào để một nền tảng Moodle có thể được mở rộng để xử lý lượng tải tăng lên? Mặt khác, bản thân việc mở rộng ứng dụng không phải là một kỳ công khó thực hiện, nhưng mặt khác, cơ sở dữ liệu lại là một con vật khác. Cơ sở dữ liệu, giống như tất cả các dịch vụ nhà nước, nổi tiếng là khó mở rộng quy mô. Trong bài đăng blog này, chúng tôi muốn thảo luận về một số thách thức bạn sẽ gặp phải khi mở rộng cơ sở dữ liệu Moodle.

Cơ sở dữ liệu Moodle mở rộng quy mô - Thử thách

Nguồn gốc chính của các vấn đề là di sản - Moodle, giống như nhiều cơ sở dữ liệu, xuất phát từ một nền cơ sở dữ liệu duy nhất và do đó, nó đi kèm với một số kỳ vọng liên quan đến môi trường như vậy. Điển hình là bạn có thể thực hiện hết giao dịch này đến giao dịch khác và giao dịch thứ hai sẽ luôn nhìn thấy kết quả của giao dịch đầu tiên. Điều này không nhất thiết phải xảy ra trong hầu hết các môi trường cơ sở dữ liệu phân tán. Sao chép không đồng bộ không hứa hẹn. Bất kỳ giao dịch nào cũng có thể bị mất trong quá trình này. Chỉ cần master gặp sự cố là đủ trước khi dữ liệu giao dịch được chuyển đến các nô lệ. Sao chép bán đồng bộ mang lại lời hứa về an toàn dữ liệu nhưng nó không hứa hẹn bất cứ điều gì khác. Các nô lệ vẫn có thể bị tụt hậu và mặc dù dữ liệu được lưu trữ trên bộ lưu trữ liên tục dưới dạng nhật ký chuyển tiếp và cuối cùng, nó sẽ được áp dụng cho tập dữ liệu, điều đó không có nghĩa là nó đã được áp dụng. Bạn có thể truy vấn nô lệ của mình và không thấy dữ liệu bạn vừa ghi cho chủ.

Ngay cả các cụm như Galera theo mặc định không đi kèm với bản sao đồng bộ thực sự - khoảng cách được giảm đáng kể so với hệ thống sao chép nhưng nó vẫn ở đó và SELECT ngay lập tức được thực thi sau khi viết trước đó có thể không thấy dữ liệu bạn vừa lưu trữ trong cơ sở dữ liệu vì CHỌN của bạn đã được chuyển đến một nút Galera khác với lần ghi trước đó của bạn.

Có một số cách giải quyết bạn có thể sử dụng để mở rộng cơ sở dữ liệu Moodle MySQL. Đối với người mới bắt đầu, nếu bạn sử dụng thiết lập sao chép, bạn có thể sử dụng tính năng “đọc an toàn” từ Moodle. Chúng tôi đã đề cập điều đó trong một trong những blog trước đây của chúng tôi. Điều này sẽ dẫn đến tình huống trong đó Moodle sẽ quyết định bài viết nào sẽ được phân phối trên các nô lệ và bài viết nào sẽ đánh chủ.

Một mặt là tốt - bạn có thể an toàn khi sử dụng một số nô lệ được đính kèm cho cái chính, cho phép bạn giảm tải cái chính ở một mức độ nào đó ít nhất. Mặt khác, nó không phải là lý tưởng vì nó chỉ là một tập hợp con của các SELECT mà bạn có thể gửi đến các nô lệ. Tất nhiên, tất cả phụ thuộc vào từng trường hợp chính xác nhưng bạn có thể mong đợi rằng bản chính sẽ vẫn là một nút thắt cổ chai liên quan đến tải.

Cách tiếp cận thay thế có thể là sử dụng Cụm Galera và phân phối tải đồng đều trên tất cả các nút.

Riêng điều này không đủ để xử lý tất cả các lần đọc sau -write sự cố nhưng may mắn thay, bạn có thể sử dụng biến wsrep-sync-wait có thể được sử dụng để đảm bảo rằng các kiểm tra nhân quả được đặt ra và cụm hoạt động giống như một cụm đồng bộ thực sự. Sử dụng cài đặt này sẽ cho phép bạn đọc an toàn từ tất cả các nút Galera của bạn.

Tất nhiên, việc thực thi kiểm tra quan hệ nhân quả sẽ ảnh hưởng đến hiệu suất của Galera nhưng nó vẫn có ý nghĩa vì bạn có thể hưởng lợi từ việc đọc nhiều nút Galera cùng một lúc. Từ đó, việc mở rộng các lần đọc với Cụm Galera khá dễ dàng - bạn chỉ cần thêm nhiều nút Galera hơn vào cụm. Cân bằng tải phải được cấu hình lại để nhận chúng và sử dụng làm mục tiêu bổ sung cho các lượt đọc, cho phép bạn mở rộng quy mô đến thậm chí hơn 10 nút người đọc.

Bạn phải lưu ý rằng việc thêm các nút bổ sung, bản sao hoặc Galera, điều đó không thực sự quan trọng, nó sẽ thêm một số phức tạp vào các hoạt động trên cụm. Bạn phải đảm bảo rằng các nút của bạn được giám sát đúng cách, bạn có các bản sao lưu đang hoạt động, quá trình sao chép đang hoạt động đúng cách và bản thân cụm ở trạng thái chính xác. Đối với môi trường nhân bản, chuyển đổi dự phòng phải được xử lý theo cách này hay cách khác và đối với cả Galera và sao chép, bạn có thể muốn xây dựng lại các nút trong cụm nếu bạn phát hiện bất kỳ loại dữ liệu nào không nhất quán trên toàn cụm. May mắn thay, ClusterControl có thể giúp bạn giải quyết những thách thức đó một cách đáng kể.

Cách ClusterControl giúp quản lý Cụm cơ sở dữ liệu Moodle MySQL

Trước hết, nếu toàn bộ cụm bị sập, ClusterControl sẽ thực hiện tự động khôi phục cụm - miễn là tất cả các nút đều có sẵn, ClusterControl sẽ bắt đầu quá trình khôi phục cụm:

Sau một chút thời gian, toàn bộ cụm sẽ trực tuyến trở lại.

ClusterControl đi kèm với một tập hợp các tùy chọn quản lý:

Bạn có thể mở rộng cụm bằng cách thêm các nút hoặc nô lệ sao chép. Bạn thậm chí có thể tạo toàn bộ cụm nô lệ sẽ sao chép khỏi cụm chính.

Có thể dễ dàng thiết lập lịch sao lưu sẽ được thực thi bởi ClusterControl. Bạn thậm chí có thể thiết lập xác minh sao lưu tự động.

Bạn có thể muốn giám sát cụm cơ sở dữ liệu của mình. ClusterControl cho phép bạn làm điều đó:

Như bạn có thể thấy, ClusterControl là một nền tảng tuyệt vời có thể được sử dụng để giảm độ phức tạp của việc mở rộng quy mô và quản lý cơ sở dữ liệu Moodle MySQL. Chúng tôi rất muốn nghe về trải nghiệm của bạn với việc mở rộng Moodle và cơ sở dữ liệu của nó nói riêng.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách hoạt động của hàm LOWER () trong MySQL

  2. MySQL Fire Trigger cho cả Chèn và Cập nhật

  3. Tại sao kết quả từ một truy vấn SQL không trở lại theo thứ tự tôi mong đợi?

  4. MySQL:ALTER TABLE nếu cột không tồn tại

  5. Nhập xuất khẩu dòng lệnh cơ sở dữ liệu mysql siêu nhanh