O mysqlcheck é uma ferrramenta do MySQL que permite realizar operações de verificação, reparo, otimização e análise em tabelas do mecanismo MyISAM. Ela consolida funcionalidades como check, repair, analyze e optimize.
Este utilitário está incluído no pacote mysql-community-client. Em sistemas com instalação via gerenciadores como yum ou rpm, você pode localizá-lo usando rpm -qf which mysqlcheck``:
[root@servidor ~]# rpm -qf `which mysqlcheck`
mysql-community-client-5.7.16-1.el7.x86_64
Para instalações compiladas a partir do código fonte, o binário geralmente reside em /usr/local/mysql/bin/mysqlcheck.
Sintaxe de uso
O comando mysqlcheck segue estas formas principais:
mysqlcheck [opções] <nome_do_banco> [nome_da_tabela]
mysqlcheck [opções] --databases <banco1> [banco2 banco3...]
mysqlcheck [opções] --all-databases
</banco1></nome_do_banco>
Opções frequentes
-c, --check Realiza verificação na tabela
-r, --repair Executa reparo na tabela
-a, --analyze Efetua análise da tabela
-o, --optimize Otimiza a tabela (inclui -c por padrão)
-u Define o usuário do MySQL para autenticação
-p Especifica a senha do usuário
Configuração do ambiente de teste
Execute os comandos SQL abaixo para criar um banco e tabela de exemplo:
mysql> CREATE DATABASE banco_teste;
Query OK, 1 row affected (0.00 sec)
mysql> USE banco_teste;
Database changed
mysql> CREATE TABLE tabela_clientes(id INT, nome VARCHAR(20)) ENGINE=MyISAM;
Query OK, 0 rows affected (0.02 sec)
mysql> INSERT INTO tabela_clientes VALUES(1, 'Lucas'), (2, 'Mariana'), (3, 'Pedro'), (4, 'Sofia');
Query OK, 4 rows affected (0.11 sec)
Records: 4 Duplicates: 0 Warnings: 0
Exemplos práticos
Verificando uma tabela específica:
[root@servidor ~]# mysqlcheck -uadmin -psenha_segura -c banco_teste tabela_clientes;
mysqlcheck: [Warning] Using a password on the command line interface can be insecure.
banco_teste.tabela_clientes OK
Reparando uma tabela particular:
[root@servidor ~]# mysqlcheck -uadmin -psenha_segura -r banco_teste tabela_clientes;
mysqlcheck: [Warning] Using a password on the command line interface can be insecure.
banco_teste.tabela_clientes OK
Reparando um único banco de dados (quando aplicável):
[root@servidor ~]# mysqlcheck -uadmin -psenha_segura -r banco_teste;
mysqlcheck: [Warning] Using a password on the command line interface can be insecure.
banco_teste.tabela_clientes OK
Reparando múltiplos bancos de dados usando a flag --databases:
[root@servidor ~]# mysqlcheck -uadmin -psenha_segura -r --databases banco_teste outro_banco;
mysqlcheck: [Warning] Using a password on the command line interface can be insecure.
banco_teste.tabela_clientes OK
outro_banco.tabela_pedidos OK
Reparando todos os bancos de dados disponíveis:
[root@servidor ~]# mysqlcheck -uadmin -psenha_segura -r -A
ou
[root@servidor ~]# mysqlcheck -uadmin -psenha_segura -r --all-databases;
Ao executar reparos em todos os bancos, tabelas que não utilizam o meacnismo MyISAM podem gerar mensagens de erro.
É comum agendar tarefas cron com a opção -o para otimização periódica dos bancos de dados.