在上一篇文章中提到了对MySQL数据库进行操作的一些常见工具
mysqlcheck
mysqlcheck是一个用于数据库表的检查,修复,分析和优化的一个客户端程序
- 分析的作用是查看表的关键字分布,能够让sql生成正确的执行计划(支持InnoDB,MyISAM,NDB)
- 检查的作用是检查表的完整性以及数据库表和索引是否损坏(支持InnoDB,MyISAM,ARCHIVE,CSV)
- 优化的作用是回收空间,减少碎片,提高I/O性能(支持InnoDB,MyISAM,ARCHIVE)
- 修复的作用是修复可能已经损坏的表(支持MyISAM,ARCHIVE,CSV)
使用过程中注意事项
- 使用过程中mysql服务器必须处于运行状态
- 执行过程中相应的表将会被锁定,所以其他的操作将被挂起
- 并不是所有的存储引擎都支持以上四种操作,如果遇到不支持的引擎会报出相应错误
- 执行表修复操作之前对表进行备份,在某些情况下可能会导致数据丢失
使用方式
mysqlcheck [options] 数据库名 [表名]
要是不指定表名 ,数据库中的所有表都会进行检查
通常情况下 mysqlcheck会有如下的一些选项
mysqlcheck基本选项
- 选项 说明
- --analyze -a 分析表
- --auto-repair 如果检查的表有损坏,则自动修复它,所有表都检查过之后才进行必要的修复
- --check -c 仅检查自上次检查以来更改过的表
- --databases,-B --databases 数据库名 多个数据库名用空格进行分割,处理指定数据库中的所有表
- --force, -f 即使SQL错误也要继续
- --optimize, -o 优化表
- --repair, -r 执行可能进行的任务修复操作,除了唯一键
- --skip-database --skip-database=数据库名 不需要执行检查的数据库名
- --tables --tables=表名 多个表名用空格隔开 在选项之后的所有名称参数都被视为表名
- --use-frm 对于MyISAM表的修复操作
上述指令中如果我们要对InnoDB存储引擎进行表的修复repair是不支持进行修复的,此时我们可以先把InnoDB存储引擎转化为MyISAM(这些存储引擎后期的文章中会详细提到的)。
第一个指令分析表的使用 后面的指令可以自己下去试一试
mysqlcheck的特殊使用
mysqlcheck程序的默认功能是对数据表进行检查操作(相当于指定选项--check) 如果想对表进行修复操作,可以通过复制原来的mysqlcheck程序,并重命名为mysqlrepair,直接运行即可,还可以通过把mysqlcheck的快捷方式重命名为mysqlrepair然后直接运行就可以了
- mysqlrepair 默认是修复 相当于选项--repair
- mysqlanalyze 默认是修复 相当于选项--analyze
- mysqloptimize 默认是修复 相当于选项--optimize
mysqldump
mysqldump是一个数据库备份的工具 他可以执行逻辑备份并生成一组sql语句,其中包含了原始数据库和表的定义以及表中的数据,以便实现对数据库的简单备份或复制,他可以生成CSV,XML格式的文件
mysqldump使用时注意事项
- 转储表时必须有select权限
- 转储视图时必须要有show view权限
- 转储触发器时必须要有trigger权限
- 如果没有使用--single-transaction选项时必须要有lock tables权限
- 如果没有实现--no-tablespaces选项时必须要有process权限
- 重新导入转储文件时,也需要有相应的权限
- 由于mysqldump是逐行转储数据,所以不适合大数据量的转储与导入
使用方式
mysqldump [options] 数据库名 表名
可以转储一个或多个表或者数据库
mysqldump常用选项
- 选项 说明
- --add-drop-database 在每个create database 语句之前添加 drop database
- --add-drop-table 在每个create table语句之前加上drop table语句
- --add-drop-trigger 在每个create trigger语句之前加上 drop trigger语句
- --add-locks 用lock tables 和 unlock tables语句包裹灭个表转储
- --all-databases,-A 转储所有数据库中的所有表
- --databases,-B 将参数解释为数据库名称并转储所有的表
- --comments,-i 添加注释到转储文件
- --compact 紧凑格式输出
- --compatible=ansi 生成与其他数据库或旧MYsql服务器更兼容的输出
- --complete-insert,-c 使用包含列名的完整insert语句
- --events,-E 从转储数据库中转储事件
- --extended-insert,-e 使用多行insert语法
- --flush-logs,-F 在开始转储前刷新日志
- --flush-privileges 在转储后刷新权限
- --force,-f 转储期间发生了sql错误也要继续
- --hex-blob 使用十六进制表示法转储二进制序列
- --no-data,-d 转储过程中不转储表的内容
- --xml,-X 以xml的格式进行输出
太多了这里罗列了一些常见的,有需要的话可以去官方文档读一读