Moodle е много добре позната система за управление на обучението, която има за цел да помогне на образователните организации да организират своите онлайн учебни дейности. Както можете да си представите, предвид онлайн промяната през 2020 г., причинена от COVID-19, подобни системи станаха много популярни и натоварването, с което трябва да се справят, се е увеличило значително. Много администратори се чудят как да подобрят производителността на базата данни, която архивира инсталацията на Moodle. За щастие, ако използвате Moodle 3.9 или по-нова версия, имате някои вградени опции, които могат да ви помогнат да повишите производителността. В тази публикация в блога ще ви покажем как да го направите.
Първо, предполагаме, че имате инсталация на Moodle с един възел на базата данни. Нека да разгледаме стъпките, които може да искате да предприемете, за да подобрите производителността на вашата база данни Moodle. Разбира се, всички стъпки, които обясняваме тук, могат да бъдат извършени на ръка. Ще използваме ClusterControl за това, тъй като ценим времето си.
Ако приемем, че имате инсталиран ClusterControl, първата стъпка ще бъде да импортирате съществуващ възел на базата данни.
SSH връзката с помощта на ключ без парола трябва да е на място. Имаме го настроен като root потребител със SSH ключ, намиращ се в /root/.ssh/id_rsa.
Като следващата стъпка дефинирахме суперпотребителя и неговата парола. Активирахме също заявките за information_schema (тъй като знаем, че нямаме десетки хиляди таблици) и двете опции за автоматично възстановяване, така че ClusterControl ще може да възстанови нашата база данни, ако е необходимо.
След кратък момент нашата база данни се показва в списъка с клъстери:
Сега можем да започнем да мащабираме нашия клъстер, като добавим още подчинени устройства. Трябва да се уверим, че главният елемент има активирани двоични регистрационни файлове. Ако не, може да се направи от ClusterControl. Моля, имайте предвид, че активирането на двоични регистрационни файлове изисква рестартиране, така че вероятно искате да го направите във време, когато натоварването е най-ниско и в идеалния случай да предупредите потребителите на вашата платформа Moodle.
Предадохме IP (или име на хост) на възела, който искаме да използваме като роб. ClusterControl ще го предостави с данните от нашия главен възел. Бихме могли също да използваме резервни копия, за да осигурим подчинен, но досега не сме направили никакви резервни копия с помощта на ClusterControl.
Инсталацията ще отнеме няколко минути, можем да проследим напредъка, като погледнем в регистрите на заданията в ClusterControl.
Добавянето на подчинен към нашата система не прави никаква разлика. Трябва да кажем на Moodle всъщност да започне да го използва. За щастие, Moodle има функция, която ви позволява да конфигурирате подчинени възли и след това „безопасните“ записи ще бъдат пренасочени към тях, намалявайки натоварването на главния и подобрявайки цялостната производителност.
В конфигурационния файл (config-dist.php) можете да видите секцията „само за четене“ на масива „dboptions“. На това място можете да дефинирате един или повече подчинени възли, които ще бъдат използвани от Moodle за изпращане на трафика.
'readonly' => [ // Set to read-only slave details, to get safe reads
// from there instead of the master node. Optional.
// Currently supported by pgsql and mysqli variety classes.
// If not supported silently ignored.
'instance' => [ // Readonly slave connection parameters
[
'dbhost' => '10.0.0.132',
'dbport' => '', // Defaults to master port
'dbuser' => '', // Defaults to master user
'dbpass' => '', // Defaults to master password
],
[...],
],
Както можете да видите, можем да добавим повече от един подчинен хост, което ни позволява да разпределим безопасното четене в множество възли, които можете лесно да предоставите от ClusterControl и да намалите натоварването на клъстера.
Ако се интересувате от по-усъвършенствани, високодостъпни настройки на база данни за Moodle, имаме няколко публикации в блога по тази тема, описващи, наред с другото, как можете да използвате Moodle с Galera Cluster като бекенд. Описахме и по-усъвършенстваните техники за мащабиране за Moodle, включващи балансиране на натоварването на ProxySQL.
Кажете ни вашите мисли и опит относно работата с Moodle.