mysql 日志恢复

一:查看是否开启binlog日志

java 复制代码
show variables like 'log_%'; 

二:查看日志存放目录:

java 复制代码
SHOW VARIABLES LIKE '%datadir%';

三:查看日志列表

java 复制代码
show binary logs; #获取binlog文件列表 
show master status; #查看当前正在写入的binlog文件

四:导出指定binlog日志

java 复制代码
#把bin.00032日志转成temp.sql(时间是2024-09-11 8:54:40,2024-09-11 12:59:10范围内的)
mysqlbinlog  --no-defaults  -d test   --start-datetime='2024-09-11 8:54:40' --stop-datetime='2024-09-11 12:59:10'  bin.000032 >temp.sql

#恢复sql
source temp.sql; 

#指定位置(远程登录日志并且恢复指定日志的数据)
mysqlbinlog --start-position=312 --stop-position=647 --base64-output=decode-rows -vv  bin.000032 >temp.sql

五:binlog日志转成可读日志(把binlog日志下载下来放到本地,本地转成可读的)

java 复制代码
mysqlbinlog --no-defaults -vv --base64-output=decode-rows D:\data.000501 > D:\temp.sql

六:过滤binlog日志

java 复制代码
#查找包含表名同时包含DELETE得行,并获取前面一行-B1,后面n+2,n为表得字段个数-A27(比如我sys_test表有25个字段那么就是n+2就是A27)
grep sys_test 1.sql -B1 -A27|grep INSERT  -B1 -A27 >2.sql

七:把delte语句转成insert语句

java 复制代码
#linux环境
cat temp.sql | sed -n '/###/p' | sed 's/### //g;s/\/\*.*/,/g;s/DELETE FROM/;INSERT INTO/g;s/WHERE/SELECT/g;' |sed -r 's/(@17.*),/\1;/g' | sed 's/@1=//g'| sed 's/@[1-9]=/,/g' | sed 's/@[1-9][0-9]=/,/g' > mysqllogOK.sql
相关推荐
十叶知秋4 分钟前
【jmeter】jmeter的线程组功能的详细介绍
数据库·jmeter·性能测试
七星静香16 分钟前
laravel chunkById 分块查询 使用时的问题
java·前端·laravel
Jacob程序员17 分钟前
java导出word文件(手绘)
java·开发语言·word
ZHOUPUYU17 分钟前
IntelliJ IDEA超详细下载安装教程(附安装包)
java·ide·intellij-idea
stewie621 分钟前
在IDEA中使用Git
java·git
Elaine20239136 分钟前
06 网络编程基础
java·网络
G丶AEOM37 分钟前
分布式——BASE理论
java·分布式·八股
落落鱼201338 分钟前
tp接口 入口文件 500 错误原因
java·开发语言
想要打 Acm 的小周同学呀39 分钟前
LRU缓存算法
java·算法·缓存
镰刀出海42 分钟前
Recyclerview缓存原理
java·开发语言·缓存·recyclerview·android面试