mysql查询相关的命令解析

特:不重启mysql 更新配置文件方法(不允许重启mysql实例或连接不上msyql服务器):

gdb -p $(pidof mysqld) -ex "set max_connections=1500" -batch

 

导出 :

1)mysqldump -uroot -proot --opt 库名 表名> "d:\data1.sql"

mysqldump -u root -p --no-data 库名 表名 >D:\P\data.sql

Mysqldump导出的SQL文件如果不带绝对路径,默认是保存在bin目录下的。

  –opt:此Mysqldump命令参数是可选的,如果带上这个选项代表激活了Mysqldump命令的quick,add-drop-table,add-locks,extended-insert,lock-tables参数,也就是通过–opt参数在使用Mysqldump导出Mysql数据库信息时不需要再附加上述这些参数

2)mysql>select * from table into outfile 'xxx.txt';

导入:source命令

  mysql>use 数据库
  然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
  mysql>source d:\wcnc_db.sql

一、获取日志信息的命令
获取binlog文件列表
show binary logs;
查看当前正在写入的binlog文件
show master status\G;
查看错误日志的配置信息
show variables like 'log_error';
查看二进制日志ID配置信息
show variables like 'log_bin';
查看慢查询日志的配置信息
show variables like '%slow%'

mysql查询结果导出/输出/写入到文件
1)直接执行命令:
mysql> select count(1) from table into outfile '/tmp/test.xls';
Query OK, 31 rows affected (0.00 sec)
在目录/tmp/下会产生文件test.xls(前提mysql有对/tmp的写入权限)
2)跳出mysql命令行
[root@SHNHDX63-146 ~]# mysql -h 127.0.0.1 -u root -p XXXX -P 3306 -e "select * from table" > /tmp/test/txt


定期删除二进制日志是DBA维护MYSQL数据库的一个重要的内容。
1.通过reset master 命令
执行reset master命令,该命令将删除所有的binlog日志。新的日志文件的编号从000001开始。
2.通过purege master logs to命令
通过执行purge master logs to'base_name.xxxxxx',删除‘xxxxxx'编号之前的所有日志。


二、 二进制日志查询
查看指定binlog文件的内容语法:
SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]

binlog文件实际上是由一连串的event组成的一个组,即事务组。
查看二进制文件中全部事务
SHOW BINLOG EVENTS IN 'mysql-bin.000005' \G
过滤查询
SHOW BINLOG EVENTS IN 'mysql-bin.000005' FROM 194 LIMIT 2 \G;

使用mysqlbinlog查看binlog

a、提取指定的binlog日志
# mysqlbinlog /opt/data/APP01bin.000001
# mysqlbinlog /opt/data/APP01bin.000001|grep insert
b、提取指定position位置的binlog日志
# mysqlbinlog --start-position="120" --stop-position="332" /opt/data/APP01bin.000001

c、提取指定position位置的binlog日志并输出到压缩文件
# mysqlbinlog --start-position="120" --stop-position="332" /opt/data/APP01bin.000001 |gzip >extra_01.sql.gz

d、提取指定position位置的binlog日志导入数据库
# mysqlbinlog --start-position="120" --stop-position="332" /opt/data/APP01bin.000001 | mysql -uroot -p

e、提取指定开始时间的binlog并输出到日志文件
# mysqlbinlog --start-datetime="2014-12-15 20:15:23" /opt/data/APP01bin.000002 --result-file=extra02.sql

f、提取指定位置的多个binlog日志文件
# mysqlbinlog --start-position="120" --stop-position="332" /opt/data/APP01bin.000001 /opt/data/APP01bin.000002|more

g、提取指定数据库binlog并转换字符集到UTF8
# mysqlbinlog --database=test --set-charset=utf8 /opt/data/APP01bin.000001 /opt/data/APP01bin.000002 >test.sql

h、远程提取日志,指定结束时间
# mysqlbinlog -urobin -p -h192.168.1.116 -P3306 --stop-datetime="2014-12-15 20:30:23" --read-from-remote-server mysql-bin.000033 |more

i、远程提取使用row格式的binlog日志并输出到本地文件
# mysqlbinlog -urobin -p -P3606 -h192.168.1.177 --read-from-remote-server -vv inst3606bin.000005 >row.sql

三 、查看慢查询日志
mysqldumpslow -s c -t 20 host-slow.log
mysqldumpslow -s r -t 20 host-slow.log
上述命令可以看出访问次数最多的 20 个 sql 语句和返回记录集最多的 20 个 sql
mysqldumpslow -t 10 -s t -g "left join" host-slow.log
这个是按照时间返回前 10 条里面含有左连接的 sql 语句。
mysqldumpslow -s c -t 10 /database/mysql/slow-log
这会输出记录次数最多的10条SQL语句,其中:
-s order,是表示按照何种方式排序,order值有:c、t、l、r 分别是按照记录次数、时间、查询时间、返回的记录数来排序,ac、at、al、ar,表示相应的倒序;
-t num,即为返回前面多少条的数据;
-g pattern,pattern可以写一个正则匹配模式,大小写不敏感的;
使用mysqldumpslow命令可以非常明确的得到各种我们需要的查询语句,对MySQL查询语句的监控、分析、优化是MySQL优化的第一步,也是非常重要的一步。
相关命令

四 、遇到Waiting for table metadata lock

1) show processlist查看阻塞的查询 并kill

2)select * from information_schema.innodb_trx\G 查看未提交事务 并kill  trx_mysql_thread_id

3)从performance_schema.events_statements_current表中可以查到失败的语句 并kill即可

 

五、清空库下表:

可执行如下语句进行生成清空语句

SELECT CONCAT('TRUNCATE TABLE ',table_name,';') FROM information_schema.`TABLES` WHERE table_schema='库名';

 

posted @ 2017-06-13 16:01  鱼日文弓虽  阅读(228)  评论(0编辑  收藏  举报