mysqlcheck修复工具
mysqlcheck工具可以检查、修复、优化和分析MyISAM引擎的表,实际上是集成了Mysql中的check、repair、analyze、tmpimize的功能。
mysqlcheck共军存在于mysql-community-client包。如果是yum或rpm安装可以使用rpm -qf `which mysqlcheck`查看到:
[root@youxi1 ~]# rpm -qf `which mysqlcheck` mysql-community-client-5.7.16-1.el7.x86_64
如果是源码安装,应该可以找到/usr/local/mysql/bin/mysqlcheck(?)。
(1).mysqlcheck语法
mysqlcheck [选项] <数据库名> [表名]
mysqlcheck [选项] --databases <数据库名1> [数据库名2 数据库名3...]
mysqlcheck [选项] --all-datbases
(2).常用选项
-c,--check 检查表 -r,--repair 修复表 -a,--analyze 分析表 -o,--tmpimize 优化表,默认包含-c选项 -u 以什么mysql用户进行操作 -p 用户的密码
(3).创建实验环境
mysql> create database test_db; Query OK, 1 row affected (0.00 sec) mysql> use test_db; Database changed mysql> create table user_tb(id int,name varchar(20)) engine=MyISAM; Query OK, 0 rows affected (0.02 sec) mysql> insert into user_tb values(1,'张三'),(2,'李四'),(3,'王五'),(4,'赵六'); Query OK, 4 rows affected (0.11 sec) Records: 4 Duplicates: 0 Warnings: 0
(4).实例
检查指定的表
[root@youxi1 ~]# mysqlcheck -uroot -p123456 -c test_db user_tb; mysqlcheck: [Warning] Using a password on the command line interface can be insecure. test_db.user_tb OK
修复指定的表
[root@youxi1 ~]# mysqlcheck -uroot -p123456 -r test_db user_tb; mysqlcheck: [Warning] Using a password on the command line interface can be insecure. test_db.user_tb OK
修复指定数据库
[root@youxi1 ~]# mysqlcheck -uroot -p123456 -r test_db; //只有一个数据库的时候 mysqlcheck: [Warning] Using a password on the command line interface can be insecure. test_db.user_tb OK [root@youxi1 ~]# mysqlcheck -uroot -p123456 -r --databases test_db; //有多个数据库的时候 mysqlcheck: [Warning] Using a password on the command line interface can be insecure. test_db.user_tb OK
修复所有数据库
[root@youxi1 ~]# mysqlcheck -uroot -p123456 -r -A [root@youxi1 ~]# mysqlcheck -uroot -p123456 -r --all-databases;
修复所有数据库时,有部分表可能不是MyISAM引擎,会报错。
有使用也会用定时计划任务,使用-o选项定时优化数据库。