Ferramenta de manutenção do MySQL: mysqlcheck

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.

Tags: mysqlcheck MySQL MyISAM verificação de tabelas reparo de tabelas

Publicado em 6-27 18:45