文章目录
- 1、总览
- 2、mysqlcheck - 表维护程序
- 1、作用
- 2、注意事项
- 3、语法
- 4、命令选项
- 下面每块都大致有这四个部分
- 3、Mysqldump - 数据库备份程序
- 4、mysqladmin - MySQL 服务器管理程序
- 5、mysqlshow - 显示数据库、表和列信息
- 6、mysqldumpslow - 总结慢查询日志文件
- 7、mysqlbinlog - 处理二进制日志文件
- 8、mysqlslap - 负载仿真客户端
1、总览
下面各种工具包都是bash命令。各个工具都包含作用、注意事项、语法、选项四个部分。各种工具的命令选项都可以在官方文档中查看。
MySQL 8.4
2、mysqlcheck - 表维护程序
1、作用
mysqlcheck客户端用于执行表维护,可以对表进行:分析、检查、优化或修复操作。
• 分析的作用是查看表的关键字分布,能够让 sql 生成正确的执行计划(支持 InnoDB,MyISAM,NDB)
• 检查的作用是检查表的完整性以及数据库表和索引是否损坏(支持 InnoDB,MyISAM,ARCHIVE,CSV)
• 优化的作用是回收空间、减少碎片、提高I/O(支持 InnoDB,MyISAM,ARCHIVE)
• 修复的作用是修复可能已经损坏的表(支持 MyISAM,ARCHIVE,CSV)
2、注意事项
- 当使用mysqlcheck⼯具时,MySQL服务器必须在运行状态
- 执行过程中相应的表将会被锁定,所以其他的操作将会被挂起
- 并不是所有的存储引擎都支持以上四种操作,如果遇到不支持的引擎会报出相应的错误
- 执行表修复操作之前对表进行备份,在某些情况下可能会导致数据丢失。
3、语法
mysqlcheck [options] db_name [tbl_name ...]
mysqlcheck [options] --databases db_name ...
mysqlcheck [options] --all-databases
如果在 db_name 后没有指定任何表名,或者使用 --databases 或 --all-databases 选项,那么整个数据库都会被检查。
4、命令选项
mysqlcheck的常用选项,可以在命令行中指定,也可以在选项文件中通过 [mysqlcheck] 和 [client] 组进行指定。
在不启动mysql时就可以用这些语句,也就是bash语句,mysqlcheck -a test_db就是分析test_db这个表。
遇到一些不满足条件的,比如存储引擎不支持,那就可以转换引擎。
InnoDB在优化的过程中是执行了一个重建的操作。根据官网建议,优化不应常用,一天以上优化就可以。
下面每块都大致有这四个部分
3、Mysqldump - 数据库备份程序
mysqldump客户端程序可以执行逻辑备份并生成一组SQL语句,其中包含原始数据库和表的定义以及表中的数据,以便实现对数据库的简单备份或复制。mysqldump命令可以生产CSV、或XML格式的文件。
语法:
mysqldump [options] db_name [tbl_name ...]
mysqldump [options] --databases db_name ...
mysqldump [options] --all-databases
常用选项
导出一个数据库成sql文件
mysqldump test_db > /root/dump.sql -u root -p
mysqldump有这些常用选项,可以在命令行中指定,也可以在选项文件中通过 [mysqldump] 和[client] 组进行指定。
4、mysqladmin - MySQL 服务器管理程序
mysqladmin 是⼀个执行管理操作的客⼾端。可以用来检查服务器的配置和当前状态,以及创建和删除数据库等。
语法:
mysqladmin [options] command [command-arg] [command [command-arg]] ...
command就是要带的命令选项。
检查服务器版本信息
mysqladmin version -u root -p
查看状态就把version改成status。以及还可以改成下面的这些选项。
password 密码,这个选项可以设置新密码
• 如果密码中有空格必须用双引号把密码包裹起来
• password 后可以省略新密码,mysqladmin会在之后提示输入新密码
• password 做为最后一个command 时才可以省略密码值,否则下一个参数将作为密码被设置。
默认MySQL服务器可以维护150个活动连接,如果连接被用完,可以通过kill来手动释放休眠时间最长的线程。
mysqladmin 的常用选项参考公共选项部分,可以在命令行中指定,也可以在选项文件中通过[mysqladmin] 和 [client] 组进行指定。
5、mysqlshow - 显示数据库、表和列信息
mysqlshow客户端可用于快速查看存在哪些数据库、数据库中的表以及表中的列或索引。
语法:
mysqlshow [options] [db_name [tbl_name [col_name]]]
当然最后都加上-u root -p。
• db_name tbl_name col_name 可以使用通配符 * 、 ? 、 % 或 _
• 如果没有指定数据库,则显示所有数据库名称列表。
• 如果没有指定表,则显示数据库中所有匹配的表。
• 如果没有指定列,则显示表中所有匹配的列和列类型。
• 输出仅显示当前权限可以访问的数据库、表或列的名称。
mysqlshow很简单,查看官方文档即可。
mysqlshow 的常用选项参考公共选项部分,可以在命令行中指定,也可以在选项文件中通过[mysqlshow] 和 [client] 组进行指定,具体选项参考公共选项列表。
6、mysqldumpslow - 总结慢查询日志文件
慢查询是那些执行时间很长,超过阈值的查询语句。慢查询的相关信息通常需要用日志记录下来称为慢查询日志,mysqldumpslow可以解析慢查询日志文件并汇总其内容。
通常情况下,mysqldumpslow 会将相似的查询分组并显示摘要输出,一般会把数字和字符串用 “N” 和 “S” 代替,要想显示真实的值可以使用 -a 和 -n 选项。
语法:
mysqldumpslow [options] [log_file ...]
可以不带任何选项地输出,这时候的结果中,count是执行的次数,time是单词的耗时,lock是申请与释放锁用的时间,rows是获取数据用的时间。
sort_type的可选项:
t,at :按查询时间或平均查询时间排序,默认排序
l,al :按锁占用时间或平均锁占用时间排序
r,ar :按发送的行数或平均发送的行数排序
c :按计数排序
7、mysqlbinlog - 处理二进制日志文件
对数据库的各种操作,比如修改,删除,都是一个个事件,每个事件都会以二进制形式记录在文件里,也就是二进制日志文件文件,binlog,Binary Log。mysqlbinlog能够以文本格式显示二进制日志文件中的内容。
binlog的默认保存路径是数据目录,Linux下默认为/var/lib/mysql。binlog是以.00000n结尾命名的文件,n不断递增。
语法:
mysqlbinlog [options] log_file ...
日志文件的输出内容中包含各种事件,事件信息包括 SQL 语句、执行语句的服务器 ID、语句执行时的时间戳、花费的时间等等。
在没有选项,直接查看一个日志文件显示的内容中,at表示一个事件在日志文件中的起始偏移位置,end_log_pos表示事件在日志中结束的偏移位置。
mysqlbinlog 的命令选项可以在命令行中指定,也可以在选项文件中通过 [mysqlbinlog] 和 [client] 组进行指定。
还有
–raw :mysqlbinlog以原始二进制格式写入事件,默认是文本格式
–read-from-remote-server,-R :–read-from-remote-server=file_name,-R,读取远程MySQL服务器的二进制日志,而不是读取本地,要求远程服务器正在运行
–base64-output=value ,value允许的值:( 默认 AUTO )
AUTO (“automatic”)或 UNSPEC (“unspecified”)在必要时自动显示BINLOG语句。如果使用mysqlbinlog重新执行二进制日志文件内容,那么使用 AUTO 选项是唯一安全的行为,其他选项值仅用于调试或测试,如果 --base64-output 没有指定,那么默认值是 AUTO。
NEVER 不显示BINLOG语句。
DECODE-ROWS 不显示加密内容,可以配合mysqlbinlog 的 -verbose 选项以注释的形式只显示事件的SQL语句。
8、mysqlslap - 负载仿真客户端
mysqlslap是⼀个诊断程序,用于模拟MySQL服务器的客户端负载,并报告每个阶段的时间。
- 可以通过 --create 或 --query 选项,指定包含SQL语句的字符串或包含SQL语句的文件。
- 如果指定一个包含SQL语句的文件,默认情况下每行必须包含一条语句(也就是说,隐式语句分隔符是换行符)。
- 如果要把一条语句分为多行书写,可以使用 --delimiter 选项指定不同的分隔符。
- 不能在文件中包含注释,因为mysqlslap不能解析注释。
- mysqlslap运行分为三个阶段:
a. 创建测试数据阶段:创建用于测试的库、表或数据,这个阶段使用单个客户端连接
b. 运行负载测试阶段,这个阶段可以使用许多客户端连接
c. 清理阶段:执行删除表,断开连接等操作,这个阶段使用单个客户端连接
语法:
mysqlslap [options]
示例:
mysqlslap 有如下常用选项,可以在命令行中指定,也可以在选项文件中通过 [mysqlslap] 和 [client] 组进行指定
还有–auto-generate-sql-unique-query-number选项,–auto-generate-sql-unique-query-number=N为自动测试生成多少个不同的查询(where条件不同),默认值是10。
结束。