my2sql工具恢复误删数据

打印 上一主题 下一主题

主题 1511|帖子 1511|积分 4533

一、下载my2sql

my2sql下载地址
https://github.com/liuhr/my2sql/blob/master/releases/centOS_release_7.x/my2sql
二、my2sql工具注意事项


1. binlog格式必须为row,且binlog_row_image=full



  • 缘故原由:binlog_row_image 参数决定了 binlog 中是否记录完整的旧值和新值。当设置为 FULL 时,binlog 会记录:

    • 旧值(Before Image):在更新或删除操作之前,记录了完整的行数据。
    • 新值(After Image):在更新或插入操作之后,记录了完整的行数据。

2. 只能回滚 DML,不能回滚 DDL



  • DML(Data Manipulation Language):数据操作语言,包罗 INSERT、UPDATE、DELETE 等操作。这些操作涉及数据的增删改,可以通过 binlog 中的旧值和新值进行回滚。
  • DDL(Data Definition Language):数据定义语言,包罗 CREATE、ALTER、DROP 等操作。这些操作涉及表结构的变动,无法通过 binlog 直接回滚。
  • 注意事项

    • 如果需要回滚 DDL 操作,通常需要手动恢复(例如通过备份)。
    • my2sql 工具只能解析 DML 操作的 binlog,无法处理 DDL 操作。

2. 用户密码认证必须是 mysql_native_password



  • 缘故原由:my2sql 工具依赖于 MySQL 的原生认证机制(mysql_native_password)来解析用户密码。如果使用其他认证方式(如 sha256_password 或 caching_sha2_password),大概会导致连接失败。
三、delete误删除恢复



  • 模仿误操作
  1. use ads;
  2. delete from ads_xehz;
复制代码


  • 把误操作的binlog目录复制到新目录
  1. cd /data/mysql/binlog/
  2. ll
  3. # 根据写入时间大致判断这个误操作在哪个binlog日志上
  4. mkdir /data/backup/rollback
  5. cp /data/mysql/binlog/mysql-bin.000001 /data/backup/rollback
复制代码


  • 检察误操作事务开始和竣事的位点 
  1. mysqlbinlog mysql-bin.000001 --start-datetime='2025-04-11 16:00:00' --stop-datetime='2025-04-11 17:00:00' --base64-output=decode-rows -v > test.sql
  2. # 查看test.sql文件,查找误操作的表,找到开始位点和结束位点
复制代码


  •  生成回滚SQL
  1. cd /data/backup
  2. mkdir test
复制代码
  1. ./my2sql -user ccj -password ccj1 -host 127.0.0.1 -databases ads -tables ads_xehz -work-type rollback -start-file /data/backup/rollback/mysql-bin.000001 -start-pos 310 -stop-pos 131992 -output-dir /data/backup/test
复制代码
再进入/data/backup/test
rollback.1.sql就是回滚的SQL文件
  1. mysql -uroot -p < rollback.1.sql
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张国伟

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表