mysql日志
查看mysql版本
1. select version();
2. status;
1.错误日志
错误日志文件位置:如果在配置文件中没有指定,则文件名为hostname.err
可通过my.cnf文件进行配置
[mysqld_safe]
log-error=/var/log/mysql_err.log
通过echo >/var/log/mysql_err.log 清空文件
perror errno(错误日志报的错误代码) 查看错误描述
在win下是my.ini配置文件
当是在wamp环境下时
放在
[wampmysqld]
log-error=/var/log/mysql_err.log
下生效
2.通用查询日志
set global general_log=1;
或在配置里
general-log-file=path/filename
generl-log=1
通过查询
show variables like "%general_log%" ;查看上面2个选项的开启状态
[mysqld]
general-log-file=D:/wamp/bin/mysql/mysql5.5.20/hk_log/general.log
general-log=1
3.慢查询日志
相关参数
slow_query_log=on|off
slow_query_log_file=filename
long_query_time=2(单位秒)
long-queries-not-using-indexes= filename (所有没有使用到索引的查询语句)
min_examined_row_limit=1000
记录由于查找了多余1000次而引发的慢查询
log-slow-admin-statements
记录那些慢的optimize table,analyze table 和alter table语句
log-slow-slave-statements
由于slave所产生的慢查询
开启慢查询
set global slow_query_log=1
set long_query_time=2
select sleep(3);
慢查询分析工具
mysqldumpslow filename
mysqlsla filename
percona-toolkit 中pt-query-digest
4.二进制日志
查看数据库变更历史
数据库增量备份
数据库灾难恢复
mysql复制
set global.log_bin=1 (?)
在配置文件里开启
log_bin=D:/wamp/bin/mysql/mysql5.5.20/hk_log/logbin (不写 或者文件路径)
max-binlog-size=50m (设置单个二进制文件的最大值,不写值得话单位为字节,1m以下的设置不上)
binlog-do-db与binlog-ignore-db
指定(逗号分隔)二进制文件记录哪些数据库操作
binlog-cache-size=10m
设定二进制日志缓存大小
sync-binlog=N
每隔N秒将缓存中的二进制日志记录写回硬盘。默认0
不过你会经常陷入group commit函数与I/O二选一的矛盾
如果在replication环境中,由于考虑到耐久性和一致性,需要设置为1
同时还要设置 innodb_flush_log_at_trx_commit=1
及innodb-support-xa=1 (默认开启)
暂停二进制日志
mysql>set sql_log_bin=0|1
查看二进制日志(退出mysql执行)
mysqlbinlog 日志名称
mysqlbinlog -uroot -p D:/wamp/bin/mysql/mysql5.5.20/data/hkui-bin.000001
查看第一个binlog文件的内容
show binlog events;
查看指定binlog文件的内容
show binlog events in "二进制日志文件名"
这个二进制日志文件名 不是绝对路径,是到配置文件里找log_bin的值,然后只去文件名
比如 log_bin=D:/wamp/bin/mysql/mysql5.5.20/hk_log/my_bin
只能是
mysql>show binlog events in "my_bin.000001";
而不可以是绝对路径
如果配置里没那个文件 即使磁盘上有那个文件 也是找不到的
查看当前正在写入的binlog文件
show master status \G
获取binlog文件列表
show binary logs;
二进制日志的格式
binlog_format
mixed
statement(记录sql语句)
row(事务性二进制日志 二进制格式 最为完整,不止记录语句本身,还记录由语句引发的触发器 等操作)
mysqlbinlog 命令参数
--start-datetime=name (精确到秒)
--stop-datetime=name
-j,--start-position=#
--stop-position=#
恢复数据
mysqlbinlog my-bin.000001>backup.sql
mysqlbinlog my-bin.000002>>backup.sql (追加)
mysql dbname
删除二进制日志
1.操作系统命令直接删除
2.reset msater
3.purge
purge master|binary logs to "log_name" (从0开始删除到 )
purge master|binary log before 'date' (删除到某个日期以前)