Mysql日志管理
慢查询日志(查询量大时)
show global variables like '%log%';
long_query_time 超时时间默认10s
max_long_data_size 慢查日志的数据大小
slow_query_log 是否开启
slow_query_log_file 日志存放路径
二进制日志(记录任何引起或可能引起数据库变化的操作,可用作即时点恢复和数据库复制)
1.开启二进制日志
在/etc/my.cnf文件中【mysqld】下加上:
server-id = 1 (在整个Mysql集群中保证唯一)
log-bin = binlog
log-bin-index = binlog.index
2.查看当前正在使用的二进制日志文件
mysql>show master status;
mysql> show binlog events in '二进制日志文件名' from position
3.查看二进制日志文件,不能用cat要用mysqlbinlog
mysqlbinlog --start-datetime='2019-04-03 14:00:00' --stop-datetime='******' binlog.000001 > /root/a.sql
4.实现二进制日志滚动,出了重启服务之外
mysql> flush logs;
5.删除二进制日志文件
mysql> show binary logs; 查询所有的二进制文件
mysql> purge binary logs to 'binlog.000002'; 删除二进制日志文件之前的文件,日志保留这个二进制文件
6.是否将查询日志类信息记录进日志文件,一般用于恢复数据库时选择关闭
sql_log_bin | ON
7.因为每次sql语句的操作,同步二进制日志到磁盘的时候是异步的,存在缓存,是设定多久将缓存同步至磁盘,0表示不同步,任何正数值表示每多少次写操作之后同步一次,当aotocommit的值为1时,每条语句的执行都会引起二进制日志同步,否则每个事务的提交会引起二进制日志同步
sync_binlog | 5 表示每5个写操作同步一次到磁盘
中继日志(从主服务的二进制日志文件中复制而来的事件,并保存为的日志文件)
事务日志(事务性存储引擎保证原子性、一致性、隔离性和永久性)确保事务的本身的可靠性 innodb引擎才支持 show engines;
innodb_flush_log_at_trx_commit
0:每秒同步,并执行磁盘flush操作
1:每事务同步,并执行磁盘flush操作
2:每事务同步,但不执行磁盘flush操作