Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Verifique e otimize o banco de dados MySQL automaticamente com Crontab/Cron

MySQL é um sistema de banco de dados gratuito e poderoso muito popular. Mas mesmo em grandes bancos de dados, as tabelas podem ficar fragmentadas com sobrecarga devido à atualização contínua ou operação de exclusão e inserção nos dados armazenados no banco de dados. Além disso, também é possível que os bancos de dados sejam corrompidos. Assim, realizar verificação de integridade no banco de dados e otimizar o servidor MySQL regularmente é uma tarefa importante.

É um pouco problemático se os administradores de banco de dados tiverem que fazer login no servidor ou iniciar o phpMyAdmin para otimizar os bancos de dados um por um ou tabela por tabela manualmente. Às vezes, o administrador de banco de dados pode simplesmente esquecer de fazer o trabalho ou definir a frequência de otimização para tempos menores. É recomendado que todas as tabelas nos bancos de dados MySQL sejam verificadas pelo menos uma vez por dia em um servidor ocupado.

É possível automatizar a otimização do processo MySQL usando a função crontab no Linux/Unix/CentOS/FreeBSD. O trabalho cron para verificar e otimizar bancos de dados MySQL pode ser criado usando o utilitário cliente mysqlcheck na instalação do MySQL. O cliente mysqlcheck pode verificar, reparar, otimizar e analisar tabelas no banco de dados MySQL.

Para criar um novo trabalho cron, faça login no servidor como root ou qualquer outro usuário e edite o arquivo crontab (na maioria dos sistemas operacionais, crontab -e irá abrir o arquivo crontab no editor de texto padrão) para adicionar a seguinte linha de texto. Para usuários que usam cPanel, clique em “Cron job”, onde você pode configurar o crontab em intervalos diários, horários e outros. Os webmasters experientes também podem configurar um arquivo crontab em rc.hourly ou rc.daily ou outro diretório cron. Observe que se você efetuar login como um usuário MySQL ou normal sem privilégios de acesso a todos os bancos de dados, não será possível otimizar todos os bancos de dados, a menos que o ID do usuário e a senha para root sejam especificados como no exemplo abaixo.
0 1 * * * mysqlcheck -Aao --auto-repair -u root -p[password] > /dev/null

A instrução acima tem a sintaxe semelhante a “mysqlcheck [options] –all-databases”, onde o parâmetro –all-databases é a ação padrão se nenhum banco de dados for especificado, portanto, pode ser omitido. O comando executará o cliente mysqlcheck para analisar e otimizar automaticamente todos os bancos de dados à 1 da manhã todos os dias. Observe que não há espaço entre -p e sua senha de root. Você pode alterar o tempo de execução de sua preferência e também alterar as opções do comando mysqlcheck. Se você deseja apenas verificar e otimizar determinados bancos de dados ou determinadas tabelas sem o banco de dados, use a seguinte sintaxe:
mysqlcheck [options] db_name [tables]
mysqlcheck [options] --databases DB1 [DB2 DB3...]

Você pode querer remover a opção –auto-repair do comando acima, pois uma operação de reparo de tabela pode causar perda de dados em algumas circunstâncias, a operação devido a causas incluem, mas não se limitam a erros do sistema de arquivos. Para aqueles que mudaram o conjunto de caracteres e agrupamento de bancos de dados MySQL também podem precisar usar a opção –default-character-set. Mais informações sobre todos os switches e opções disponíveis podem ser encontradas aqui.