论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
软件与程序人生
›
DevOps与敏捷开发
›
mysql数据被误删的恢复方案
mysql数据被误删的恢复方案
王海鱼
论坛元老
|
2025-3-1 02:57:49
|
显示全部楼层
|
阅读模式
楼主
主题
1031
|
帖子
1031
|
积分
3093
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
文章目录
一、使用备份恢复
二、使用二进制日志(Binary Log)
三、使用InnoDB表空间恢复
四、使用第三方工具
防备步伐
数据误删是一个严重的数据库管理问题,但通过公道的备份策略和使用适当的恢复工具,可以有用地淘汰数据丢失的风险。
几种常见的数据恢复方法:包罗使用备份、二进制日志、表空间文件以及第三方工具
一、使用备份恢复
备份是最常见的数据恢复方法。通过定期备份数据库,可以在数据丢失时快速恢复到最近的备份状态。
停止MySQL服务
sudo systemctl stop mysql
复制代码
恢复备份
mysql -u root -p < /path/to/backup.sql
复制代码
重启MySQL服务
sudo systemctl start mysql
复制代码
优点:
简单易行:只需执行几条简单的命令即可完成恢复。
可靠性高:只要备份文件完整且未损坏,可以完全恢复到备份时的状态。
缺点:
数据丢失:只能恢复到最后一次备份的时间点,之后的数据无法恢复。
依靠备份策略:需要有定期的备份计划,否则可能没有可用的备份文件。
二、使用二进制日志(Binary Log)
二进制日志记录了全部对数据库举行的更改操纵。通过这些日志,可以回滚到特定时间点或重放某些操纵。
查询binlog开启状态
起首要保证binlog是开启的,否则数据肯定是没办法恢复回来的
SHOW VARIABLES LIKE 'log_bin';
mysql> SHOW VARIABLES LIKE 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | ON |
+---------------+-------+
1 row in set (0.01 sec)
复制代码
如果log_bin的值为ON,则体现binlog已经开启;如果值为OFF,则体现binlog没有开启
查询binlog模式
SHOW VARIABLES LIKE 'binlog_format';
复制代码
将返回一个结果集,其中包罗当前的binlog格式。可能的值有:
ROW: 体现使用行模式(row-based replication),这是推荐的设置,因为它提供了更好的数据一致性。
STATEMENT: 体现使用语句模式(statement-based replication),在这种模式下,可能会丢失一些数据,因为它仅记录执行的SQL语句。
MIXED: 体现混合模式(mixed-based replication),在这种模式下,MySQL会根据需要主动切换行模式和语句模式
查询当前使用的binlog文件
mysql> show master statusG
*************************** 1. row ***************************
File: mysql-bin.000217
Position: 668127868
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set: 29dc2bf9-f657-11ee-b369-08c0eb829a3c:1-291852745,
744ca9cd-5f86-11ef-98d6-0c42a131d16f:1-5374311
1 row in set (0.00 sec)
复制代码
查找二进制日志文件:找到包罗删除操纵的二进制日志文件
通过mysqlbinlog工具 将binlog文件解析成可读的sql文件
mysqlbinlog --start-datetime="YYYY-MM-DD HH:MM:SS" --stop-datetime="YYYY-MM-DD HH:MM:SS" /path/to/binlog | mysql -u root -p
复制代码
其中:–start-datetime 和 --stop-datetime 用于指定时间范围,以精确定位到误删操纵之前的状态。
重放数据
解析的这个文件就是一个sql脚本文件,通过往常的方式执行sql脚本即可
mysql -uroot -proot < binlog.sql
复制代码
优点:
精确恢复:可以根据具体的时间点举行恢复,淘汰数据丢失。
机动性高:适用于各种复杂的恢复场景。
缺点:
复杂性较高:需要了解二进制日志的布局和使用方法。
依靠日志完整性:如果二进制日志文件不完整或损坏,可能无法乐成恢复。
通过 MySQL 的二进制日志(binlog)恢复被删除的表,步骤
# 查看 binlog 已启用
SHOW VARIABLES LIKE 'log_bin';
如果返回值为 ON,则已启用。
# 查找 binlog 文件
SHOW BINARY LOGS;
# 使用 mysqlbinlog 工具读取 binlog 文件
mysqlbinlog --start-datetime="2023-10-01 00:00:00" --stop-datetime="2023-10-01 23:59:59" binlog.000001
# 查找删除表的操作
# 使用 grep 来筛选出 DROP TABLE 语句:
mysqlbinlog binlog.000001 | grep 'DROP TABLE'
# 重放删除之前的操作
#确认了删除表之前的状态后,提取出在删除之前的 CREATE TABLE 语句,然后手动重新创建该表。
# 恢复数据
# 如果在 binlog 中找到插入数据的操作,可以通过相应的 SQL 语句恢复数据。
#注意事项
#进行此操作时请确保停止对数据库的写入,以避免数据不一致。
#操作前最好备份当前数据库状态,以防万一。
复制代码
三、使用InnoDB表空间恢复
对于InnoDB存储引擎,可以通过复制表空间文件(.ibd文件)来举行恢复。这种方法适用于物理文件级别的恢复。
停止MySQL服务
sudo systemctl stop mysql
复制代码
复制ibd文件:将误删表的ibd文件从备份或旧版本中复制回来
修改表布局:根据需要修改表布局,使其与当前数据库一致。
启动MySQL服务
sudo systemctl start mysql
复制代码
导入表空间
ALTER TABLE your_table_name IMPORT TABLESPACE;
复制代码
优点:
快速恢复:适用于大数据集,因为不需要重新加载整个表的数据。
物理级别恢复:可以直接从文件系统中恢复表空间文件。
缺点:
风险较高:如果表布局不一致,可能会导致数据损坏。
依靠文件系统:需要访问底层的文件系统,操纵较为复杂。
四、使用第三方工具
一些第三方工具可以帮助恢复误删的数据
下载并安装工具
运行工具:根据工具的使用分析举行操纵
优点:
功能强盛:提供了更多的恢复选项和高级功能。
用户友爱:通常有更好的用户界面和文档支持。
缺点:
本钱问题:有些工具可能是付费的。
学习曲线:需要一定的学习和设置时间。
防备步伐
为了制止数据误删带来的麻烦,发起采取以下防备步伐:
定期备份
设置主动备份计划,确保有最新的备份可用。
权限控制
限定数据库用户的权限,制止不须要的误操纵。
审计日志
启用审计日志,记录全部DDL和DML操纵。
测试环境
在生产环境执行任何操纵前,先在测试环境中验证。
通过以上方法,可以有用地恢复误删的数据,淘汰丧失。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
王海鱼
论坛元老
这个人很懒什么都没写!
楼主热帖
在Winform开发中,使用Async-Awati异步 ...
Vue 和 Django 前后端分离实践 (注册 ...
如何在 Vue 3 中使用<script lang=“t ...
C#依赖注入(直白明了)讲解 一看就会系 ...
一条SQL的执行原理
go中 for循环的坑
Vulnhub之Monkeybox详细测试过程(不同 ...
【Django】DRF开发中的一些技巧记录 ...
教务管理系统——数据库课程设计mysql+ ...
三篇学会MySQL数据库【查询详解】 ...
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
程序人生
快速回复
返回顶部
返回列表