my2sql工具恢复误删数据

一、下载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):数据操作语言,包括 INSERTUPDATEDELETE 等操作。这些操作涉及数据的增删改,可以通过 binlog 中的旧值和新值进行回滚。

  • DDL(Data Definition Language):数据定义语言,包括 CREATEALTERDROP 等操作。这些操作涉及表结构的变更,无法通过 binlog 直接回滚。

  • 注意事项

    • 如果需要回滚 DDL 操作,通常需要手动恢复(例如通过备份)。

    • my2sql 工具只能解析 DML 操作的 binlog,无法处理 DDL 操作。

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

  • 原因my2sql 工具依赖于 MySQL 的原生认证机制(mysql_native_password)来解析用户密码。如果使用其他认证方式(如 sha256_passwordcaching_sha2_password),可能会导致连接失败。

三、delete误删除恢复

  • 模拟误操作
use ads;
delete from ads_xehz;
  • 把误操作的binlog目录复制到新目录
cd /data/mysql/binlog/
ll

# 根据写入时间大致判断这个误操作在哪个binlog日志上

mkdir /data/backup/rollback
cp /data/mysql/binlog/mysql-bin.000001 /data/backup/rollback
  • 查看误操作事务开始和结束的位点 
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

# 查看test.sql文件,查找误操作的表,找到开始位点和结束位点
  •  生成回滚SQL
cd /data/backup
mkdir test
./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文件

mysql -uroot -p < rollback.1.sql

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值