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
相关推荐
Andya_net2 分钟前
MySQL | MySQL 8.0 权限管理实践-精确赋予库、表只读等权限
android·数据库·mysql
Mr_pyx23 分钟前
Spring AI 入门教程:Java开发者的AI应用捷径
java·人工智能·spring
Zephyr_01 小时前
Leedcode算法题
java·算法
筑梦之路1 小时前
harbor数据库报错权限异常如何处理——筑梦之路
数据库·harbor
苍煜1 小时前
Java开发IO零基础吃透:BIO、NIO、同步异步、阻塞非阻塞
java·python·nio
折哥的程序人生 · 物流技术专研2 小时前
Java面试85题图解版(一):基础核心篇
java·开发语言·后端·面试
czlczl200209252 小时前
理解 MySQL 行锁:两阶段锁协议与热点更新优化
数据库·mysql
AllData公司负责人2 小时前
通过Postgresql同步到Doris,全视角演示AllData数据中台核心功能效果,涵盖:数据入湖仓,数据同步,数据处理,数据服务,BI可视化驾驶舱
java·大数据·数据库·数据仓库·人工智能·python·postgresql
哆啦A梦15882 小时前
20, Springboot3+vue3实现前台轮播图和详情页的设计
javascript·数据库·spring boot·mybatis·vue3
Hello.Reader2 小时前
算法基础(十)——分治思想把大问题拆成小问题
java·开发语言·算法