MySQL工具包中的其他程序

虽然有很多不同的程序,但有些选项是公共的,比兔用户名和密码,使用方法和MySQL相同,

在这里统一列出,后面我们介绍不同的工具时,只讨论个性的选项以及作用

以下是常用的MySQL程序:

|---------------|---------------------------------------------------------------------------------|
| 程序名 | 作用 |
| mysqld | MySQL的守护进程即MySQL服务器,mysqld是服务端的程序,需要使用mysql服务器mysqld一定要在运行状态 |
| mysql | mysql是一个客户端程序,用于交互输入SQL语句或批处理模式从文件执行SQL的命令行工具 |
| mysqlcheck | 用于检查,修复,分析和优化表的表客户端工具 |
| mysqldump | 将MySQL数据库转储到SQL,文本或者XML文件中的客户端 |
| mysqlimport | 将文本文件导入到表的客户端工具(备份和恢复) |
| mysqladmin | 执行管理操作的客户端,例如创建或删除数据库,重新加载授权表,将表刷新到磁盘以及重新打开日志文件,mysqladmin还可以用于从服务器检索版本,进程和状态信息 |
| mysqlshow | 显示数据库,表,列和索引信息的客户端 |
| mysqldumpslow | 用于读取和汇总慢速查询日志内容的实用程序 |
| mysqlbinlog | 从二进制日志中读取SQL语句的使用程序,mysqlbinlog文件中包含的已执行SQL语句的日志,可用于从崩溃中恢复数据 |
| mysqlslap | 客户端负载工具,模拟多个客户端同时访问MySQL服务器,并报告每个阶段的使用时间。 |

公共选项如下:

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

1.mysqlcheck - 表维护程序:

mysqlcheck客户端用于执行表维护,可以对表进行分析,检查,优化或者修复操作。

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

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

3.优化的作用是回收空间,减少碎片,提高I/O(支持InnoDB,MyISAM,ARCHIVE)

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

注意:

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

2.执行过程中,有些表会被锁定,所以这时其他操作将会被挂起。

3.并不是所有储存引擎都会支持上面四种操作,如果遇到不支持的就会出错。

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

使用方法:

1.mysqlcheck [options] db_name [tbl_name...];

db_name指数据库的名字,必须要指定,后面的表名可以指定也可以不指定,不指定就是操作该数据库下的所有表。

2.mysqlcheck [options] --databases db_name;

该操作可以操作多个数据库,后面跟的是多个需要操作的数据库名字。

3.mysqlcheck [options] --all-databases;

操作所有数据库。

mysqlcheck有如下常用选项【options】,可以在命令行中指定,也可以在选项文件中通过[mysqlcheck]和[client]组进行指定。

|---------------|-------------------------|
| 选项 | 说明 |
| --analyze,-a | 分析表 |
| --check,-c | 检查表中的错误,mysqlcheck的默认操作 |
| --optimize,-o | 优化表 |
| --repair,-r | 执行可能进行的任务修复操作,除了唯一键 |

优化操作中,其实执行的是一个重建操作,官网中也建议不要经常去执行优化操作。

InnoDB存储引擎是不支持修复操作的,如果要修复,就要把InnoDB存储引擎转化为MyIsam存储引擎

特殊操作 :

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

|---------------|-------------------------|
| 程序名 | 说明 |
| mysqlrepair | 默认行为是修复,相当于选项--repair |
| mysqlanalyze | 默认行为是修复,相当于分析--analyze |
| mysqloptimize | 默认行为是修复,相当于优化--optimize |

2.Mysqldump-数据库备份程序:

作用:mysqldump客户端程序可以执行逻辑备份并生成一份SQL语句,其中包含原始数据和表的定义以及表中的数据,以便实现对数据库的简单备份和复制,mysqldump命令可以生成CSV,或者XML格式的文件。

注意:

1.转储表时必须要有SELECT权限。

2.转储视图时必须要有SHOW VIEW权限。

3.转储触发器时必须要有TRIGGER权限。

4.如果没有使用--single-transaction选项时必须要有LOCK TABLES权限。

5.如果没有使用--no-tablespaces选项时必须要有PROCESS权限。

6.重新导入转储文件时,也需要相应的权限。

7.由于mysqldump是逐渐转储数据,所以不太适用于大数据的转储和导入。

使用方法:

mysqldump的方法通常有以下使用,可以转储一个或多个表和数据库,如下图所示:

mysqldump [options] db_name [tbl_name...]

mysqldump [options] --databases db_name...

mysqldump [options] --all-databases

常用选项:

mysqldump有如下选项,可以在命令行中指定,也可以在选项文件中通过[mysqldump]和[client]组进行指定。

|---------------------|-------------------------------------------|
| 选项 | 说明 |
| --add-drop-database | 在每个CREATE DATABASE语句之前添加DROP DATABASE语句 |
| --add-drop-table | 在每个CREATE TABLE语句之前添加DROP TABLE |
| --add-drop-trigger | 在每个CREATE TRIGGER语句之前添加DROP TRIGGER语句 |
| --databases,-B | --databases=db_name多个数据库名用空格隔开 |
| --comments,-i | 添加注释到转储文件中 |
| --compact | 紧凑格式输出 |
| --ignore-table | --ignore-table=db_name.table_name多个表用空格分开 |
| --no-create-db,-n | 不要生成CREATE DATABASE语句 |
| --no-create-info,-t | 不要为每个转储的表生成CREATE TABLE语句 |
| --no-data,-d | 不转储表的内容 |
| --triggers | 转储每个表中的触发器 |
| --xml,-X | 异XML格式输出 |

示例:

test_ab:是指定的数据库名字

/root/dump.sql:导出的路径地址。

可以看到这个sql文件已经成功导出,我们可以打开看看:

mysqladmin-mysql服务管理程序

mysqladmin是一个执行管理操作的客户端,可以用来检查服务器的配置和当前状态,以及创建和删除数据库等。(使用mysqladmin的用户必须要有管理员权限)

使用方法:

mysqladmin [options] [command [command-arg] ]...

常用选项:

mysqladmin的常用选项参考公共选项那一部分,可以在命令行中指定,也可以在选项文件中通过[mysqladmin] 和[client]组进行指定。

语法中command表示命令,有些命令后面需要跟上一个参数,mysqladmin的常用命令:

1.version:显示来自服务器的版本信息。

2.status:显示简短的服务器状态消息。

uptime:mysql已经运行的秒数。

Threads:活动线程(客户端)的数量

Questions:自服务器启动以来客户端问题(查询)数。

Slow queries:慢SQL的查询数。

Opens:服务器已打开的表数。

Flush tables:服务器已执行flush-*,refresh和reload命令的数量。

Open tables:当前打开的表数。

3.password new_password

设置新密码

1.如果密码中有空格,则必须要用双引号把密码括起来。

password后面可以省略密码,mysqladmin会在之后提示输入新密码。

password作为最后一个command时才能省略密码值,否则下一个参数将作为密码值。

4.processlist:显示活动服务器线程的列表。

5.kill id,id....

终止服务器线程,如果给出多个线程ID值,则列表中不能有空格。

默认mysql服务器可以维护150个活动连接,如果连接被用完,那么可以通过KILL指定去手动结束休眠时间最常的线程。

mysqlshow-显示数据库,表和列的信息:

mysqlshow可以快速查看数据库,以及数据库中表的列和其中的索引信息。

使用方法:

mysqlshow [数据库名] [表名] [列名] ;

对应的数据库名和表面还有列名可以用通配符*,?,%和_代替。

如果不指定数据库,查询的就是所有的数据库名的列表信息。

如果不指定表,查询的就是数据库中所有匹配的表信息。

如果不指定列名,则查询的就是表中的所有列信息。

注意:前提是当前的权限可以访问的数据库,表和列的信息。

常用选项:

mysqlshow的常用选项可以参考公共选项部分,可以在命令行中指定,也可以通过选项文件[mysqlshow]和[client]组中进行指定。

mysqldumpslow-总结慢查询日志:

在平时使用mysql时,我们经常使用查询语句,但是有些查询语句执行时间非常长,当执行查询语句的时候超过阈值的时候,就把这个叫做慢查询 ,慢查询的相关信息被日志记录起来,这个日志就叫慢查询日志mysqldumpslow可以解析慢查询日志文件并汇总其中内容

我们也可以查看慢查询的时间(阈值),通过:

当,查询的时间大于10秒并且开启了慢查询日志功能,这条sql就会被记录在慢查询日志中。

使用方法:

mysqldumpslow [options] [log_file...]

如果有慢查询的话,显示如下:

mysqldumpslow会将相似查询的分组并显示摘要输出,一般会把数字用"N"代替,字符串用"S"代替。

常用选项文件:

在使用-s,sort_type选项文件时,有以下的可选值:

t,at:按查询时间或者平均查询时间进行排序。

l,al:按锁占用时间或者平均锁占用时间排序。

r,ar:按照发送行数或者平均发送行数进行排序。

c:按照记数排序。

mysqlbinlog处理二进制日志文件:

当我们平时对数据库的修改时,或者对数据进行增删改时,都会被描述成一个'事件',每个'事件'都会以二进制的形式被保存到一个日志文件中,这个文件就是服务器中的二进制日志文件,又称Binary log或者binlog。

mysqlbinlog的作用:

以文本的形式读取二进制文本中的内容。

注意:保存在默认数据目录中:

Linux下的默认目录:/var/lib/mysql

Windows下的默认目录:C:\ProgramData\MySQL\MySQL Server 8.0\Data

这些binlog日志文件保存了具体的内容。

这里如果打开一个文件显示如下:

常用选项:

mysqlbinlog有下面一些选项文件,可以通过命令行或者通过选项文件进行指定,在选项文件中通过[mysqlbinlog]或[client]组下进行指定:

mysqlslap-负载仿真客户端

作用:

mysqlslap是一个诊断程序,用于模拟mysql服务器的客户端,并报告每个阶段的时间,就好比多个客户端正在访问服务器一样。

使用方法:

mysqlslap可以使用以下语法:

mysqlslap [options];

注意事项:

1.可以通过--create或--query选项,指定包含SQL语句的字符串和包含sql语句的文件

2.如果指定一个包含sql语句的文件,默认情况每行必须包含一条语句

3.如果要把一条语句分为多行书写,可以用--delimiter选项指定不同的分隔符。

4.不能在文件中包含注释,因为mysqlslap不能解析注释。

5.mysqlslap运行时分为三个阶段:

5.1创建测试数据阶段,创建用与测试的库,表或者数据,这个阶段使用单个客户连接

5.2运行负载测试阶段,这个阶段可以使用许多客户端连接。

5.3清理阶段,执行删除表,断开连接层,断开连接等操作,这个阶段使用单个客户端连接。

示例:

注意:图片打错了,应该是50个客户端,每个客户端发起200条语句。