Moodle es un sistema de gestión de aprendizaje muy conocido cuyo objetivo es ayudar a las organizaciones educativas a organizar sus actividades de aprendizaje en línea. Como puede imaginar, dado el cambio en línea en 2020 causado por el COVID-19, estos sistemas se volvieron muy populares y la carga que tienen que manejar ha aumentado significativamente. Muchos administradores se preguntan cómo mejorar el rendimiento de la base de datos que respalda la instalación de Moodle. Afortunadamente, si está ejecutando Moodle 3.9 o posterior, tiene algunas opciones integradas que pueden ayudarlo a mejorar el rendimiento. En esta publicación de blog, le mostraremos cómo hacerlo.
Primero que nada, asumimos que tiene una instalación de Moodle con un solo nodo de base de datos. Echemos un vistazo a los pasos que puede seguir para mejorar el rendimiento de su base de datos de Moodle. Por supuesto, todos los pasos que explicamos aquí se pueden realizar a mano. Vamos a usar ClusterControl para eso, ya que valoramos nuestro tiempo.
Suponiendo que tenga instalado ClusterControl, el primer paso será importar un nodo de base de datos existente.
La conectividad SSH mediante una clave sin contraseña debe estar en su lugar. Lo tenemos configurado como usuario root con una clave SSH ubicada en /root/.ssh/id_rsa.
Como siguiente paso definimos el superusuario y su contraseña. También habilitamos consultas de esquema de información (como sabemos que no tenemos decenas de miles de tablas) y ambas opciones de recuperación automática para que ClusterControl pueda recuperar nuestra base de datos si es necesario.
Después de un breve momento, nuestra base de datos muestra en la lista de clústeres:
Ahora, podemos comenzar a escalar nuestro clúster agregando más esclavos. Debemos asegurarnos de que el maestro tenga habilitados los registros binarios. Si no, se puede hacer desde el ClusterControl. Tenga en cuenta que habilitar los registros binarios requiere reiniciar, por lo que probablemente desee hacerlo en un momento en que la carga sea menor e, idealmente, para informar a los usuarios de su plataforma Moodle.
Pasamos la IP (o hostname) del nodo que queremos usar como esclavo ClusterControl lo aprovisionará con los datos de nuestro nodo maestro. También podríamos usar copias de seguridad para aprovisionar un esclavo, pero hasta ahora no hemos realizado ninguna copia de seguridad con ClusterControl.
La instalación tardará un par de minutos, podemos seguir el progreso mirando en los registros de trabajo en ClusterControl.
Agregar un esclavo a nuestro sistema no hace ninguna diferencia. Tenemos que decirle a Moodle que realmente comience a usarlo. Afortunadamente, Moodle tiene una función que le permite configurar nodos esclavos y luego las escrituras "seguras" se redirigirán a ellos, lo que reducirá la carga en el maestro y mejorará el rendimiento general.
En el archivo de configuración (config-dist.php) puede ver la sección 'solo lectura' de la matriz 'dboptions'. En ese lugar, puede definir uno o más nodos esclavos que Moodle utilizará para enviar el tráfico.
'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
],
[...],
],
Como puede ver, podemos agregar más de un host esclavo, lo que nos permite distribuir las lecturas seguras en varios nodos que puede aprovisionar fácilmente desde ClusterControl y reducir la carga en el clúster.
Si está interesado en configuraciones de base de datos más avanzadas y de alta disponibilidad para Moodle, tenemos varias publicaciones de blog sobre este tema que describen, entre otras cosas, cómo puede utilizar Moodle con Galera Cluster como backend. También describimos las técnicas de escalado más avanzadas para Moodle, que involucran el balanceo de carga de ProxySQL.
Háganos saber sus pensamientos y experiencia sobre el trabajo con Moodle.