一、mysqlbinlog介绍
二进制日志;
记录DML、DDL、DCL,不记录select查询语句;
可做备份恢复,结合xtrabackup工具的原理理解;
查看binlog文件:
mysql> SHOW BINARY LOGS;
+-------------------+-----------+
| Log_name | File_size |
+-------------------+-----------+
| otter2-bin.000002 | 78381 |
| otter2-bin.000003 | 143 |
| otter2-bin.000004 | 18248 |
+-------------------+-----------+
3 rows in set (0.00 sec)
二、binlog的 3种模式
1、statement模式:
记录能引起数据改变的sql语句
2、row模式
记录每一行的变化。update1行记录一行,update100w行,就得记录100w次行变化。
#row 模式细分为full和minmal模式,默认是full模式,minmal只记录更改的行
3、mixed模式:
mixed=statement+row,mysql择优选择,属于混合模式。
查看binlog_format:
mysql> show variables like '%binlog_format%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW |
+---------------+-------+
1 row in set (0.00 sec)
三、binlog的解析工具
1、mysqlbinlog工具
mysqlbinlog --help ##查看详细用法
举例:# mysqlbinlog -vv otter2-bin.000001 |grep -C 20 'DELETE FROM `mdh`.`mi`'
注:grep -C 20 过滤目标‘行’的前后20行
四、binlog刷新和清理
命令行清理binlog日志:
1、清理7天前的日志
mysql> show binary logs;
mysql> PURGE MASTER LOGS BEFORE DATE_SUB(NOW( ), INTERVAL 7 DAY);
2、清理某个日期前的日志
mysql> PURGE MASTER LOGS BEFORE '2020-06-29 18:40:00';
3、binlog定时清理
#mysql my.cnf内添加如下参数,表示定时清理10天前的binlog日志
expire_logs_days =10
注:若转载本文,请附上本文转载链接,码字不易,希望理解!