日志类型:
错误日志(error log)
常规日志(general log)
二进制日志(bin log)
中继日志(relay log)
慢日志(slow log)
InnoDB引擎的redo log
错误日志
log-error = error.log
不加存储路径存储到datadir下,如果不指定名字是hostname.err
记录mysql启动关闭,运行中的异常或是重要提示信息
在生产环境中,监控这个日志
全量日志(常规日志)
general_log = OFF|ON
general_log_file = general.log
不指定路径存储到datadir下,如果不指定名字是hostname.log
开启后,记录client和数据库的所有请求
二进行日志 最大文件数为2的32次方个
log-bin = /data/mysql/mysql3306/logs/mysql-bin
设置二进制日志的存储位置及prefix名字
用记录数据库写入操作的日志,可以用于备份或是master/slave的复制,必须有server-id
如果没有可以通过修改内存里的值加上,但是有风险
不能太快产生,尽量大些,5分钟左右产生一个日志
log_bin = /data/mysql/mysql3306/log/mysql-bin 是否开启binlog
log_bin_index = /data/mysql/mysql3306/log/mysql-bin.index
指定binlog的一个索引文件,默认是在datadir形成log_bin的prefix名index
binlog_do_db = thunder
用于指定只记录那个库的二进制日志(建议不要用)
max_binlog_size = 500M
指定binlog的大小为500M一个文件,默认是1G
expire-logs-days = 5
指定保留binlog的天数
binlog_format = row
指定binlog的日志格式,支持statement,row,mixed格式
statement格式记录原生的sql
row格式里没有,但5.6后增加了一个query event可以看到原来的sql
binlog_rows_query_log_events 默认是off
mixed格式是两种形式的混合体,DDL语句记录statement格式,DML语句记录row格式
推荐使用row格式
binlog_row_p_w_picpath = full
控制日志中binlog的详细相关的程度,支持full(default),minimal,nobolb
minimal:只记录变化的行和唯一标识列
nobolb:除了blob,text其它列都记
binlog_error_action = abort_server
当遇到mysql不能写binlog时,报出异常,默认是ignore error不报错
binlog_direct_non_transactional_updates = on
对于非事务引擎表,直接走日志,不走2pc提交,默认是不支持
binlog_order_commit = on
按顺序写入日志
binlog_cache_size=1M 已经很大
此参数表示binlog使用的内存大小,可以通过状态变量binlog_cache_use和bin_cache_disk_use 来帮助测试
binlog_cache_use:使用二进制日志缓存的事务数量
binlog_cache_disk_use:使用二进制日志缓存但超过binlog_cache_size值并使用临时文件来保存事务中的语句的事务数量
binlog_checksum (5.6.2引入)在高版本上修改
mysql5.6.6后默认是crc32,之前版本是none
在启用这个参数之前对于日志的完整校验就是通过对比长度,引入新的方式后,利用新方法对内容进行校验
binlog_rows_query_log_events (5.6.2引入)
只作用于RBR格式,默认不启用
如果启用,会把用户写直的原生态DML操作记录到binlog中
log_bin_use_v1_row_events (5.6.6引入)
默认是0,如果使用1是使用Version1的格式,mysql5.5可以认出来的形式,如果0是5.6.6后使用的version2格式
sync_binlog = 1|0
这个参数对性能影响严重,数据一致性条件要求高调整为1,性能差别大概为10倍
当事务提交后,mysql仅仅是将binlog_cache中的数据写入binlog文件,但不执行fsync之类的磁盘同步指令通知文件系统将缓存刷新到磁盘,面让filesystem自行决定什么时候来同步,这个是性能最好的。
sync_binlog=n 在进行n次事务提交以后,mysql将执行一次fsync之类的磁盘同步指令,同步文件系统将binlog文件缓存刷新到磁盘。
mysql中默认的设置是sync_binlog=0,即不作任何强制性的磁盘刷新指令,这是性能是最好的,但风险也是最大的。一旦系统crash,在文件系统缓存中的所有binlog信息都会丢失
中继日志
relay-log = relay-bin
设置中继日志的名称前缀,不指定路径默认在datadir下
log_thread从master就读到的日志写到中继日志中,供sql_thread执行,以完成复制
慢日志
slow-query-log-file = slow.log
slow-query-log
long_query_time=1
是怎么计时的,
ddl语句 exec时间
dml语句 select从等待锁开始计时,insert只记录执行时间
利用slow-query-log这个参数打开慢日志,slow-query-log-file指定慢日志的名称,不指定路径默认在datadir下
建议每天一个文件,时间长可能会很大,做定时任务
Innodb的redo log 《事务处理概念》事务处理圣经
innodb_log_group_home_dir=/data/mysql/mysql3317/logs 默认在datadir下
SSD磁盘中,日志文件不要放在SSD磁盘中,普通硬盘即可
innodb_log_file_size = 200M 512M左右即可
innodb_log_files_in_group = 3 个数
指定redo log的存储位置及大小,文件个数
Innodb事务操作不可缺少的一个环节