O Moodle é um Sistema de Gerenciamento de Aprendizagem muito conhecido que se destina a ajudar as organizações educacionais a organizar suas atividades de aprendizado online. Como você pode imaginar, dada a mudança online em 2020 causada pelo COVID-19, esses sistemas se tornaram muito populares e a carga que esses sistemas precisam lidar aumentou significativamente. Muitos administradores estão se perguntando como melhorar o desempenho do banco de dados que faz o backup da instalação do Moodle. Felizmente, se você estiver executando o Moodle 3.9 ou posterior, terá algumas opções internas que podem ajudá-lo a aumentar o desempenho. Nesta postagem do blog, mostraremos como fazer isso.
Primeiro de tudo, assumimos que você tem uma instalação do Moodle com um único nó de banco de dados. Vamos dar uma olhada nas etapas que você pode seguir para melhorar o desempenho do seu banco de dados Moodle. Claro, todas as etapas que explicamos aqui podem ser executadas manualmente. Vamos usar o ClusterControl para isso, pois valorizamos nosso tempo.
Supondo que você tenha o ClusterControl instalado, a primeira etapa será importar um nó de banco de dados existente.
A conectividade SSH usando uma chave sem senha deve estar em vigor. Nós o configuramos como usuário root com uma chave SSH localizada em /root/.ssh/id_rsa.
Como próximo passo, definimos o superusuário e sua senha. Também habilitamos as consultas information_schema (como sabemos que não temos dezenas de milhares de tabelas) e ambas as opções de autorrecuperação para que o ClusterControl possa recuperar nosso banco de dados, se necessário.
Após um breve momento nosso banco de dados aparece na lista de clusters:
Agora, podemos começar a expandir nosso cluster adicionando mais escravos. Devemos garantir que o mestre tenha os logs binários ativados. Caso contrário, pode ser feito a partir do ClusterControl. Por favor, tenha em mente que habilitar logs binários requer reinicialização, então você provavelmente quer fazê-lo em um momento em que a carga é a mais baixa e, idealmente, dando algumas dicas para os usuários de sua plataforma Moodle.
Passamos o IP (ou hostname) do nó que queremos usar como escravo. ClusterControl irá provisioná-lo com os dados do nosso nó mestre. Também poderíamos usar backups para provisionar um escravo, mas não fizemos nenhum backup usando o ClusterControl até agora.
A instalação levará alguns minutos, podemos acompanhar o progresso olhando nos logs de trabalho no ClusterControl.
Adicionar um escravo ao nosso sistema não faz diferença. Temos que dizer ao Moodle para realmente começar a usá-lo. Felizmente, o Moodle possui um recurso que permite configurar nós escravos e, em seguida, as gravações “seguras” serão redirecionadas para eles, reduzindo a carga no mestre e melhorando o desempenho geral.
No arquivo de configuração (config-dist.php) você pode ver a seção ‘readonly’ do array ‘dboptions’. Nesse local você pode definir um ou mais nós escravos que serão usados pelo Moodle para enviar o tráfego.
'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 você pode ver, podemos adicionar mais de um host escravo, permitindo-nos distribuir as leituras seguras em vários nós que você pode provisionar facilmente do ClusterControl e reduzir a carga no cluster.
Se você estiver interessado em configurações de banco de dados mais avançadas e altamente disponíveis para o Moodle, temos vários posts sobre este tópico descrevendo, entre outros, como você pode utilizar o Moodle com Galera Cluster como backend. Também descrevemos as técnicas de dimensionamento mais avançadas para o Moodle, envolvendo o balanceamento de carga do ProxySQL.
Deixe-nos saber sua opinião e experiência em trabalhar com o Moodle.