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], -p[password]

用于连接到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 官方设计的内置机制!

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐