1、 mysql(客户端连接工具) --auto-rehash 开启自动补全功能,默认即开启。 -u, --user=name 指定用户名 -p, --password[=name] 指定密码 -h, --host=name 指定服务器IP 或者域名 -P, --port=# 指定连接端口 -S, --socket=name The socket file to use for connection. -D, --database=name Database to use. --default-character-set=charset-name 相当于在mysql 客户端连接成功后执行:set names charset; -e, --execute=name 执行SQL 语句并退出 -E , --vertical 将输出方式按照字段顺序竖着显示 -s , --silent 去掉mysql 中的线条框显示 -f, --force 强制执行SQL -v, --verbose 显示更多信息 --show-warnings 显示警告信息 2、 myisampack(MyISAM 表压缩工具) myisampack 是一个表压缩工具,可以使用很高的压缩率来对MyISAM 存储引擎的表进行压2缩,使得压缩后的表占用比压缩前小得多的磁盘空间。但是压缩后的表也将成为一个只读表,不能进行DML 操作。 此工具的用法如下:shell> myisampack [options] filename mysql> create table t2(id int,name varchar(10)) engine=myisam; Query OK, 0 rows affected (0.00 sec) mysql> insert into t2 values(1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e'); Query OK, 5 rows affected (0.00 sec) Records: 5 Duplicates: 0 Warnings: 0 mysql> insert into t2 select * from t2; ##重复很多次 Query OK, 5 rows affected (0.00 sec) Records: 5 Duplicates: 0 Warnings: 0 ...... [root@db test]# ll t2.* -rw-rw---- 1 mysql mysql 8586 Dec 14 06:13 t2.frm -rw-rw---- 1 mysql mysql 209715200 Dec 14 06:15 t2.MYD -rw-rw---- 1 mysql mysql 1024 Dec 14 06:15 t2.MYI [root@db test]# myisampack t2 Compressing t2.MYD: (10485760 records) - Calculating statistics - Compressing file 90% ##可以看见压缩了90% [root@db test]# ll t2.* -rw-rw---- 1 mysql mysql 8586 Dec 14 06:13 t2.frm -rw-rw---- 1 mysql mysql 20971589 Dec 14 06:15 t2.MYD -rw-rw---- 1 mysql mysql 1024 Dec 14 06:17 t2.MYI mysql> flush tables; ##flush tables之后,表就变为只读的了。 Query OK, 0 rows affected (0.00 sec) mysql> insert into t2 values(1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e'); ERROR 1036 (HY000): Table 't2' is read only 3、 mysqladmin(MySQL 管理工具) mysqladmin 是一个执行管理操作的客户端程序。可以用它来检查服务器的配置和当前的状态,创建并删除数据库等。它的功能和mysql 客户端非常类似,主要区别在于它更侧重于一些管理方面的功能,比如关闭数据库。 mysqladmin 的用法如下: shell> mysqladmin [options] command [command-options] [command [command-options]] ... ##关闭数据库 mysqladmin -uroot -p -S /mydata/data/3306/mysql_3306.sock shutdown 4、 mysqlbinlog(日志管理工具) mysqlbinlog 的具体用法如下:shell> mysqlbinlog [options] log-files1 log-files2... option 有很多选项,常用的如下: ? -d, --database=name 指定数据库名称,只列出指定的数据库相关操作。 ? -o, --offset=# 忽略掉日志中的前n 行命令 ? -r, --result-file=name 将输出的文本格式日志输出到指定文件 ? -s, --short-form 显示简单格式,省略掉一些信息 ? --set-charset=char-name:在输出为文本格式时,在文件第一行加上set names char-name,这个选项在某些情况下装载数据时,非常有用。 ? --start-datetime=name –stop-datetime=name:指定日期间隔内的所有日志 ? --start-position=# --stop-position=#:指定位置间隔内的所有日志 5、 mysqlcheck(MyISAM 表维护工具) mysqlcheck 客户端工具可以检查和修复MyISAM 表,还可以优化和分析表。实际上,它集成了mysql 工具中check、repair、analyze、optimize 的功能。 有3 种方式可以来调用mysqlcheck: shell> mysqlcheck[options] db_name [tables] shell> mysqlcheck[options] ---database DB1 [DB2 DB3...] shell> mysqlcheck[options] --all—database option 中有以下常用选项: ? -c, --check 检查表 ? -r, --repair 修复表 ? -a, --analyze 分析表 ? -o, --optimize 优化表 其中,默认选项是-c(检查表)。 (1)检查表(check): [root@CentOS 3306]# mysqlcheck -uroot -p -S /mydata/data/3306/mysql_3306.sock -c test Enter password: test.t1 OK test.t2 OK (2)修复表(repair): [root@CentOS 3306]# mysqlcheck -uroot -p -S /mydata/data/3306/mysql_3306.sock -r test t4 Enter password: test.t4 OK (3)分析表(analyze): [root@CentOS 3306]# mysqlcheck -uroot -p -S /mydata/data/3306/mysql_3306.sock -a test Enter password: test.t1 error : Table 'test.t1' is read only test.t2 error : Table 'test.t2' is read only test.t3 OK test.t4 OK (4)优化表(optimize) [root@CentOS 3306]# mysqlcheck -uroot -p -S /mydata/data/3306/mysql_3306.sock -o test t4 Enter password: test.t4 OK 6、 mysqldump(数据导出工具) mysqldump 客户端工具用来备份数据库或在不同数据库之间进行数据迁移。备份内容包含创建表或装载表的SQL 语句。mysqldump 目前是MySQL 中最常用的备份工具。 有3 种方式来调用mysqldump: shell> mysqldump [options] db_name [tables] #备份单个数据库或者库中部分数据表 shell> mysqldump [options] ---database DB1 [DB2 DB3...] #备份指定的一个或者多个数据库 shell> mysqldump [options] --all—database #备份所有数据库 option 中有以下常用选项: -u , --user=name 指定用户名 –p , --password[=name] 指定密码 –h , --host=name 指定服务器IP 或者域名 –P , --port=# 指定连接端口 --add-drop-database 每个数据库创建语句前加上DROP DATABASE 语句 --add-drop-table 在每个表创建语句前加上DROP TABLE 语句 -n, --no-create-db 不包含数据库的创建语句 -t, --no-create-info 不包含数据表的创建语句 -d, --no-data 不包含数据 --compact 选项使得输出结果简洁,不包括默认选项中的各种注释。 -c --complete-insert 选项使得输出文件中的insert 语句包括字段名称,默认是不包括字段名称的。 -e, --extended-insert 使用多行insert语句,默认即使用本参数。 -T 选项将指定数据表中的数据备份为单纯的数据文本和建表SQL 两个文件 --fields-terminated-by=name(字段分隔符); --fields-enclosed-by=name(字段引用符); --fields-optionally-enclosed-by=name(字段引用符,只用在char、varchar 和text 等字符型字段上); --fields-escaped-by=name(转义字符); --lines-terminated-by=name(记录结束符)。 --default-character-set=name 选项可以设置导出的客户端字符集。 -F --flush-logs(备份前刷新日志)。 -l --lock-tables(给所有表加读锁)。 -x, --lock-all-tables 锁定所有表,在备份过程中,该库无法进行读写操作。 --single-transaction 对于支持事务的存储引擎,在导出时会建立一个快照,保证导出数据的一致性,又不会堵塞其它会话,相比--lock-tables参数来说锁定粒度要低。 -A, --all-databases 导出所有数据库。information_schema库是不会被导出的。 -B, --databases 导出指定的某个/或者某几个数据库。通过--databases参数导出库中数据时,输出的内容是包含建库脚本的。 --master-data[=#] 在master端dump数据,指定参数值为1,则输出信息中包括CHANGE MASTER语句;如果值为2,则仍然输出CHANGE MASTER语句,但默认这个语句被注释。 --dump-slave[=#] 在slave端dump数据,指定参数值为1,则输出信息中包括CHANGE MASTER语句;如果值为2,则仍然输出CHANGE MASTER语句,但默认这个语句被注释。 -w, --where=name 只导出符合条件的记录。 -f, --force 遇到SQL错误,也继续执行。 --no-autocommit 禁用自动提交。 -R, --routines 导出存过、函数等。 --flush-privileges 导出mysql库后执行一条FLUSH PRIVILEGES语句。 --ignore-table=name 指定的表不导出。 7、 mysqlhotcopy(MyISAM 表热备份工具) mysqlhotcopy 是一个Perl 脚本,它使用LOCK TABLES、FLUSH TABLES、cp 或scp 来快速备份数据库。它是备份数据库或单个表的最快途径,其缺点是mysqlhotcopy 只用于备份MyISAM,而且它需要运行在Linux/UNIX 环境中。 mysqlhotcopy 的用法如下: shell> mysqlhotcopy db_name [/path/to/new_directory] shell> mysqlhotcopy db_name_1 ... db_name_n /path/to/new_directory mysqlhotcopy 的常用选项如下。 ? --allowold:如果备份路径下中含有同名备份,则将旧的备份目录rename 为目录名_old。 ? --addtodest:如果备份路径下存在同名目录,则仅仅将新的文件加入目录。 ? --noindices:不备份所有的索引文件。 ? --flushlog:表被锁定后刷新日志。 8、 mysqlimport(数据导入工具) mysqlimport 是客户端数据导入工具,用来导入mysqldump 加-T 选项后导出的文本文件。它实际上是客户端提供了LOAD DATA INFILEQL 语句的一个命令行接口。用法和LOAD DATAINFILE 子句非常类似 mysqlimport 的基本用法如下: shell> mysqlimport [options] db_name textfile1 [textfile2 ...] 其中option 参数可以是以下选项: ? --fields-terminated-by=name(字段分隔符); ? --fields-enclosed-by=name(字段引用符); ? --fields-optionally-enclosed-by=name(字段引用符,只用在char、varchar 和text 等字符型字段上); ? --fields-escaped-by=name(转义字符); ? --lines-terminated-by=name(记录结束符); ? -- ignore-lines=number(或略前几行) 9、 mysqlshow(数据库对象查看工具) mysqlshow 客户端对象查找工具,用来很快地查找存在哪些数据库、数据库中的表、表中的列或索引。和mysql 客户端工具很类似,不过有些特性是mysql 客户端工具所不具备的。 mysqlshow 的使用方法如下: shell> mysqlshow[option] [db_name [tbl_name [col_name]]] --count(显示数据库和表的统计信息)。 # mysqlshow -uroot -p -S /mydata/data/3306/mysql_3306.sock test --count -k –keys(显示指定表中的所有索引)。 # mysqlshow -uroot -p -S /mydata/data/3306/mysql_3306.sock test t1 -k 和在mysql 客户端执行“show full columns from emp”和“show index from emp”的结果完全一致。 -i –status(显示表的一些状态信息)。 # mysqlshow -uroot -p -S /mydata/data/3306/mysql_3306.sock test t1 -i 此命令和mysql 客户端执行“show table status from test like 'emp'”的结果完全一致。 10、 perror(错误代码查看工具) perror 的作用就是解释这些错误代码的详细含义。 perror 的用法很简单,如下所示: perror [OPTIONS] [ERRORCODE [ERRORCODE...]] mysql> select * from ttt; ERROR 1146 (42S02): Table 'test.ttt' doesn't exist [root@CentOS 3306]# perror 1146 MySQL error code 1146 (ER_NO_SUCH_TABLE): Table '%-.192s.%-.192s' doesn't exist 11、 replace(文本替换工具) replace 是MySQL 自带的一个对文件中的字符串进行替换的工具,具体使用方法如下: shell> replace from to [from to] ... -- file [file] ... shell> replace from to [from to] ... < file 其中--表示字符串结束,文件的开始,可跟多个源文件,替换完毕后会覆盖原文件。<表示后面的文件作为输入,替换后的文本显示在标准输出上,不会覆盖原文件。 (1)将文件a 中的a1 和b1 分别替换为aa1 和bb1:[zzx@localhost ~]$ replace a1 aa1 b1 bb1 -- a (2)将文件a 中的a 和b 分别替换为c 和d:[zzx@localhost ~]$ replace a c b d < a 12、 mysqldumpslow(分析慢查询日志) 如果慢查询日志中记录内容很多,可以使用mysqldumpslow 工具(MySQL 客户端安装自带)来对慢查询日志进行分类汇总。 [root@CentOS 3306]# mysqldumpslow CentOS-slow.log 对于SQL 文本完全一致,只是变量不同的语句,mysqldumpslow 将会自动视为同一个语句进行统计,变量值用N 来代替。这个统计结果将大大增加用户阅读慢查询日志的效率,并迅速定位系统的SQL 瓶颈。 注意:慢查询日志对于我们发现应用中有性能问题的SQL 很有帮助,建议正常情况下,打开此日志并经常查看分析。 MySQL自带了一些工具可以对日志进行分析,但这些工具相对功能较单一,而且对查询日志没有提供分析工具。有很多第三方工具,而mysqlsla是其中较广泛的一个。除了mysqlsla,还有一些常用日志分析工具,比如myprofi、mysql-explain-slow-log、mysqllogfilter等。