mysqlbinlog delete恢复成insert

不小心把数据删掉了
首先要拿到binlog文件
执行以下命令行

/usr/local/mysql/bin/mysqlbinlog --base64-output=decode-rows --start-datetime=“2023-05-19 09:01:32” --stop-datetime=“2023-05-19 09:01:35” -v /Users/zylong/Downloads/mysql-bin.003178 --result-file=/Users/zylong/desktop/update.txt

/usr/local/mysql/bin/mysqlbinlog是你的mysqlbinlog所在的目录 如果你设置了环境变量可以不加全路径

–base64-output=decode-rows base64输出行

–start-datetime --stop-datetime 起止时间 具体去看binlog里想恢复的时间 如下图的230519 9:01:33 上述两个时间遵循左开右避原则

也可以使用at 具体到行 可以自行百度看看
在这里插入图片描述

-v /Users/zylong/Downloads/mysql-bin.003178 -v只想你的目标文件路径

–result-file= 输出到指定文件

输出完成后打开 上述txt文件 显示大概如下
在这里插入图片描述
执行以下命令
cat /Users/zylong/desktop/update1.txt | sed -n ‘/### /p;/# at/p’ | sed ‘s/### //g;s/DELETE FROM/INSERT INTO/g;s/WHERE/(ID, departname, description, parentdepartid, org_code, org_type, mobile, fax, address, depart_order, home_dep, is_contrast, total_contrast_number, total_observer_number, total_matched_number, contrast_mirror, current_contrast_number, illness, region_id, is_self_control, main_logo, is_bindable_wx, sms_template, sms_request_template, is_case_center) VALUES(/g;s/@1=//g;s/[0-9]=//g;s/@[0-9]/,/g;s/@/,/g;s/# at/);\n# at/g’ | sed -e ‘/# at/d’ > /Users/zylong/desktop/t6.txt
以上命令是sed 替换文本操作 不会的可以自己去看看 其实就是替换文本没啥难的 随便看看就明白了

以上分五部分依次是源文件 显示行 替换操作 删除操作 目标文件

/Users/zylong/desktop/update1.txt 源文件

其中红色以及黄色标注中的;表示匹配多个 如果你还有额外的需求可以再添加一个匹配或规则

sed -n ‘/### /p;/# at/p’

-n 表示源文件中显示的行 我们只需要sql相关的文件 所以只需要/### 开头的文件 但是我们替换的时候需要在每个sql命令后加上); 所以用到了/# at开头的行

1,s/### //g;

2,s/DELETE FROM/INSERT INTO/g;

3,s/WHERE/(ID, departname, description, parentdepartid, org_code, org_type, mobile, fax, address, depart_order, home_dep, is_contrast, total_contrast_number, total_observer_number, total_matched_number, contrast_mirror, current_contrast_number, illness, region_id, is_self_control, main_logo, is_bindable_wx, sms_template, sms_request_template, is_case_center) VALUES(/g;

4,s/@1=//g;

5,s/[0-9]=//g;

6,s/@[0-9]/,/g;

7,s/@/,/g

8,s/# at/);\n# at/g;

2,3 操作其实就是连成一个 insert into xxx (字段1,字段2…) values(

4 把第一个参数前的数据完全替换

5替换以数字开始=结尾的数据 替换成空字符

6,7 将@以及数字替换成,

8,将/# at 替换成分);# at \n表示换行 /g表示匹配多个 下同 其中/# at后面的/表示分开符号 如果要使用/请先转译

sed -e ‘/# at/d’ 删除包含“# at”的行

上述操作输出后大概就是这样

    insert into xxx (字段1,字段2...) values('1','2',...);

    insert into xxx (字段1,字段2...) values('1','2',...);

">"符号 表示输出到目标文件

/Users/zylong/desktop/t6.txt 目标文件

复制上述输出文件的内容 运行之后数据就恢复了

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: mysqlbinlogMySQL自带的二进制日志解析工具,可以将二进制日志解析原生SQL语句。使用mysqlbinlog可以方便地查看MySQL的二进制日志,了解数据库的操作历史,也可以用于数据恢复和数据同步等方面。具体使用方法可以参考MySQL官方文档。 ### 回答2: mysqlbinlogMySQL数据库自带的一个工具,用于解析二进制日志文件。二进制日志文件包含了数据库所有的修改操作(如插入、更新、删除)的信息,mysqlbinlog可以将这些信息解析原生的SQL语句。 使用mysqlbinlog解析原生SQL的步骤如下: 1. 打开命令行窗口,进入到mysqlbinlog所在的目录。 2. 输入命令`mysqlbinlog binlog文件名`,其中binlog文件名是待解析的二进制日志文件的名称。 3. mysqlbinlog会将解析后的SQL语句输出到命令行窗口,按照操作的先后顺序依次显示。 4. 可以使用一些参数来对解析过程进行配置,例如`-v`参数可以输出详细的解析过程,`-d`参数可以指定要解析的数据库。 解析出来的原生SQL语句可以用于恢复误删的数据,或者用于同步数据库之间的数据。 需要注意的是,mysqlbinlog只能解析二进制日志文件,而无法解析完整的数据库文件。此外,在解析过程中可能会遇到一些错误或警告信息,需要仔细查看并进行相应的处理。 总之,通过mysqlbinlog工具的解析,可以将二进制日志文件中的数据库修改操作还原原生的SQL语句,方便进行数据恢复和数据同步等操作。 ### 回答3: mysqlbinlogMySQL数据库中的一个工具,用于解析二进制日志文件(binlog)。它可以将binlog文件解析原生的SQL语句。 在使用mysqlbinlog解析binlog文件时,我们需要使用命令行工具,并提供binlog文件的路径作为参数。执行命令后,mysqlbinlog会读取binlog文件并将其中的数据解析原生的SQL语句。这些SQL语句可以包括INSERT、UPDATE、DELETE等操作,用于记录和恢复数据库中的改变。 当我们使用mysqlbinlog解析binlog文件时,可以使用一些选项来定制解析的行为。例如,可以使用"-d"选项来指定要解析的数据库名称,"-t"选项来指定要解析的表名,"-p"选项来指定要解析的起始位置等。 解析后的原生SQL语句可以用于多种用途,例如: 1. 数据库备份和恢复:通过解析binlog文件,我们可以获得数据库所有的操作记录,包括数据的增删改操作。从而可以用这些原生SQL语句来进行数据库的备份和恢复。 2. 数据分析和审核:通过解析binlog文件,我们可以得到数据库中的所有变更操作,可以用于数据分析、审计和性能优化等方面。例如,可以分析某个表的所有更新操作,来寻找性能瓶颈或数据不一致的问题。 需要注意的是,mysqlbinlog只能解析二进制日志中的数据,不能解析纯文本格式的日志文件。此外,解析的过程中可能会涉及到数据库的一些元数据信息,如表结构、索引等,因此在解析之前需确保数据库的元数据信息是正确的。 总之,mysqlbinlog是一个强大的工具,可以将数据库的二进制日志文件解析原生的SQL语句,方便进行数据备份、恢复、分析和审计等操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值