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条语句。