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

MySQL误删数据别慌!手把手教你用binlog2sql从binlog里‘捞’回来

MySQL数据灾难救援指南用binlog2sql实现精准闪回凌晨三点数据库告警短信突然响起——某张核心表被误执行了无条件的DELETE操作。作为值班工程师此刻你需要的不只是冷静更需要一套能快速定位问题、精准恢复数据的急救方案。这就是binlog2sql的价值所在它能把MySQL的二进制日志转化为可执行的SQL语句特别是能生成逆向操作的回滚SQL成为数据库运维人员的后悔药。1. 救援前的环境检查在开始数据恢复前必须确认MySQL服务器满足binlog2sql的基本运行条件。这就像医生手术前要确认患者血型一样关键。首先通过MySQL客户端连接服务器执行以下检查命令-- 检查二进制日志是否开启 SHOW VARIABLES LIKE log_bin; -- 确认binlog格式为ROW模式 SHOW VARIABLES LIKE binlog_format;这两个检查项必须全部通过log_bin的值必须为ONbinlog_format的值必须为ROW如果检查未通过需要修改MySQL配置文件通常是my.cnf或my.ini在[mysqld]段落下添加[mysqld] server_id 1 log_bin /var/log/mysql/mysql-bin.log binlog_format ROW binlog_row_image FULL修改后需要重启MySQL服务使配置生效。但要注意如果之前没有开启binlog那么重启后只会记录新的操作无法恢复历史数据。2. 快速部署binlog2sql工具binlog2sql是一个Python开发的MySQL二进制日志解析工具安装过程需要以下组件组件最低版本要求检查命令Python2.7/3.4python --versionpip-pip --versionGit-git --version推荐使用Python虚拟环境安装避免污染系统Python环境# 创建虚拟环境 python3 -m venv binlog2sql_env source binlog2sql_env/bin/activate # 安装依赖 pip install pymysql0.9.3 mysql-replication0.21 # 下载binlog2sql git clone https://github.com/danfengcao/binlog2sql.git cd binlog2sql注意如果遇到PyMySQL版本兼容问题可以尝试指定版本安装pip install pymysql0.7.113. 配置MySQL权限账户binlog2sql需要专门的数据库账户进行操作这个账户需要以下权限SELECT读取表结构信息SUPER/REPLICATION CLIENT查看主服务器状态REPLICATION SLAVE获取binlog内容创建专用用户的SQL命令CREATE USER binlog_rescue% IDENTIFIED BY ComplexPwd123; GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO binlog_rescue%; FLUSH PRIVILEGES;在实际生产环境中建议使用更复杂的密码限制访问IP范围操作完成后及时回收权限4. 定位误操作的时间窗口数据恢复的黄金法则是越精确的时间范围恢复效率越高。以下是定位误操作的实用方法查看当前所有binlog文件SHOW BINARY LOGS;确定误操作发生的binlog文件如果知道大致时间通过修改时间筛选如果不知道从最新的binlog开始检查解析binlog内容示例检查mysql-bin.000002mysqlbinlog --no-defaults --base64-outputdecode-rows -v /var/log/mysql/mysql-bin.000002 | less关键定位技巧搜索### DELETE FROM或### UPDATE等关键字记录准确的开始和结束位置position或者记录准确的时间戳5. 生成回滚SQL的实战操作假设我们已经确定误操作发生在mysql-bin.000002文件中时间范围是2023-12-08 16:48:00到16:49:00要恢复yungong数据库的sys_user_depyq表数据。5.1 生成原始操作SQL用于确认python binlog2sql.py -h127.0.0.1 -P3306 -ubinlog_rescue -pComplexPwd123 \ -dyungong -t sys_user_depyq --start-filemysql-bin.000002 \ --start-datetime2023-12-08 16:48:00 --stop-datetime2023-12-08 16:49:00输出示例# 原始操作日志 DELETE FROM yungong.sys_user_depyq WHERE id1 AND name张三 AND ... DELETE FROM yungong.sys_user_depyq WHERE id2 AND name李四 AND ...5.2 生成回滚SQL闪回SQL在命令中添加--flashback参数python binlog2sql.py --flashback -h127.0.0.1 -P3306 -ubinlog_rescue -pComplexPwd123 \ -dyungong -t sys_user_depyq --start-filemysql-bin.000002 \ --start-datetime2023-12-08 16:48:00 --stop-datetime2023-12-08 16:49:00输出示例# 回滚SQL INSERT INTO yungong.sys_user_depyq(id, name, ...) VALUES (1, 张三, ...); INSERT INTO yungong.sys_user_depyq(id, name, ...) VALUES (2, 李四, ...);5.3 将回滚SQL保存到文件对于大量数据的恢复建议将结果重定向到文件python binlog2sql.py --flashback -h127.0.0.1 -P3306 -ubinlog_rescue -pComplexPwd123 \ -dyungong -t sys_user_depyq --start-filemysql-bin.000002 \ --start-datetime2023-12-08 16:48:00 --stop-datetime2023-12-08 16:49:00 \ /tmp/flashback.sql5.4 执行恢复操作先检查生成的SQL文件确认无误后执行mysql -h127.0.0.1 -P3306 -uroot -p /tmp/flashback.sql6. 高级恢复技巧与避坑指南6.1 使用position精确定位当时间范围不够精确时可以使用binlog的position位置来精确定位python binlog2sql.py --flashback -h127.0.0.1 -P3306 -ubinlog_rescue -pComplexPwd123 \ -dyungong -t sys_user_depyq --start-filemysql-bin.000002 \ --start-position4964386 --stop-position49648026.2 大事务处理的优化策略对于影响大量数据的误操作如全表更新binlog2sql可能会消耗大量内存。这时可以添加--back-interval参数分批处理--back-interval2 # 每处理2秒的事务就暂停一下使用--stop-never持续监控新日志适用于持续误操作场景6.3 常见错误解决方案错误1Access denied; you need SUPER privilege-- 解决方案授予SUPER权限 GRANT SUPER ON *.* TO binlog_rescue%;错误2PyMySQL版本不兼容# 解决方案指定PyMySQL版本 pip install pymysql0.9.3错误3Could not open log file# 解决方案确保binlog文件可读 chmod 644 /var/log/mysql/mysql-bin.0000027. 生产环境的最佳实践定期备份binlog文件设置合理的expire_logs_days参数监控binlog大小避免单个binlog过大影响解析速度建立应急预案提前准备好binlog2sql环境权限最小化日常回收SUPER权限需要时再授予记录操作审计所有恢复操作都要详细记录-- 设置binlog过期时间天 SET GLOBAL expire_logs_days 7;在真实的生产环境中我们曾用这套方案成功恢复了一个被误清空的百万级用户表整个过程只用了不到20分钟。关键点在于快速定位到准确的binlog文件使用position而非时间范围缩小扫描区间分批执行生成的回滚SQL避免锁表

相关文章:

MySQL误删数据别慌!手把手教你用binlog2sql从binlog里‘捞’回来

MySQL数据灾难救援指南:用binlog2sql实现精准闪回 凌晨三点,数据库告警短信突然响起——某张核心表被误执行了无条件的DELETE操作。作为值班工程师,此刻你需要的不只是冷静,更需要一套能快速定位问题、精准恢复数据的"急救方…...

Android电池小部件开发终极指南:从零构建专业级电量监控应用

Android电池小部件开发终极指南:从零构建专业级电量监控应用 【免费下载链接】Android-Battery-Widget Battery widget indicator for android 项目地址: https://gitcode.com/gh_mirrors/an/Android-Battery-Widget 在移动设备使用日益频繁的今天&#xff0…...

Monero GUI自定义开发:如何扩展钱包功能与界面

Monero GUI自定义开发:如何扩展钱包功能与界面 【免费下载链接】monero-gui Monero: the secure, private, untraceable cryptocurrency 项目地址: https://gitcode.com/gh_mirrors/mo/monero-gui Monero GUI是一款安全、私密且无法追踪的加密货币钱包应用&a…...

百度网盘加速-实测有效

《百度网盘加速-实测有效》看到这个标题是不是很惊讶,百度网盘用来N年每次从网盘下载点东西都被限速限的头疼,明明是1000M带宽却被限速到几十kb,恶心到家了。然后看到几十块一个月的会员恶心到家了吧,今天教大家一个让百度网盘下载…...

初创团队如何借助 Taotoken 统一管理多个 AI 模型 API 调用

初创团队如何借助 Taotoken 统一管理多个 AI 模型 API 调用 1. 初创团队的多模型管理挑战 对于资源有限的初创团队而言,同时接入多个 AI 服务提供商往往会带来一系列管理难题。当团队需要在不同业务场景中调用 Claude、GPT 等不同模型时,每个服务商独立…...

Geek Cookbook完整指南:如何从零开始搭建高可用自托管平台

Geek Cookbook完整指南:如何从零开始搭建高可用自托管平台 【免费下载链接】geek-cookbook The "Geeks Cookbook" is a collection of guides for establishing your own highly-available "private cloud" and using it to run self-hosted se…...

基于MCP协议与混合搜索的AI Agent持久化记忆系统palaia实践指南

1. 项目概述:为AI Agent团队构建持久化知识系统如果你和我一样,在深度使用AI Agent(比如OpenClaw、Claude Code)进行开发或自动化任务时,经常被一个问题困扰:Agent没有记忆。每次对话、每个任务&#xff0c…...

RTAB-Map实战指南:在极端环境下构建鲁棒SLAM系统的架构设计

RTAB-Map实战指南:在极端环境下构建鲁棒SLAM系统的架构设计 【免费下载链接】rtabmap RTAB-Map library and standalone application 项目地址: https://gitcode.com/gh_mirrors/rt/rtabmap 在机器人自主导航领域,最严峻的挑战往往出现在视觉条件…...

基于Jekyll与GitHub Actions构建个人静态网站:从环境配置到自动化部署

1. 项目概述:一个由Jekyll与AI驱动的个人网站最近在整理自己的数字资产,发现一个干净、高效、完全由自己掌控的个人网站依然是展示技术思考与项目沉淀的最佳载体。于是,我花了一些时间,基于Jekyll静态站点生成器,并融合…...

3种方式彻底解决音乐文件加密问题:Unlock-Music完整实践指南

3种方式彻底解决音乐文件加密问题:Unlock-Music完整实践指南 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址:…...

为Claude Code编程助手配置Taotoken作为自定义模型提供商

为Claude Code编程助手配置Taotoken作为自定义模型提供商 1. 准备工作 在开始配置前,请确保已具备以下条件:一个有效的Taotoken账户,并在控制台中创建了API Key。同时确认本地已安装Claude Code编程助手,版本需支持自定义Anthro…...

专题--Redis

Redis| ProcessOn免费在线作图,在线流程图,在线思维导图 ProcessOn是一个在线协作绘图平台,为用户提供强大、易用的作图工具!支持在线创作流程图、思维导图、组织结构图、网络拓扑图、BPMN、UML图、UI界面原型设计、iOS界面原型设计等。同时依托于互联网…...

基于Docker沙盒构建安全隔离的AI模型运行环境

1. 项目概述:构建一个专为AI模型运行而生的Docker沙盒最近在折腾本地AI应用部署时,遇到了一个挺典型的问题:我想用Ollama跑一个叫OpenClaw的模型,但直接装在宿主机上,总担心它和系统里其他服务(比如我的开发…...

使用OpenClaw连接Taotoken快速搭建自动化AI工作流与智能体

使用OpenClaw连接Taotoken快速搭建自动化AI工作流与智能体 1. 准备工作 在开始配置之前,请确保您已经完成以下准备工作。首先,您需要在Taotoken平台注册账号并获取API Key。登录控制台后,可以在"API密钥管理"页面创建新的密钥。其…...

3步搭建免费开源翻译API:LibreTranslate私有化部署完整指南

3步搭建免费开源翻译API:LibreTranslate私有化部署完整指南 【免费下载链接】LibreTranslate Free and Open Source Machine Translation API. Self-hosted, offline capable and easy to setup. 项目地址: https://gitcode.com/GitHub_Trending/li/LibreTranslat…...

告别BurpSuite!用Yakit的MITM插件做渗透测试,这5个实战技巧真香

告别BurpSuite!用Yakit的MITM插件做渗透测试,这5个实战技巧真香 在渗透测试领域,BurpSuite长期占据着中间人攻击工具的首选地位。但近年来,一款名为Yakit的国产工具正在悄然改变这一格局。作为一名长期使用BurpSuite的安全工程师&…...

智能家居健康监测系统:振动传感与边缘计算的应用

1. 智能家居健康监测系统的核心价值与挑战在老龄化社会加速到来的今天,如何让老年人安全、舒适地实现"在地养老"(Aging in Place)已成为全球性课题。根据美国人口普查局数据,65岁以上人口占比将从2020年的17%增长到2050年的23%。传统护理模式面…...

超越看波形:用Verdi的nTrace/nSchema/nState进行深度代码与逻辑追踪

超越波形调试:Verdi高阶追踪技术实战指南 在数字芯片验证的深水区,工程师们常常面临这样的困境:波形窗口里跳动的信号明明符合预期,但系统行为却出现异常;状态机看似按设计流转,实际却卡在某个非预期状态。…...

免费AMD Ryzen深度调试工具:SMUDebugTool完全使用指南

免费AMD Ryzen深度调试工具:SMUDebugTool完全使用指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gi…...

终极指南:witr项目安全实践与生产环境诊断工具安全使用方法

终极指南:witr项目安全实践与生产环境诊断工具安全使用方法 【免费下载链接】witr Why is this running? 项目地址: https://gitcode.com/gh_mirrors/wi/witr witr作为一款强大的系统诊断工具,能够帮助用户深入了解系统运行状态,但在…...

如何用Blender 3MF插件实现专业3D打印工作流:完整指南

如何用Blender 3MF插件实现专业3D打印工作流:完整指南 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 想在Blender中无缝处理3D打印文件吗?Blende…...

SOCD Cleaner终极指南:免费解决游戏按键冲突的完整方案

SOCD Cleaner终极指南:免费解决游戏按键冲突的完整方案 【免费下载链接】socd Key remapper for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd 在竞技游戏的世界里,每一次按键都决定胜负,但你是否曾因同时按下左右方…...

快速部署MRPT:Ubuntu/Debian安装与配置完整指南

快速部署MRPT:Ubuntu/Debian安装与配置完整指南 【免费下载链接】mrpt :zap: The Mobile Robot Programming Toolkit (MRPT) 项目地址: https://gitcode.com/gh_mirrors/mr/mrpt Mobile Robot Programming Toolkit (MRPT) 是一款强大的移动机器人开发工具包&…...

KUKA C4/C2软限位修改避坑指南:$machine.dat文件详解与重启生效的正确姿势

KUKA C4/C2软限位修改避坑指南:$machine.dat文件详解与重启生效的正确姿势 在工业机器人调试过程中,软限位的精确设置直接关系到设备运行安全与工作效率。作为KUKA机器人系统的核心参数之一,软限位定义了各轴的运动范围边界,其配置…...

别再手动积分了!Python math库的erf/erfc函数,5分钟搞定高斯误差计算

别再手动积分了!Python math库的erf/erfc函数,5分钟搞定高斯误差计算 在信号处理、通信系统误码率分析或金融模型(如期权定价)中,高斯误差函数的计算是一个绕不开的数学工具。传统手动实现不仅耗时费力,还容…...

C站模型下载安装保姆级教程:从Civitai找到心仪模型到Stable Diffusion WebUI一键出图

Civitai模型下载与部署全指南:从零掌握Stable Diffusion资源管理 第一次打开Civitai网站时,琳琅满目的模型可能让你既兴奋又困惑。作为AI绘画领域的资源宝库,Civitai汇集了全球创作者分享的各类模型,但如何高效找到适合自己的资源…...

在Node.js服务中集成Taotoken实现稳定高效的大模型调用

在Node.js服务中集成Taotoken实现稳定高效的大模型调用 1. 环境准备与密钥管理 在Node.js服务中集成Taotoken的第一步是妥善管理API密钥。推荐通过环境变量存储密钥,避免硬编码在代码中造成安全风险。在项目根目录创建.env文件并添加以下内容: TAOTOK…...

CoreELEC技术栈在创维E900V22C媒体中心部署与优化指南

CoreELEC技术栈在创维E900V22C媒体中心部署与优化指南 【免费下载链接】e900v22c-CoreELEC Build CoreELEC for Skyworth e900v22c 项目地址: https://gitcode.com/gh_mirrors/e9/e900v22c-CoreELEC 本指南提供了基于CoreELEC技术栈在创维E900V22C电视盒子上部署专业级媒…...

终极macOS清理神器:Pearcleaner让你的Mac告别应用残留,释放宝贵磁盘空间

终极macOS清理神器:Pearcleaner让你的Mac告别应用残留,释放宝贵磁盘空间 【免费下载链接】Pearcleaner A free, source-available and fair-code licensed mac app cleaner 项目地址: https://gitcode.com/gh_mirrors/pe/Pearcleaner 你是否曾因m…...

PRM800K研究应用:如何基于800K标签推进数学AI发展

PRM800K研究应用:如何基于800K标签推进数学AI发展 【免费下载链接】prm800k 800,000 step-level correctness labels on LLM solutions to MATH problems 项目地址: https://gitcode.com/gh_mirrors/pr/prm800k PRM800K是一个包含800,000个步骤级正确性标签的…...