MySQL的BinLog
1 | -- 是否启用binlog日志 |
1 | -- 1、查看所有binlog日志列表 |
配置文件
Windows:C:\ProgramData\MySQL\MySQL Server 8.0\my.ini
1 | max_binlog_size = 1G |
3、MySQL binlog的三种工作模式
Row level
日志中会记录每一行数据被修改的情况,然后在slave端对相同的数据进行修改。
优点:能清楚的记录每一行数据修改的细节
缺点:数据量太大
Statement level(默认)
每一条被修改数据的sql都会记录到master的bin-log中,slave在复制的时候sql进程会解析成和原来master端执行过的相同的sql再次执行
优点:解决了 Row level下的缺点,不需要记录每一行的数据变化,减少bin-log日志量,节约磁盘IO,提高新能
缺点:容易出现主从复制不一致
Mixed(混合模式)
结合了Row level和Statement level的优点
解析日志
配置MySQL的环境变量,可以在控制台直接使用命令
PS C:\ProgramData\MySQL\MySQL Server 8.0\Data> mysqlbinlog.exe –base64-output=decode-rows -v DESKTOP-FANGYOU-bin.000001
导出文件:
PS C:\ProgramData\MySQL\MySQL Server 8.0\Data> mysqlbinlog.exe –base64-output=decode-rows -v DESKTOP-FANGYOU-bin.000001 -r D:\1.sql
转换为SQL语句
[root@localhost workspace]# cat 1.sql | sed -n ‘/###/p’ | sed ‘s/### //g;s//*./,/g;s/DELETE FROM/INSERT INTO/g;s/WHERE/SELECT/g;’ | sed -r ‘s/(@4.),/\1;/g’ | sed ‘s/@[1-9]=//g’
1 | 先去除###无用信息 |
使用mysql的binlog恢复误操作(update|delete)的数据
Mysql通过binlog恢复误update的数据
mysql 通过binlog来进行忘记where误操作(delete/update)的数据恢复