1.错误日志(log_error)
记录启动\关闭\日常运行过程中,状态信息,警告,错误
错误日志配置
默认就是开启的:/数据路径下/hostname.err
主要关注[ERROR],看上下文
vim/etc/my.cnf
log_error=/var/log/mysql.log
log_timestamps=system重启生效
binlog(binary logs):二进制日志 *****
作用
(1)备份恢复必须依赖二进制日志
(2)主从环境必须依赖二进制日志
binlog配置 (5.7必须加server_id)
注意:MySQL默认是没有开启二进制日志的。
基础参数查看:开关:[(none)]>select @@log_bin;
日志路径及名字[(none)]>select @@log_bin_basename;
设置 服务ID号:[(none)]>select @@server_id;
二进制日志格式:[(none)]>select @@binlog_format;
双一标准之二:[(none)]>select @@sync_binlog;
创建日志目录
mkdir/data/binlog
chown-R mysql.mysql/data/binlog
修改配置文件
重启数据库生效
[root@db01 mysql]#/etc/init.d/mysqld restart
binlog记录了什么?
记录数据库所有变更类的操作日志
DDL DCL DML
DDL :原封不动的记录当前DDL(statement语句方式)。
DCL :原封不动的记录当前DCL(statement语句方式)。
DML :只记录已经提交的事务DML
DML三种记录方式
binlog_format(binlog的记录格式)参数影响
(1)statement(5.6默认)SBR(statement based replication):语句模式原封不动的记录当前DML。
(2)ROW(5.7 默认值)RBR(ROW based replication):记录数据行的变化(用户看不懂,需要工具分析)
(3)mixed(混合)MBR(mixed based replication)模式 :以上两种模式的混合
二进制日志记录单元
event 事件
二级制最小记录单元
DDL: create database ten;每个语句就是一个事件
DML:
begin 事件1
a 事件2
b 事件3
commit; 事件4
日志文件查看
查看日志的开启情况
查看二进制事件
binlog文件内容详细查看
mysqlbinlog--base64-output=decode-rows-vvv/data/binlog/mysql-bin.000003
mysqlbinlog--start-datetime='2019-05-06 17:00:00'--stop-datetime='2019-05-06 17:01:00'/data/binlog/mysql-bin.000004
基于Position号进行日志截取
核心就是找截取的起点和终点
--start-position=321
--stop-position=513
mysqlbinlog--start-position=219--stop-position=1347/data/binlog/mysql-bin.000003>/tmp/bin.sql
案例:使用binlog日志进行数据恢复模拟:
1.[(none)]>create database binlog charset utf8;
2.[(none)]>use binlog;[binlog]>create tablet1(idint);
3.[binlog]>insertintot1values(1);
[binlog]>commit;
[binlog]>insertintot1values(2);
[binlog]>commit;
[binlog]>insertintot1values(3);
[binlog]>commit;
4.[binlog]>drop database binlog;
恢复:[(none)]>show master status;
[(none)]>show binlog eventsin'mysql-bin.000004';
[root@db01 binlog]# mysqlbinlog--start-position=1227--stop-position=2342/data/binlog/mysql-bin.000004>/tmp/bin.sql
[(none)]>setsql_Log_bin=0; 临时关闭恢复时产生的日志
[(none)]>source/tmp/bin.sql
[(none)]>setsql_Log_bin=1;记得改回来
mysqlbinlog-d binlog/data/binlog/mysql-bin.000003 过滤到某个库来进行恢复