先来聊聊MySQL的binlog文件解析简介MySQL binlog的三种工作模式binlog相关参数mysqlbinlog解析工具看腻了文章就来听听视频讲解吧https://www.bilibili.com/video/BV1F94y1s7xe/简介MySQL的binlog日志是用来记录MySQL对数据库有变更操作的记录包括DDL和DML除了select或show等查询类语句不会被binlog日志记录以事件形式记录还包含语句所执行的消耗的时间MySQL的二进制日志是事务安全型的。binlog文件类型二进制索引文件(后缀名为.index)日志文件(后缀名为.00000*),记录数据库所有的DDL和DML(除了查询语句select)语句事件用途主要用于数据库的主从复制和数据恢复主从复制MySQL Replication在Master端开启binlogMaster把它的二进制日志传递给slaves来达到master-slave数据一致的目的。数据恢复通过使用mysqlbinlog工具来恢复数据。MySQL binlog的三种工作模式statement格式生产环境不建议使用优点不需要记录每一行的变化减少了binlog日志量节约I/O提高性能缺点使用特殊函数或跨库操作时容易丢失数据row格式生产环境建议使用优点记录每行数据被修改的情况安全性高缺点会产生大量binlog网络开销也较大mixed格式生产环境不建议使用MySQL5.1的一个过渡版本DDL语句会记录成statementDML会记录成rowbinlog相关参数-- binlog开关mysqlshowvariableslikelog_bin%;----------------------------------------------------------------|Variable_name|Value----------------------------------------------------------------|log_bin|ON|log_bin_basename|/mysqldata/data/mysql-bin|log_bin_index|/mysqldata/data/mysql-bin.index|log_bin_trust_function_creators|OFF|log_bin_use_v1_row_events|OFF----------------------------------------------------------------5rowsinset(0.00sec)-- binlog工作模式mysqlshowvariableslikebinlog_format;----------------------|Variable_name|Value|----------------------|binlog_format|ROW|----------------------1rowinset(0.00sec)-- binlog文件大小1073741824/1024/1024/10241GBmysqlshowvariableslikemax_binlog_size;-----------------------------|Variable_name|Value|-----------------------------|max_binlog_size|1073741824|-----------------------------1rowinset(0.00sec)-- 安全参数 binlog过期天数自动清理建议全备周期2倍mysqlshowvariableslikeexpire_logs_days;-------------------------|Variable_name|Value|-------------------------|expire_logs_days|0|--------------------------- 查看biglog日志文件所在点最后一个为当前binlog日志文件mysqlshowmaster logs;-----------------------------|Log_name|File_size|-----------------------------|mysql-bin.000012|8736||mysql-bin.000013|3087|-----------------------------2rowsinset(0.00sec)-- 重新生成一个binlog日志mysqlflush logs;-- 重置(清空)所有binlog日志(慎用)mysqlreset master;mysqlbinlog解析工具mysqlbinlog解析工具是安装MySQL时自带的一款用于将MySQL的binlog日志转换成“SQL语句”默认情况下binlog日志是二进制文件无法直接查看。# 解析binlog文件打印误操作SQL前后各10行选择要恢复的结束位点 # at xxoomysqlbinlog-v-v mysql-bin.000002|grepDROP xxoo-A10-B10# 统计DML操作频繁的表ROW模式统计的是行数statement模式统计的是次数[rootdb01data]# mysqlbinlog --no-defaults --base64-outputdecode-rows -v -v mysql-bin.000012 | awk /###/{if($0~/UPDATE|INSERT|DELETE/)count[$2 $NF]}END{for(i in count)print i,\t,count[i]} | column -t | sort -k3nr | moreINSERTmdb.t129UPDATEmdb.t125DELETEmdb.t123MySQL的binlog系列和奇技操作先来聊聊MySQL的binlog文件解析接着说说mysqlbinlog解析工具如何做数据恢复再来谈谈如何从binlog文件恢复误update的数据模拟Oracle的闪回功能接着聊聊如何从binlog文件恢复误delete的数据模拟Oracle的闪回功能借用binlog2sql工具轻松解析MySQL的binlog文件再现Oracle的闪回功能再来介绍另一个binlog文件解析的第三方工具my2sql顺带来聊聊MySQL误删ibdata数据文件的恢复MySQL大表直接复制文件的copy方式发现了一个前沿巨牛的宝藏人工智能学习网站通俗易懂风趣幽默忍不住给大家分享一下。戳一下跳转到学习
先来聊聊MySQL的binlog文件解析
先来聊聊MySQL的binlog文件解析简介MySQL binlog的三种工作模式binlog相关参数mysqlbinlog解析工具看腻了文章就来听听视频讲解吧https://www.bilibili.com/video/BV1F94y1s7xe/简介MySQL的binlog日志是用来记录MySQL对数据库有变更操作的记录包括DDL和DML除了select或show等查询类语句不会被binlog日志记录以事件形式记录还包含语句所执行的消耗的时间MySQL的二进制日志是事务安全型的。binlog文件类型二进制索引文件(后缀名为.index)日志文件(后缀名为.00000*),记录数据库所有的DDL和DML(除了查询语句select)语句事件用途主要用于数据库的主从复制和数据恢复主从复制MySQL Replication在Master端开启binlogMaster把它的二进制日志传递给slaves来达到master-slave数据一致的目的。数据恢复通过使用mysqlbinlog工具来恢复数据。MySQL binlog的三种工作模式statement格式生产环境不建议使用优点不需要记录每一行的变化减少了binlog日志量节约I/O提高性能缺点使用特殊函数或跨库操作时容易丢失数据row格式生产环境建议使用优点记录每行数据被修改的情况安全性高缺点会产生大量binlog网络开销也较大mixed格式生产环境不建议使用MySQL5.1的一个过渡版本DDL语句会记录成statementDML会记录成rowbinlog相关参数-- binlog开关mysqlshowvariableslikelog_bin%;----------------------------------------------------------------|Variable_name|Value----------------------------------------------------------------|log_bin|ON|log_bin_basename|/mysqldata/data/mysql-bin|log_bin_index|/mysqldata/data/mysql-bin.index|log_bin_trust_function_creators|OFF|log_bin_use_v1_row_events|OFF----------------------------------------------------------------5rowsinset(0.00sec)-- binlog工作模式mysqlshowvariableslikebinlog_format;----------------------|Variable_name|Value|----------------------|binlog_format|ROW|----------------------1rowinset(0.00sec)-- binlog文件大小1073741824/1024/1024/10241GBmysqlshowvariableslikemax_binlog_size;-----------------------------|Variable_name|Value|-----------------------------|max_binlog_size|1073741824|-----------------------------1rowinset(0.00sec)-- 安全参数 binlog过期天数自动清理建议全备周期2倍mysqlshowvariableslikeexpire_logs_days;-------------------------|Variable_name|Value|-------------------------|expire_logs_days|0|--------------------------- 查看biglog日志文件所在点最后一个为当前binlog日志文件mysqlshowmaster logs;-----------------------------|Log_name|File_size|-----------------------------|mysql-bin.000012|8736||mysql-bin.000013|3087|-----------------------------2rowsinset(0.00sec)-- 重新生成一个binlog日志mysqlflush logs;-- 重置(清空)所有binlog日志(慎用)mysqlreset master;mysqlbinlog解析工具mysqlbinlog解析工具是安装MySQL时自带的一款用于将MySQL的binlog日志转换成“SQL语句”默认情况下binlog日志是二进制文件无法直接查看。# 解析binlog文件打印误操作SQL前后各10行选择要恢复的结束位点 # at xxoomysqlbinlog-v-v mysql-bin.000002|grepDROP xxoo-A10-B10# 统计DML操作频繁的表ROW模式统计的是行数statement模式统计的是次数[rootdb01data]# mysqlbinlog --no-defaults --base64-outputdecode-rows -v -v mysql-bin.000012 | awk /###/{if($0~/UPDATE|INSERT|DELETE/)count[$2 $NF]}END{for(i in count)print i,\t,count[i]} | column -t | sort -k3nr | moreINSERTmdb.t129UPDATEmdb.t125DELETEmdb.t123MySQL的binlog系列和奇技操作先来聊聊MySQL的binlog文件解析接着说说mysqlbinlog解析工具如何做数据恢复再来谈谈如何从binlog文件恢复误update的数据模拟Oracle的闪回功能接着聊聊如何从binlog文件恢复误delete的数据模拟Oracle的闪回功能借用binlog2sql工具轻松解析MySQL的binlog文件再现Oracle的闪回功能再来介绍另一个binlog文件解析的第三方工具my2sql顺带来聊聊MySQL误删ibdata数据文件的恢复MySQL大表直接复制文件的copy方式发现了一个前沿巨牛的宝藏人工智能学习网站通俗易懂风趣幽默忍不住给大家分享一下。戳一下跳转到学习