当前位置: 首页 > news >正文

MySQL工具包中的其他程序

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

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

以下是常用的MySQL程序:

程序名作用

mysqld

MySQL的守护进程即MySQL服务器,mysqld是服务端的程序,需要使用mysql服务器mysqld一定要在运行状态
mysqlmysql是一个客户端程序,用于交互输入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条语句。

http://www.xdnf.cn/news/1295623.html

相关文章:

  • 从概率填充到置信度校准:GPT-5如何从底层重构AI的“诚实”机制
  • 树莓派 4B 上部署 Minecraft PaperMC 1.20.x 的一键部署脚本
  • ASQA: 面向模糊性事实问题的长格式问答数据集与评估框架
  • C#WPF实战出真汁02--登录界面设计
  • 利用 Python 爬虫按图搜索 1688 商品(拍立淘)实战指南
  • Windows批处理脚本自动合并当前目录下由You-get下载的未合并的音视频文件
  • LeetCode 分类刷题:2302. 统计得分小于 K 的子数组数目
  • 我的第一个开源项目-jenkins集成k8s项目
  • 开疆智能Ethernet转ModbusTCP网关连接UR机器人配置案例
  • 区块链 + 域名Web3时代域名投资的新风口(上)
  • 《算法导论》第 25 章:所有结点对的最短路径问题
  • 常见的tls检测的绕过方案
  • Mybatis学习笔记(二)
  • Transformer之多头注意力机制和位置编码(二)
  • vue更改style
  • 双椒派E2000D网络故障排查指南
  • 【Linux】库制作与原理
  • 2025年5月架构设计师综合知识真题回顾,附参考答案、解析及所涉知识点(三)
  • 苹果正计划大举进军人工智能硬件领域
  • 解决EKS中KEDA访问AWS SQS权限问题:完整的IRSA配置指南
  • 能源行业数字化转型:边缘计算网关在油田场景的深度应用
  • 支持pcm语音文件缓存顺序播放
  • 从感知到执行:人形机器人低延迟视频传输与多模态同步方案解析
  • Python 类元编程(导入时和运行时比较)
  • 【Linux学习|黑马笔记|Day3】root用户、查看权限控制信息、chmod、chown、快捷键、软件安装、systemctl、软连接、日期与时区
  • 17. 如何判断一个对象是不是数组
  • 技术速递|使用 AI Toolkit 构建基于 gpt-oss-20b 的应用程序
  • 工业元宇宙:迈向星辰大海的“玄奘之路”
  • 【Linux】常用命令(三)
  • Python 元类基础:从理解到应用的深度解析