博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL深入08-日志及其参数设定
阅读量:6622 次
发布时间:2019-06-25

本文共 2300 字,大约阅读时间需要 7 分钟。

查询日志

1
2
3
4
log={ON|OFF} 
# 是否记录所有语句的日志信息于一般查询日志文件(general_log)中;
log_output={TABLE | FILE | NONE} 
# 定义log保存形式,none表示不保存日志;table和file可以同时出现,用逗号分隔即可;
general_log={ON|OFF} 
# 是否启动查询日志;
general_log_file 
# 定义一般查询日志保存的文件;

  • 若想开启查询日志,则log和general_log参数都必须处于ON状态;

  • 对于繁忙的MySQL,不建议开启此日志;

慢查询日志:查询执行时长超过指定时长的查询,即为慢查询

1
2
3
4
5
6
7
long_query_time 
# 定义慢查询的时长;
slow_query_log {ON|OFF} 
# 全局参数,设定是否启用慢查询日志;它的输出位置也取决于log_output的值;
slow_query_log_file 
# 定义日志文件路径及名称;
log_slow_filter 
# 慢查询日志过滤类型;
log_slow_queries 
# 是否启用慢查询日志,会话级别的;
log_rate_limit=1 
# 定义其日志记录速率;
log_slow_verbosity 
# 是否记录详细格式的日志信息;

错误日志

主要记录内容

  • 服务器启动和关闭过程中的信息;

  • 服务器运行过程中的错误信息;

  • 事件调度器运行一个事件时产生的信息;

  • 在复制架构中从服务器上启动从服务器线程时产生的信息;

参数设定

1
2
log_error = 
/path/to/error_log_file 
# 定义错误日志文件
log_warnnings = {1|0} 
# 是否记录警告信息于错误日志中

二进制日志:记录了对MySQL数据库进行的修改操作

功能:数据时间点恢复;复制架构中使用;

MySQL记录二进制日志的格式

statement:基于语句

  • 缺陷:执行带时间函数的语句时,会导致主从服务器执行结果不一致;

  • 如 insert into tb1 value (current_date());

row:基于行

  • 缺陷:批量更新操作将导致从服务器进行更多的操作 update tb2 set salary=salary+1000;

  • mixed:混合模式,由MySQL自行判断选择适合的方式基于语句或基于行记录日志;

二进制日志文件的内容格式

  • 事件发生的日期和时间

  • 服务器id:server_id

  • 事件的结束位置:end_log_pos

  • 事件的类型:如Query,GTID等

  • 原服务器生成此事件时的线程id:thread_id

  • 语句的时间戳和写入二进制日志文件的时间差,exec_time

  • 错误代码:error_code

  • 事件位置:at #,相当于下一事件的开始位置

设定参数

1
2
3
4
5
6
7
8
log_bin = {ON|OFF|FileName} 
# 全局变量,控制二进制文件位置
log_bin_trust_function_creators 
# 全局变量,仅在启用二进制日志时有效,用于控制创建存储函数时如果会导致不安全的事件是否禁止创建存储函数
sql_log_bin = {ON|OFF} 
# 会话级别,用于控制二进制日志信息是否记录进日志文件
sync_binlog 
# 设定多久同步一次二进制日志至磁盘文件中,0表示不同步,任何正数值都表示对二进制每多少次写操作之后同步一次;
binlog_format={statement|row|mixed} 
# 指定二进制日志的类型
max_binlog_cache_size= 
# 二进制日志缓冲空间大小,仅用于缓冲事务类的语句, 其上限由max_binlog_stmt_cache_size决定
max_binlog_size= 
# 二进制日志文件大小上限,单位字节,默认大小1G
# 注:切勿将二进制日志与数据文件放在同一磁盘上,减少磁盘I/O

中继日志:在从服务器上的同步主服务器操作的日志

设定参数

1
2
3
4
relay_log=file_name 
# 设定中继日志的文件名称
relay_log_index=file_name 
# 设定中继日志的索引文件名,默认为为数据目录中的host_name-relay-bin.index
relay_log_purge={ON|OFF} 
# 是否自动清理不再需要的中继日志
relay_log_space_limit= 
# 设定用于存储所有中继日志文件的可用空间大小,0表示不限制

事务日志

  • 暂存事务提交的数据,实现将随机I/O转换成顺序I/O;

  • 事务数据提交流程:innodb_buffer-->事务日志-->数据文件;

  • 事务日志文件组,至少应该有2个日志文件,一般保存在数据目录下,为ib_logfile0和ib_logfile1;

注意事项

  • 尽可能使用小事务以提升事务引擎的性能;因为事务越大,回滚开销越大;

  • 崩溃恢复:将提交的事务从事务日志中同步至数据文件,将未提交的事务执行回滚操作,以保证数据一致性;

  • 避免磁盘故障导致事务文件丢失:对事务日志所在的磁盘做数据镜像;

  • 事务日志文件和数据文件应分离存放:防止对同一磁盘过于频繁的I/O操作;

设定参数

本文转自 xxrenzhe11 51CTO博客,原文链接:http://blog.51cto.com/xxrenzhe/1401451,如需转载请自行联系原作者
你可能感兴趣的文章
SQL Server 2012:SQL Server体系结构——一个查询的生命周期(第1部分)
查看>>
Ubuntu启动sshd服务
查看>>
Java排序算法(三):直接插入排序
查看>>
推断图片格式
查看>>
Python 列表 min() 方法
查看>>
C语言中 Float 数据结构的存储计算
查看>>
HSF源码阅读
查看>>
1.Flask URL和视图
查看>>
【死磕jeesite源码】Jeesite配置定时任务
查看>>
MFC更换窗口图标
查看>>
[三]JavaIO之IO体系类整体设计思路 流的概念以及四大基础分类
查看>>
Java 读取某个目录下所有文件、文件夹
查看>>
朱晔和你聊Spring系列S1E2:SpringBoot并不神秘
查看>>
2013年度第一期测试沙龙 PPT下载
查看>>
我的Java后端书架 (2016年暮春3.0版)
查看>>
两行代码搞定UITableView无数据无网络显示-b
查看>>
Microsoft Speech SDK开发包 使用
查看>>
Android应用开发基础篇(2)-----Notification(状态栏通知)
查看>>
10 款非常棒的CSS代码格式化工具推荐
查看>>
SQL Server 临时表的删除
查看>>