MySQL - 3 - mysqlcheck程序

MySQL其他程序

在命令行中使用MySQL发行版中的其他工具时,一些选项是公共的,比如用户名和密码,使用方法和mysql相同,在这里统一列出,后面我们在介绍不同的工具时,只讨论个性的选项及作用,公共选项

如下所示:

长选项 短格式 说明
--host -h --host=host_name, -hhost_name 连接到指定主机上的MySQL服务
--port -P --port=port_num, -Pport_num TCP/IP连接使用的端口号
--user -u --user=user_name, -uuser_name 用于连接到MySQL服务器的用户名
--password -p --password=password, -ppassword 用于连接到MySQL服务器的密码, 可选,如果没有给出会提示用户输入
--defaults-file --defaults-file=file_name 使用指定的选项文件,如果该文件不存在, 则会发生错误
--compress -C --compress, -C 如果可能, 压缩客户端和服务器之间传输的所有信息
--protocol --protocol=(TCP | SOCKET | PIPE | MEMORY) 用于连接到服务器的传输协议,默认为TCP
--version -V --version , -V 显示版本信息并退出
--help -? --help , -? 显示帮助信息并退出

mysqlcheck - 表维护程序

作用

**mysqlcheck:**用于检查、修复、分析和优化表的表维护客户端

分析的作用是查看表的关键字分布,能够让 SQL 生成正确的执行计划(支持 InnoDB、MyISAM、NDB)。

检查的作用是检查表的完整性以及数据库表和索引是否损坏(支持 InnoDB、MyISAM、ARCHIVE、CSV)。

优化的作用是回收空间、减少碎片、提高 I/O 性能(支持 InnoDB、MyISAM、ARCHIVE)。

修复的作用是修复可能已经损坏的表(支持 MyISAM、ARCHIVE、CSV)。

注意事项

  1. 当使用 mysqlcheck 工具时,MySQL 服务器必须处于运行状态

  2. 执行过程中相应的表会被锁定 ,其他操作将会被挂起

  3. 并不是所有存储引擎都支持以上四种操作,如果遇到不支持的引擎会报出相应错误

  4. 执行表修复操作之前请先对表进行备份,在某些情况下修复操作可能会导致数据丢失

使用格式

mysqlcheck options db_name table_name ...

mysqlcheck options --databases db_name ...

mysqlcheck options --all-databases

Tips:如果db_name没有指出表名,或者使用--databases 或 --all-databases选项,那么整个数据库都会被检查。

常用选项

mysqlcheck有如下常用的选项,可以自己在命令行中指定,也可以通过前面文章讲的,通过mysqlcheck 或者 client去进行指定,通过配置文件的方式去指定

选项 说明
--analyze, -a 分析表
--auto-repair 如果检查的表有损坏,则自动修复它。 所有表都检查过之后才进行必要的修复
--check, -c 检查表中的错误。mysqlcheck的默认操作
--check-only-changed, -C 仅检查自上次检查以来更改过的表
--databases, -B --databases db_name 多个数据库名用空格隔开 处理指定数据库中的所有表
--force, -f 即使发生SQL错误也要继续
--optimize, -i 优化表
--repair, -r 执行可能进行的任务修复操作,除了唯一键
--skip-database --skip-database=db_name 不需要执行检查的数据库名(区分大小写)
--tables --tables tabel_name 多个表名用空格隔开 和--databases同时使用可以覆盖数据库名 成为表名
--use-frm 对于MyISAM表的修复操作

对于上面选项更多信息可以去查看官方文档:

MySQL :: MySQL 8.4 Reference Manual :: 6.5.3 mysqlcheck --- A Table Maintenance Program

-a 分析数据库

--check 检查错误

-r 修复数据库

可以发现我们存储引擎是InnoDB时,修复操作并不支持

修复不支持时,如果要进行修复InnoDB存储引擎的数据,要把InnoDB存储引擎的表转换成其他存储引擎。

-o 优化数据库的表

发现也是不支持InnoDB存储引擎的,但是他执行了一个重建的操作

官网建议:不要经常执行优化操作

Tips:

mysqlcheck 程序的默认功能是对数据表进行检查操作 (相当于指定选项 --check )。如果想要对表进行修复操作,可以通过**复制原来的 mysqlcheck 程序,并重命名为 mysqlrepair 并运行 mysqlrepair 即可。**还可以创建 mysqlcheck 的快捷方式,并把快捷方式命名为 mysqlrepair 然后直接运行,这时就执行的是修复操作。通过下表所示的命名方式可以改变 mysqlcheck 的默认行为:

程序名 说明
mysqlrepair 相当于选项 --repair
mysqlanalyze 相当于分析 --analyze
mysqloptimize 相当于优化 --optimize

cd /usr/bin

cp mysqlcheck mysqlrepair

Q:复制后不还是调用 mysqlcheck 吗?

A:对!完全正确!就是同一个程序!

它只是同一个二进制文件,换了个名字运行,行为就变了。

这是 MySQL 官方设计的内置机制!

相关推荐
广州灵眸科技有限公司10 小时前
xfce桌面触摸校准:基于灵眸科技EASY-EAl-Orin-Nano
数据库·windows·科技
Cloud云卷云舒12 小时前
云卷云舒:从Oracle/MySQL迁移到HaishanDB:迁移评估工具核心技术拆解
mysql·oracle·ai-native·haishandb·信创数据库替换
憧憬成为web高手13 小时前
皮卡丘靶场速通--sql 2
数据库·sql·mybatis
段一凡-华北理工大学13 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
oradh15 小时前
Oracle XTTS实现跨版本迁移和升级(Oracle 11g单库升级至19C RAC集群)
数据库·oracle·11g升级19c·xtts跨版本迁移和升级
用户713335851562415 小时前
MySQL - 事务、redo/undo 日志与 MVCC
mysql
z1234567898616 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
程序猿DD16 小时前
一个 API Key,统一调用大模型、生图和联网搜索
数据库·网关
java_logo16 小时前
Docker Compose 部署 ClickHouse:快速搭建高性能列式数据库
数据库·clickhouse·docker·列式数据库·轩辕镜像·高性能数据库·clickhouse部署教程
用户713335851562416 小时前
MySQL - InnoDB 的 Buffer Pool
mysql