mysql基础(八)mysql日志
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
mysql日志类型:
1
、查询日志(通常不会开启,也不建议开启)
2
、慢查询日志(建议开启)
3
、错误日志(建议开启)
4
、二进制日志(建议开启)
5
、中继日志
6
、事务日志(帮助事务型存储引擎完成ACID测试)
mysql> SHOW GLOBAL VARIABLES LIKE
'%log%'
;
#查看和日志相关的变量
查询日志:
general_log
=
ON|OFF
#是否开启查询日志
general_log_file
=
PATH
#查询日志文件路径
log_output
=
FILE
|TABLE|NONE
#输出方式,默认为FILE
慢查询日志:执行时长超出指定时长的查询操作
mysql> SHOW GLOBAL VARIABLES LIKE
'long_query_time'
;
#查看超时时长
服务器变量:
slow_query_log
=
ON|OFF
#是否开启慢查询日志
log
-
slow
-
queries
=
PATH
#慢查询日志存储路径,默为HOSTNAME-slow.log
log_output
=
FILE
|TABLE
#输出方式,默认为FILE
mysqldumpslow
#慢查询日志分析工具
错误日志:
1
、记录mysql启动和关闭过程中产生的事件信息
2
、记录mysql运行过程中产生的错误信息
3
、在主从架构中,从服务器上启动从服务器线程产生的信息
服务器变量:
log_error
=
OFF|ON|PATH
#启动错误日志,如果不指定错误日志位置将使用默认位置
log_warnings
=
0
|
1
#是否记录警告信息
二进制日志:记录导致数据改变或者有可能导致数据发生改变的SQL语句
功能:用于实现通过
"重放"
日志文件中的事件来生成数据副本
mysql> SHOW MASTER LOGS;
#查看可使用的二进制日志文件列表
mysql> SHOW MASTER STATUS;
#查看正在使用的二进制日志文件
mysql> SHOW BINLOG EVENTS;
#查看二进制日志文件内容
服务器变量:
sql_log_bin
=
OFF|ON
#是否开启二进制日志
log_bin
=
OFF|ON
#是否开启二进制日志,必须同时启用才能生效
binlog_format
=
STATEMENT|ROW|MIXED
#二进制日志格式
max_binlog_size
=
#单个二进制文件最大大小
1
、到达最大大小时自动滚动
2
、重启后自动滚动
sync_binlog
=
0
|
1
#是否同步写入,默认为异步写入
1
、同步写入会影响服务器性能
2
、异步写入可能会造成数据丢失
二进制文件格式:
基于语句的记录:STATEMENT
优点:在相同体积下记录的数据更多
缺点:不能保证回放的数据和源数据完全相同
如:mysql> INSERT INTO test VALUE(
1
,now());
#每一次获取的系统时间都不相同
基于行(数据)的记录:ROW
优点:能保证回放的数据和源数据基本相同
缺点:在相同体积下记录的数据更少
混合模式:MIXED,由系统判定基于那种方式进行存储
二进制文件的构成:
日志文件:mysql
-
bin
.
00000X
#二进制文件
索引文件:mysql
-
bin
.index
#保存当前可用的二进制日志文件列表
二进制日志事件的格式:
mysqlbinlog
#二进制文件分析工具
使用格式:mysqlbinlog [
-
-
start
-
position
=
事件开始位置] 二进制日志文件
例:mysqlbinlog mysql
-
bin
.
000003
#at 655
#170220 8:33:37 server id 1 end_log_pos 731 Query thread_id=12 exec_time=0 error_code=0
SET
TIMESTAMP
=
1487550817
/
*
!
*
/
;
BEGIN
/
*
!
*
/
;
事件的起始位置:at
655
事件发生的时间:
170220
8
:
33
:
37
server
id
1
:server
id
,在做mysql集群时必须保证server
id
全局唯一
事件的结束位置:end_log_pos
731
事件的类型:Query
事件发生时所在服务器执行此事件的线程
ID
:thread_id
=
12
语句执行和将其写入二进制日志中的时间差
错误代码:error_code
中继日志:主从架构中实现主从复制的从服务日志,主要用于保存从二进制日志文件中读取事件
事务日志:
由事务型存储自行管理和使用
清理日志:
PURGE BINARY LOGS TO
'mysql-bin.010'
;
#清除指定日志之前的二进制日志
PURGE BINARY LOGS BEFORE
'2008-04-02 22:46:26'
;
#清除指定时间之前的二进制日志
|