1、log_error
1.1 作用:排查错误故障
1.2 开启
默认就是开启的
数据路径下hostname.err
vim /etc/my.cnf
log_error=/var/log/mysql.log
1.3 查看日志
查看[error]行
2、binlog 二进制日志
2.1 作用:
(1)数据及时点恢复
(2)复制
2.2 开启二进制日志(5.7)
server_id=6
log_bin=/data/mysql/mysql-bin
binlog_format=row
重启数据库生效
2.3 二进制日志记录了什么?
记录MySQL数据库所有变更类的语句
(1)DDL DCL 直接记录语句,每条语句就是一个事件(event)
(2)DML(标准事务update,delete,insert)语句,记录是begin+DML+commit,只记录已经提交的事务
begin
update
update
commit
一个事务会被拆分成多个事件记录
2.4 event是什么?
二进制日志记录的最小单元
event=开始位置(start-position)+事件内容+结束位置(stop-position)
2.5 二进制日志的记录格式(主要针对DML)
SBR statement 语句模式
把发生过的语句直接记录下来
insert into t1(sdate) values(now())
RBR row 行模式(默认模式)
记录数据行的的变化
MBR mixed 混合模式
2.6 二进制日志查看
存在性查看:
root@localhost-mysql.sock>show binary logs;
root@localhost-mysql.sock>show master status;
日志内容方面查看:
查看二进制日志事件
show binlog events in ‘mysql-bin.000001‘ limit 3,3
查看二进制日志具体内容
mysqlbinlog /data/mysql/mysql-bin.000001 mysqlbinlog
mysqlbinlog --base64-output=decode-rows -vvv /data/mysql/mysql-bin.000001 mysqlbinlog
mysqlbinlog -d world --base64-output=decode-rows -vvv /data/mysql/mysql-bin.000001 mysqlbinlog
2.7 二进制日志使用
找起点和终点 :
截取:
mysqlbinlog --start-position=3368 --stop-position=4199 /data/mysql/mysql-bin.000001 >/tmp/binlog.sql
恢复:
set sql_log_bin=0;
source /tmp/binlog.sql
set sql_log_bin=1;
2.8 其他操作
(1)日志滚动
flush logs;
重启mysqld
默认日志文件达到1G也会自动滚动
备份加入一些参数
(2)日志删除
set global expire_logs_days = 7;
PURGE BINARY LOGS TO ‘mysql-bin.000010‘;
PURGE BINARY LOGS BEFORE ‘2008-04-02 22:46:26‘;
(3)日志全部删除,从000001开始重新
3、slow-log 慢日志
slow_query_log=1
slow_query_log_file=/data/mysql/slow.log
long_query_time=0.05
log_queries_not_using_indexes=1