当前位置: 首页 > ai >正文

mysqlbinlog恢复数据

登录

首先本机用wsl登录mysql的方式要指定安装目录下的mysql,否则找不到。

/mnt/c/Windows/system32$ mysql -u root -p urpassword
Command 'mysql' not found, but can be installed with:
sudo apt install mysql-client-core-8.0     # version 8.0.39-0ubuntu0.22.04.1, or
sudo apt install mariadb-client-core-10.6  # version 1:10.6.18-0ubuntu0.22.04.1/mnt/c/Windows/system32$ /mnt/d/path/bin/mysql.exe -u root -p

问题

--可看可查不可解析读
 head -n 10 /mnt/d/path/Data/mysql-bin.000001

权限之于当前WSL下的用户,可以查看binlog日志,但是没有mysqlbinlog的执行权限,不能解析了查看

$ /mnt/d/path/bin/mysqlbinlog.exe --start-position=230 --stop-position=499 --database=ods /mnt/d/path/Data/mysql-bin/mysql-bin.000002 /mnt/d/path/bin/mysql.exe -u root -p urpassword;
mysqlbinlog: [Warning] unknown variable 'loose-default-character-set=utf8mb4'
Enter password: **********
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
mysqlbinlog: File '/mnt/d/path/Data/mysql-bin/mysql-bin.000002' not found (OS errno 2 - No such file or directory)
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

其实账号对日志文件显示所有权限

/mnt/d/path/Data/mysql-bin$ ll
total 4
drwxrwxrwx 1 user123 user123 4096 Feb 21 17:21 ./
drwxrwxrwx 1 user123 user123 4096 Feb 21 10:16 ../
-rwxrwxrwx 1 user123 user123 1074 Feb 21 16:54 mysql-bin.000001*
-rwxrwxrwx 1 user123 user123    0 Feb 21 17:21 mysql-bin.000002*

因为在git bash中查看权限是不可执行的,windows怎么修改都没用,授权,修改owner,所有权限都给这个用户user123 皆无效
username @DESKTOP-aaabbb MINGW32 /d/software/mysql-8.0.11-winx64/Data
$ chmod 777 mysql-bin.000001

username @DESKTOP-aaabbb MINGW32 /d/software/mysql-8.0.11-winx64/Data
$ ll
total 182902-rw-r--r-- 1 username 197121       56 11月  4 15:06 auto.cnf
-rw-r--r-- 1 username 197121   508350 10月 30 15:47 binlog.000009
-rw-r--r-- 1 username 197121      155 10月 30 15:58 binlog.000010
-rw-r--r-- 1 username 197121      155 10月 30 15:58 binlog.000011

解决方案

复制这个日志到WSL用户下面的文件夹里,这样就拥有所有权限了

cp /mnt/d/path/Data/mysql-bin/mysql-bin.000001 ./  
解析后的sql可以放到一个文件中方便读取
/mnt/d/path/bin/mysqlbinlog.exe --start-position=230 --stop-position=499 --database=ods --base64-output=DECODE-ROWS --verbose /home/user123/mysql-bin.000001 > /mnt/d/path/Data/mysql-bin/test1.sql查看当前文件夹地址  
wslUserName@DESKTOP-aaabbb:~$ pwd
/home/wslUserName数据恢复
/mnt/d/path/bin/mysqlbinlog.exe --start-position=230 --stop-position=620 --database=ods --verbose /home/wslUserName/mysql-bin.000007 | /mnt/d/path/bin/mysql.exe -uroot -purpassword -v ods

注意

用户名和密码紧贴着-u和-p写,不要有空格

不要加--base64-output=DECODE-ROWS

--base64-output=decode-rows主要是解析 ROW 级别 binlog 日志时使用。
我们解析日志的时候都会使用:

# mysqlbinlog -v --base64-output=decode-rows --start-position=XXX --stop-position=XXX mysql-bin.0000XX/mnt/d/path/bin/mysqlbinlog.exe -v --base64-output=decode-rows --start-position=230 --stop-position=499 /home/wslUserName/mysql-bin.000001

这是我们解析 binlog 日志时使用的命令,我们可以很直观的分析 binlog 日志。

但是我们想要恢复到数据库中的时候,不能使用--base64-output=decode-rows 参数,否则是无法恢复到数据库的。

如果查看日志的时候显示乱码可能是显示页面的编码格式问题可以修复一下,两种方式自行挑选。

  --显示乱码的安装和切换wslUserName@DESKTOP-aaabbb:~$ chcp 65001
Command 'chcp' not found, but can be installed with:
sudo apt install nilfs-tools
wslUserName@DESKTOP-aaabbb:~$ sudo apt install nilfs-tools
[sudo] password for wslUserName:wslUserName@DESKTOP-aaabbb:~$ echo "chcp 65001" >> ~/.bash_profile
wslUserName@DESKTOP-aaabbb:~$ export LANG=en_US.UTF-8

遗留讨论

通过delete 方式记录的每一行数据,使用mysqlbinlog工具恢复仍然是删除操作!

如果是误操作,需要转换成insert语句才可以恢复之前的数据!

update不影响,可以恢复到update之前的数据,但是要注意恢复的位置节点或者时间,不要等到又更新回去了!

http://www.xdnf.cn/news/3027.html

相关文章:

  • vscode vim插件操作查缺补漏
  • 景联文科技牵头起草的《信息技术 可扩展的生物特征识别数据交换格式 第4部分:指纹图像数据》国家标准正式发布
  • Linux指令
  • 基于单片机的音频信号处理系统设计(二)
  • Python 错误 — 此环境由外部管理error: externally-manage(如何解决)
  • centos 安装jenkins
  • 模拟频谱分析仪(Linux c++ Qt)
  • 告别手动时代!物联网软件开发让万物自动互联
  • 从单一 AI 到多智能体系统:构建更智慧的世界
  • 关于安卓自动化打包docker+jenkins实现
  • 《Python实战进阶》 No46:CPython的GIL与多线程优化
  • 2025-03 机器人等级考试三级理论真题 3级
  • 区块链+医疗:破解数据共享困局,筑牢隐私安全防线
  • 聊聊Spring AI Alibaba的MermaidGenerator
  • Java 核心--泛型枚举
  • 【KWDB 创作者计划】_深度解析KWDB存储引擎
  • vue elementui 去掉默认填充 密码input导致的默认填充
  • 大连理工大学选修课——机器学习笔记(8):Boosting及提升树
  • 2025年深圳杯-东三省联赛赛题浅析-助攻快速选题
  • 第四部分:赋予网页健壮的灵魂 —— TypeScript(中)
  • word模板填充导出-(支持word导出、pdf导出)
  • 抢先体验 | Qwen3 模型发布:基于 ZStack AIOS 平台极速体验
  • 第二章-科学计算库NumPy
  • 六.割草机技术总结--6.RTK定位精度分析
  • c++线程的创建
  • Qwen3 开源!深度对比 DeepSeek,一文选对模型
  • vue3数字秒转换为时分秒格式
  • 西游记2:天花乱坠,地涌金莲;说一会道,讲一会禅,三家(指儒、释、道)配合本如然;长生不老之术、七十二般变化之能以及筋斗云之法;你从何处而来,便回到何处去吧
  • Linux基础篇、第一章_01_3安装虚拟机手动安装部署Ubuntu22.04服务器
  • MySQL日志详解