Nas últimas cinco postagens da série de blogs, abordamos a implantação de clustering/replicação (MySQL / Galera, MySQL Replication, MongoDB e PostgreSQL), gerenciamento e monitoramento de seus bancos de dados e clusters existentes, monitoramento de desempenho e integridade, como fazer sua configuração altamente disponível através do HAProxy e MaxScale e no último post, como se preparar para desastres agendando backups.
Desde o ClusterControl 1.2.11, fizemos grandes melhorias no gerenciador de configuração do banco de dados. A nova versão permite alterar parâmetros em vários hosts de banco de dados ao mesmo tempo e, se possível, alterar seus valores em tempo de execução.
Apresentamos o novo MySQL Configuration Management em uma postagem no blog Tips &Tricks, mas esta postagem será mais detalhada e cobrirá o Configuration Management no ClusterControl para MySQL, PostgreSQL e MongoDB.
Gerenciamento de configuração do ClusterControl
A interface de gerenciamento de configuração pode ser encontrada em Gerenciar> Configurações. A partir daqui, você pode visualizar ou alterar as configurações de seus nós de banco de dados e outras ferramentas que o ClusterControl gerencia. O ClusterControl importará a configuração mais recente de todos os nós e substituirá as cópias anteriores feitas. Atualmente não há dados históricos mantidos.
Se preferir editar manualmente os arquivos de configuração diretamente nos nós, você pode reimportar a configuração alterada pressionando o botão Importar.
E por último, mas não menos importante:você pode criar ou editar modelos de configuração. Esses modelos são usados sempre que você implanta novos nós em seu cluster. É claro que quaisquer alterações feitas nos modelos não serão aplicadas retroativamente aos nós já implementados que foram criados usando esses modelos.
Gerenciamento de configuração do MySQL
Como mencionado anteriormente, o gerenciamento de configuração do MySQL recebeu uma revisão completa no ClusterControl 1.2.11. A interface agora é mais intuitiva. Ao alterar os parâmetros, o ClusterControl verifica se o parâmetro realmente existe. Isso garante que sua configuração não negue a inicialização do MySQL devido a parâmetros que não existem.
Em Gerenciar -> Configurações, você encontrará uma visão geral de todos os arquivos de configuração usados no cluster selecionado, incluindo nós do balanceador de carga.
Usamos uma estrutura em árvore para visualizar facilmente os hosts e seus respectivos arquivos de configuração. Na parte inferior da árvore, você encontrará os modelos de configuração disponíveis para este cluster.
Alterando parâmetros
Suponha que precisamos alterar um parâmetro simples como o número máximo de conexões permitidas (max_connections), podemos simplesmente alterar esse parâmetro em tempo de execução.
Primeiro, selecione os hosts aos quais aplicar essa alteração.
Em seguida, selecione a seção que deseja alterar. Na maioria dos casos, você desejará alterar a seção MYSQLD. Se você quiser alterar o conjunto de caracteres padrão para o MySQL, terá que alterá-lo nas seções MYSQLD e cliente.
Se necessário, você também pode criar uma nova seção simplesmente digitando o nome da nova seção. Isso criará uma nova seção no my.cnf.
Assim que alterarmos um parâmetro e definirmos seu novo valor pressionando “Proceed”, o ClusterControl verificará se o parâmetro existe para esta versão do MySQL. Isso é para evitar que parâmetros inexistentes bloqueiem a inicialização do MySQL na próxima reinicialização.
Quando pressionarmos “proceed” para a alteração de max_connections, receberemos uma confirmação de que ela foi aplicada à configuração e definida em tempo de execução usando SET GLOBAL. Uma reinicialização não é necessária, pois max_connections é um parâmetro que podemos alterar em tempo de execução.
Agora suponha que queremos alterar o tamanho do bufferpool, isso exigiria uma reinicialização do MySQL antes de entrar em vigor:
E como esperado o valor foi alterado no arquivo de configuração, mas é necessário reiniciar. Você pode fazer isso efetuando login no host manualmente e reiniciando o processo do MySQL. Outra maneira de fazer isso no ClusterControl é usando o painel Nodes.
Reiniciando nós em um cluster Galera
Você pode executar uma reinicialização por nó selecionando “Reiniciar Nó” e pressionando o botão “Continuar”.
Ao selecionar “Initial Start” em um nó Galera, o ClusterControl esvaziará o diretório de dados do MySQL e forçará uma cópia completa desta forma. Isso é, obviamente, desnecessário para uma mudança de configuração. Certifique-se de deixar a caixa de seleção “inicial” desmarcada na caixa de diálogo de confirmação. Isso irá parar e iniciar o MySQL no host, mas dependendo da sua carga de trabalho e tamanho do bufferpool, isso pode demorar um pouco, pois o MySQL começará a liberar as páginas sujas do bufferpool do InnoDB para o disco. Estas são as páginas que foram modificadas na memória, mas não no disco.
Reiniciando nós em topologias MySQL Master-Slave
Para topologias mestre-escravo do MySQL, você não pode simplesmente reiniciar nó por nó. A menos que o tempo de inatividade do mestre seja aceitável, você terá que aplicar as alterações de configuração aos escravos primeiro e depois promover um escravo para se tornar o novo mestre.
Você pode passar pelos escravos um por um e executar um “Restart Node” neles.
Após aplicar as alterações em todos os escravos, promova um escravo para se tornar o novo mestre:
Depois que o escravo se tornar o novo mestre, você pode desligar e reiniciar o antigo nó mestre para aplicar a alteração.
Importando configurações
Agora que aplicamos a alteração diretamente no banco de dados, bem como no arquivo de configuração, levará até a próxima importação de configuração para ver a alteração refletida na configuração armazenada no ClusterControl. Se você for menos paciente, pode agendar uma importação imediata da configuração pressionando o botão “Importar”.
Gerenciamento de configuração do PostgreSQL
Para o PostgreSQL, o Configuration Management funciona um pouco diferente do MySQL Configuration Management. Em geral, você tem a mesma funcionalidade aqui:alterar a configuração, importar configurações para todos os nós e definir/alterar modelos.
A diferença aqui é que você pode alterar imediatamente todo o arquivo de configuração e gravar essa configuração de volta no nó do banco de dados.
Se as alterações feitas exigirem uma reinicialização, aparecerá um botão “Reiniciar” que permite reiniciar o nó para aplicar as alterações.
Gerenciamento de configuração do MongoDB
O Gerenciamento de Configuração do MongoDB funciona de maneira semelhante ao Gerenciamento de Configuração do MySQL:você pode alterar a configuração, importar configurações para todos os nós, alterar parâmetros e alterar modelos.
Alterar a configuração é bastante simples, usando a caixa de diálogo Alterar parâmetro (conforme descrito na seção "Alterando parâmetros"::
Uma vez alterado, você pode ver a ação pós-modificação proposta pelo ClusterControl na caixa de diálogo "Config Change Log":
Você pode então reiniciar os respectivos nós do MongoDB, um nó por vez, para carregar as alterações.
Considerações finais
Nesta postagem do blog, aprendemos sobre como gerenciar, alterar e modelar suas configurações no ClusterControl. Alterar os modelos pode economizar muito tempo quando você implantou apenas um nó em sua topologia. Como o modelo será usado para novos nós, isso evitará que você altere todas as configurações posteriormente. No entanto, para nós baseados em MySQL e MongoDB, alterar a configuração em todos os nós tornou-se trivial devido à nova interface de gerenciamento de configuração.
Como lembrete, abordamos recentemente na mesma série a implantação de clustering/replicação (MySQL / Galera, MySQL Replication, MongoDB e PostgreSQL), gerenciamento e monitoramento de seus bancos de dados e clusters existentes, monitoramento de desempenho e integridade, como tornar sua configuração altamente disponível através do HAProxy e MaxScale e no último post, como se preparar para desastres agendando backups.