IT评测·应用市场-qidao123.com技术社区
标题:
my2sql工具恢复误删数据
[打印本页]
作者:
张国伟
时间:
2025-4-13 22:06
标题:
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)
:数据操作语言,包罗 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误删除恢复
模仿误操作
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
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/)
Powered by Discuz! X3.4