my2sql工具恢复误删数据
一、下载my2sqlmy2sql下载地址https://csdnimg.cn/release/blog_editor_html/release2.3.8/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=P1C7https://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企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]