MySQL 常用管理工具

来源:互联网 发布:win7优化精简教程 编辑:程序博客网 时间:2024/06/05 15:32
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] filenamemysql> 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: 0mysql> 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 t2Compressing t2.MYD: (10485760 records)- Calculating statistics- Compressing file90%                                           ##可以看见压缩了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.MYImysql> 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 only3、 mysqladmin(MySQL 管理工具)mysqladmin 是一个执行管理操作的客户端程序。可以用它来检查服务器的配置和当前的状态,创建并删除数据库等。它的功能和mysql 客户端非常类似,主要区别在于它更侧重于一些管理方面的功能,比如关闭数据库。mysqladmin 的用法如下:shell> mysqladmin [options] command [command-options][command [command-options]] ...##关闭数据库mysqladmin -uroot -p -S /mydata/data/3306/mysql_3306.sock shutdown4、 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—databaseoption 中有以下常用选项:? -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 testEnter password: test.t1                                            OKtest.t2                                            OK(2)修复表(repair):[root@CentOS 3306]# mysqlcheck -uroot -p -S /mydata/data/3306/mysql_3306.sock -r test t4Enter password: test.t4                                            OK(3)分析表(analyze):[root@CentOS 3306]# mysqlcheck -uroot -p -S /mydata/data/3306/mysql_3306.sock -a testEnter password: test.t1error    : Table 'test.t1' is read onlytest.t2error    : Table 'test.t2' is read onlytest.t3                                            OKtest.t4                                            OK(4)优化表(optimize)[root@CentOS 3306]# mysqlcheck -uroot -p -S /mydata/data/3306/mysql_3306.sock -o test t4Enter password: test.t4                                            OK6、 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_directorymysqlhotcopy 的常用选项如下。? --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 1146MySQL error code 1146 (ER_NO_SUCH_TABLE): Table '%-.192s.%-.192s' doesn't exist11、 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 < a12、 mysqldumpslow(分析慢查询日志)如果慢查询日志中记录内容很多,可以使用mysqldumpslow 工具(MySQL 客户端安装自带)来对慢查询日志进行分类汇总。[root@CentOS 3306]# mysqldumpslow CentOS-slow.log 对于SQL 文本完全一致,只是变量不同的语句,mysqldumpslow 将会自动视为同一个语句进行统计,变量值用N 来代替。这个统计结果将大大增加用户阅读慢查询日志的效率,并迅速定位系统的SQL 瓶颈。注意:慢查询日志对于我们发现应用中有性能问题的SQL 很有帮助,建议正常情况下,打开此日志并经常查看分析。MySQL自带了一些工具可以对日志进行分析,但这些工具相对功能较单一,而且对查询日志没有提供分析工具。有很多第三方工具,而mysqlsla是其中较广泛的一个。除了mysqlsla,还有一些常用日志分析工具,比如myprofi、mysql-explain-slow-log、mysqllogfilter等。

0 0
原创粉丝点击