您的位置:首页 > 数据库 > MySQL

开启mysql日志及若干问题

2016-02-23 11:08 615 查看
今天学习了mysql日志功能,以前也有所了解,只不过没有深入的学习,所以趁着“余热”,把我从网上找到的资料与实践

结合起来,总结一下其基本用法。学习从来都不是无趣的,就看你怎么看待学习。

1、查看查询日志是否开启

[mysqld]

......

log-bin=mysql-bin
binlog_format=mixed

.....





基本可以满足需求。。还没有完。。

3.查看二进制日志的格式:

mysql> show global variables like 'binlog_format';


---value的值有三种:statement,row,mixed


二进制日志中常用的定义格式:

1、语句(statement):默认的记录格式;

2、行(row):定义的并非数据本身而是这一行的数据是什么;

3、混合模式(mixed):交替使用行和语句、由mysql服务器自行判断。

其中基于行的定义格式数据量会大一些但是可以保证数据的精确性。

查看二进制日志:



4.设置二进制日志的格式

mysql> set global binlog_format='row';   --设置全局binlog_format,可以使用set session binlog_format='row'来设置当前会话的binlog_format
Query OK, 0 rows affected (0.00 sec)
mysql> show GLOBAL variables like 'binlog_format';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW   |
+---------------+-------+
1 row in set (0.00 sec)


注意:如果在my.ini里面设置不成功的配置,都可以通过:mysql> set global key = "value"; 获得。

5.在SQL中查看日志文件中的事件:

mysql> show binlog events in 'mysql-bin.000002' from 1; --from指定从日志哪个位置开始



6.启动和设置慢查询日志:
[mysqld]

.....
slow_query_log=on
long_query_time=2
.....

配置完之后,重启服务器,发现并没有什么用。
后来通过mysql语句完成:





7.定义查询日志是否开启
mysql > set global general_log = on;



[mysqld]
......
general_log = on
......

8.通过登录mysql服务器直接定义

首先要有全局权限;然后执行mysql>set global slow_query_log=1;
时间默认超过多少的称为慢查询日志?一般都是通过long_query_time选项来设置这个时间值,时间以秒为单位,可以精确到微秒。
如果查询时间超过了这个时间值(默认为10秒),这个查询语句将被记录到慢查询日志中。查看服务器默认时间值方式如下:




注释:其中这个慢查询时间并不是只表示语句自身执行超过10秒还包含由于其他资源被征用造成阻塞的查询执行时间或其他原因等都被记录到慢查询中。
所以这个慢查的时长表示从查询开始到查询结束中间包含可能的任何原因所经历的所有时间。

9.mysql日志详细解析:/article/4819053.html

该网址对于日志相关内容介绍比较完整与详细。

10.二进制日志相关的参数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: