mysql日志
错误日志
查看错误代码
[root@jin ~]# perror 16
OS error code 16: Device or resource busy
通用查询日志
通常不开启,当需要采样分析时开启,分析结束记得要关闭,不然对服务器的性能会有影响
在mysql中直接设置
set global general_log=1;
修改mysql配置文件
[mysqld]
general-log-file[=path]
general-log=1
慢查询日志
当查询结果超过一定的时间没有返回结果时才会记录
可以查找出执行效率低的sql语句,为数据库优化提供帮助
默认不开启,需要采样分析时开启
采样分析结束后关闭
1.使用配置文件开启慢查询日志
#是否开启慢查询日志,(mysql中 _ 和 - 意义相同,slow_query_log 和 slow-query-log 意义相同)
slow_query_log=on|off
#指定日志文件路径,默认路径为数据库文件所在目录下,名称为hostname-slow.log
slow_query_log_file=path
#指定多少秒未返回结果的查询语句数据慢查询
long_query_time=2-
#记录所有没有使用到索引的查询语句
long-queries-not-using-indexes
#有查找多于了1000次而引发的慢查询,例如全表扫描之类的
min_examined_row_limit=1000
#记录慢的 optimize table, analyze table, alter table 语句
log-slow-admin-statements
# 记录由slave所产生的慢查询
log-slow-slave-statements
2.直接在mysql中修改
set @@global.slow_query_log=1;
#set global slow_query_log=1;#与上一行意义相同
set @@global.long_query_time=3;
其他参数可以通过如下命令查阅
show variables like "%slow%";
慢查询分析工具
# mysql官方安装包里面就有
mysqldumpslow
# 第三方工具
mysqlsla
#percona-toolkit中的pt-query-digest
二进制日志
记录对数据发生或潜在发生更改的sql语句
二进制格式保存
用途广泛,包括,查看数据库变更历史,数据库增量备份,数据库灾难恢复,mysql赋值
1.在mysql中直接开启
set @@global.log_bin=1;
set @@global.binlog_size=37268;#单位 bytes
show variables like "%bin%";#查看其他相关参数
2.在配置文件中开启
#开启并指定二进制日志保存路径及文件名,默认值为 hostname-bin.xxx
log-bin=
#设置单个二进制日志文件的最大值,默认为1GB,最大为1GB
max-binlog-size=500m
#记录sql语句的方式,有三种STATEMENT,ROW,MIXED,默认为STATEMENT,STATEMENT性能较高,但某些情况可能导致主从服务器数据不同步,ROW能保证数据的一致性,但是性能较低,日志文件较大,MIXED是两种方式的混合,详情可查看 http://jinblog.com/archives/704.html
binlog_format=STATEMENT
#指定二进制日志文件记录哪些数据库的操作
binlog-do-db=test# 指定记录哪些库
bingo-ignore-db=test1# 指定忽略那些库
#二进制日志缓存大小
binlog-cache-size=100m
#每隔n秒将缓存中的二进制日志记录写回硬盘,默认为0。不过,你经常会陷入group commit函数与I/O之间二选一的矛盾(commit是并发的,而binlog的记录是串行的)。如果在replication环境中,由于考虑到耐久性和一致性,则需要设置为1,同时还需要设置innodb_flush_log_at_trx_commit=1以及innodb-support-xa=1(默认开启)
sync-binlog=n
暂停日志
set sql_log_bin=(0|1);
查看二进制日志
mysqlbinlog hostname-bin.000002
使用二进制日志恢复数据
mysqlbinlog host-bin.000002 | mysql
或
mysqlbinlog host-bin.000001 > backup.sql
mysqlbinlog host-bin.000002 >> backup.sql
mysql dbname < backup.sql
删除二进制日志
二进制日志会不断增长,并产生多个文件,因此需要制定备份计划和管理策略,无用的二进制日志文件需要及时删除
删除二进制日志的三种方法
1.操作系统直接删除二进制日志文件
2.reset master
3.purge
purge {master|binary} logs to 'log_name';
purge {master|binary} logs before 'date';
例子
# 删除000003之前的二进制日志文件(000001和000002)
purge master logs to 'host-bin.000003';