MySQL深入08-日志及其参数设定

           

查询日志

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,不建议开启此日志;


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

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 # 是否记录详细格式的日志信息;


错误日志

主要记录内容

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

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

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

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

参数设定

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 #,相当于下一事件的开始位置

设定参数

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


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

设定参数

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操作;

设定参数

wKioL1NXy6fi3sQ1AANpGEcPAlk406.jpg


上一篇:MySQL深入07-查询缓存

下一篇:MySQL深入09-备份-恢复


你可能感兴趣的:(File,记录,信息)