转载自:https://www.cnblogs.com/f-ck-need-u/p/9001061.html
日志刷新
mysql> FLUSH LOGS;
错误日志
简介
错误日志记录了MySQL Server每次启动和关闭的详细信息以及运行过程中所有较为严重的警告和错误信息。
查看错误日志
mysql> show variables like 'log_error';
一般查询日志
- 建议关闭,默认关闭
- 一般查询日志查询的不止是select语句,几乎所有的语句都会记录
开启一般查询日志
mysql> set @@global.general_log=1;
关闭一般查询日志
mysql> set @@global.general_log=0;
慢查询日志
查询超出变量 long_query_time 指定时间值的为慢查询。但是查询获取锁(包括锁等待)的时间不计入查询时间内
设置变量
set global slow_query_log_file=/sql_log/slow_log.log;
set global log_queries_not_using_indexes=on;
set global long_query_time=0.001;
set global low_query_log=on;
分析慢查询日志
mysqldumpslow slow_log.log
二进制日志
- 二进制日志包含了引起或可能引起数据库改变(如delete语句但没有匹配行)的事件信息,但绝不会包括select和show这样的查询语句。语句以"事件"的形式保存,所以包含了时间、事件开始和结束位置等信息
查看二进制文件
mysql> show binary logs;
查看二进制文件是否开启
mysql>show variables like 'log_bin';
开启二进制文件
查看服务器
show variables like '%server_id%'
1.修改my.ini
[mysqld]
log_bin = mysql_bin #日志文件名称,未指定位置,默认数据文件位置,这里还可以配置不同服务器的id
server_id = 2; # 不同服务器可以叫不同的数字1,2,3....
2.重启mysql服务器
windows
service mysqld restart
ubuntu
/etc/init.d/mysql restart
cent os
/etc/init.d/mysqld restart
3.查看二进制文件是否开启
mysql>show variables like 'log_bin';
查看正在写入的二进制文件
show master status;
格式化输出二进制文件
- Log_name:此条log存在哪个文件中
- Pos:log在bin-log中的开始位置
- Event_type:log的类型信息
- Server_id:可以查看配置中的server_id,表示log是哪个服务器产生
- End_log_pos:log在bin-log中的结束位置
- Info:log的一些备注信息,可以直观的看出进行了什么操作
不指定日志文件
show binlog events\G;
指定日志文件
show binlog events in 'mysql-bin.000001';
删除二进制日志
重新开始
mysql>reset master;
删除编号之前二进制日志
mysql> purge master logs to 'mysql-bin.000002';
删除时间之前二进制日志
mysql> purge master logs before 'yyyy-mm-dd hh:mm:ss';
二进制日志导出
按时间导出
mysqlbinlog --start-datetime="2015-07-02 11:25:56" --stop-datetime="2015-07-02 14:20:10" mysql-bin.000001 > /data/test01.log
按事件位置导出
mysqlbinlog --start-position=203 --stop-position=203 mysql-bin.000001 > /data/test02.log
恢复数据库
完整恢复
mysqlbinlog mysql-bin.000001 > /tmp/a.sql
mysqlbinlog mysql-bin.000002 >>/tmp/a.sql
mysql -u root -p password -e "source /tmp/a.sql"
基于位置恢复
mysqlbinlog --stop-position=6259 mysql-bin.000001 | mysql -uroot -p
mysqlbinlog --start-position=5786 --stop-position=6254 mysql-bin.000001 | mysql -uroot -p
基于时间恢复
mysqlbinlog --stop-date='2015-06-04 9:59:59' mysql-bin.000001 | mysql -uroot -p
mysqlbinlog --start-datetime="2015-07-02 11:25:56" --stop-datetime="2015-07-02 14:20:10" mysql-bin.000001 | mysql -u root -p
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)