DBA进阶之binlog解析与清理策略

一、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 

注:若转载本文,请附上本文转载链接,码字不易,希望理解!

你可能感兴趣的:(MySQL,DBA)