mysql 数据库数据恢复 库被删了怎么恢复数据库
mysql 数据库数据恢复方案:
- 前言
- 一、恢复数据需要满足的条件
- 二、开始恢复数据
- 1、第一步
- 2、第二步
- 3、第三步
- 4、第四步
- 5、第五步
- 6、 第六步
- 结束语:
前言
该方案针对于 linux 环境下恢复数据,windows 下不太清楚能不能用,可以参考下。
mysql 数据库的恢复是通过 MySQL 本身的 binlog 日志来恢复丢失或删除的数据,binlog 日志文件中记录着数据库中所有的操作,CRUD/Rollback 操作都会记录在日志中。
该方式是通过通过 binlog 日志恢复,需要保证数据库开启了 binlog 日志。
一、恢复数据需要满足的条件
查询是否开启 binlog 日志的 sql 脚本:
如果没开启的话,这个方案恢复不了了的。
show variables like '%log_bin%';
查看binlog存放日志文件目录
show variables like '%datadir%';
my2sql 插件使用的限制条件:
- 使用回滚/闪回功能时,binlog格式必须为row,且binlog_row_image=full, DML统计以及大事务分析不受影响,只能回滚DML, 不能回滚DDL
- 支持指定-tl时区来解释binlog中time/datetime字段的内容。开始时间-start-datetime与结束时间-stop-datetime也会使用此指定的时区, 但注意此开始与结束时间针对的是binlog event header中保存的unix timestamp。结果中的额外的datetime时间信息都是binlog event header中的unix timestamp
- 此工具是伪装成从库拉取binlog,需要连接数据库的用户有SELECT, REPLICATION SLAVE, REPLICATION CLIENT权限
插件下载地址,下载免费:my2sql下载地址免费
二、开始恢复数据
1、第一步
在mysql 安装目录 bin 目录中放入插件 my2sql,然后给 my2sql 赋权限。
chmod 777 my2sql
2、第二步
创建一个空文件夹 “tmpdir”,然后给个 777 的权限。
mkdir tmpdir
3、第三步
将binlong文件下载到本地,然后转换成sql格式,找到对应的节点(pos点),节点名(pos点)是纯数字的时间戳,根据节点可以恢复指定时间段的数据。
binlog 文件格式转换,首先保证本地数据库与生产环境数据库版本要一致,然后输入以下命令(不要有换行符号):
mysqlbinlog --no-defaults --base64-output=decode-rows -v
--start-datetime="2022-08-09 08:00:00" --stop-datetime="2022-08-17 10:35:00"
C:\MySQL\MySQL8.0\Desktop\mysql-bin.000039 -r ./output1.sql
说明:
mysqlbinlog --no-defaults --base64-output=decode-rows -v
--start-datetime="开始时间" --stop-datetime="结束时间"
'binlog文件的绝对路径' -r ./'转换后的文件名称'
转换后的sql文件中的节点(pos点):
可以根据binlog文件中的时间找到对应的节点,有了开始节点与结束节点,就可以恢复指定时间段的数据了。
4、第四步
在bin目录,输入以下命令(不要有换行):
./my2sql -user root -password 123456 -host 127.0.0.1 -port 3308
-mode file -local-binlog-file ./mysql-bin.000038 -work-type 2sql
-start-file mysql-bin.000038 -start-pos 606463342 -
stop-file mysql-bin.000038 -stop-pos 651675557 -output-dir ./tmpdir
说明:
./my2sql -user '账号' -password '密码' -host 'ip (bin 目录就是127)' -port '端口' -mode file -local-binlog-file ./'binlog 文件名' -work-type 2sql -start-file 'binlog 文件名' -start-pos '开始节点(节点数字在binlog日志中有)' -stop-file 'binlog 文件名' -stop-pos '结束节点(节点数字在binlog日志中有)' -output-dir ./tmpdir
执行成功后,会将 binlog 文件中对应节点的 sql 语句提取到文件中,我本次共生成了三个文件,分别为 biglong_trx.txt 、binlog_status.txt 、forward.38.sql。
文件说明:
biglong_trx.txt:
该文件没什么内容,没去深入了解,没什么用,暂不关注。
binlog_status.txt:
该文件是说明 binlog 文件的DML统计信息,比如开始节点到结束节点中,都执行了哪些 sql ,什么时候执行的,执行了什么操作,影响了几行数据,什么执行结束的。
forward.38.sql:
该文件存的是从 binlog 中提取出来的 sql 语句,这个语句是可以在数据库中执行的sql文件。
5、第五步
将提取出的文件,在文本编辑器中打开,检查对应的 sql 是否正确且完整,要注意 delete 与 rollback语句 。
6、 第六步
sql 审查没问题了,然后在库里面将 sql 文件执行下就好了,推荐使用 navicat 15 工具,选运行 sql 文件来执行sql,到此,数据就算恢复完成了。
结束语:
涉及正式数据一定要慎重,请不要在生产环境执行任何修改生产环境的 sql 脚本,要定期备份,或者做主从复制的模式,主机只对应用程序开放连接,其余需要数据库的,都连接从库。
附一个 my2sql 工具详解的博客地址,有兴趣的可以了解一下 my2sql 工具。
地址:https://blog.csdn.net/liuhanran/article/details/107425016
mysql 数据库数据恢复 库被删了怎么恢复数据库相关推荐
- mysql整备_【mysql】使用xtrabackup在线增量备份及恢复数据库
一.Percona Xtrabackup 简介 1.Xtrabackup bin目录文件 介绍 1)innobackupex innobackupex 是xtrabackup的一个符号链接 . in ...
- mysql主库从库在同一台服务器_MySQL_MySQL 数据库两台主机同步实战(linux),当一个从服务器连接到主服务 - phpStudy...
MySQL 数据库两台主机同步实战(linux) 当一个从服务器连接到主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置.从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器 ...
- mysql主库从库在同一台服务器_mysql数据库从一台服务器迁移到另一台服务器上...
一.应用场景 由于要把测试服务器上的数据库迁移到正式服务器上,因此需要做数据库的迁移.这里记录一下. 二.数据库迁移 1.新建数据库test create database test; 1 2.进入数 ...
- mysql中毒_2020-10-15 MYSQL中勒索病毒解密 .help 病毒解密恢复 数据库中.help 解密恢复 服务器被加密解密恢复...
数据类型 SQL 2005 for MYSQL 5.6 数据大小 10 GB 故障检测 服务器被勒索病毒加密, 文件被添加 .help 扩展名 修复结果 直接从加密的数据库处理完成恢复,数据恢复率达9 ...
- oracle重新恢复数据库,重新安装oracle根据原数据文件恢复数据库
个人重新安装系统,数据文件保留,在重新安装oracle 后,需要根据现有文件恢复现有数据库. 假设我的数据库数据文件在D:\oracle\product\10.2.0\oradata\orcl\目录下 ...
- linux postgres恢复数据库,从纯文本格式的备份文件恢复数据库
六.从纯文本格式的备份文件恢复数据库 下面我们详细介绍如何使用psql程序从一个纯文本格式的备份文件恢复数据库. 注意:如果您使用的是Postgres Plus Advanced Server的话,那 ...
- mysql主库从库在同一台服务器_MySQL数据库的主从配置(多主对一从)
一.实验环境部署 主服务器 192.168.18.42 端口3306 ==> 从服务器 192.168.18.44 端口 3306 主服务器 192.168.18.43 端口3306 ==& ...
- mysql查询当前库的实例名_oracle查询数据库名、实例名等
oracle中: 1.查询数据库名:select name,dbid from v$database;或者show parameter db_name; 2.查询实例名:select instance ...
- hive查看数据库里库的信息_hive 查看当前数据库
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- mysql数据库压缩备份_Mysql备份压缩及恢复数据库方法总结
一般情况我们通过mysqldump来备份MySQL数据库,并上传至其它备份机器.如果数据库比较大,在备份传输的时候可能会慢,所以我们尽量让备份的文件小一些. 在写自动备份脚本时,最好把备份结果直接压缩 ...
最新文章
- 美国防部用AI消除“战争迷雾”,机器人、无人机全上阵
- ai如何旋转画布_Ai绘制科技感晶格球体!
- 杨建:网站加速--内容简介
- Spring Boot SLF4J日志实例
- 线性代数拾遗(一):线性方程组、向量方程和矩阵方程
- UI设计素材模板|社交新媒体,可编辑套件
- 算法专题(一)1.1 希尔排序,快速排序
- APS生产计划排程系统优化方案
- landsat 8 卫星 波段介绍 及组合
- 如何完全清除微信聊天记录
- 【程序员如何买股票 二】 A股证券账户开户
- 记录win10无法通过IE浏览器设置受信任的站点的几种方法
- 华为云-- 消息通知服务(SMN)
- day29 | 黑马程序员Java全程笔记 | 第二阶段MySQL高级事务-索引-视图-触发器-存储过程
- 基于51单片机的4位竞赛抢答器的设计
- 苏世民,我的经验和教训(一)
- 如何去除Word中的波浪线?这三种方法很实用!
- Unity3D 2021.1.1F1。更新与下载。
- 【2018年广东工业大学文远知行杯新生程序设计竞赛】灰暗而空虚的景色β
- Columbia Biosciences 山羊抗美洲驼 IgG:SureLight APC
热门文章
- 微信java版s40_塞班微信S40版下载 v1.0 Beta-symbian微信S40版-pc6下载站
- 让你的Windows系统时光倒流
- spring切点表达式提取jdk版本与aspectjweaver版本不匹配
- 我从Web前端开发转到网页游戏开发
- 通过 DataEase 获取 API 数据完成项目周报分享
- Windows操作系统发展简史
- Android UI 控件
- linux的dlan脚本,Linux下的DLNA播放器源码
- 【解决】Git:hint:Pulling without specifying how to reconclie divergent branches is...
- 基于3D关节点的人体动作识别综述