首页 > 数据库 >MyFlash MySQL数据恢复实战案例:将MySQL Docker容器误删除DELETE的数据进行闪回恢复

MyFlash MySQL数据恢复实战案例:将MySQL Docker容器误删除DELETE的数据进行闪回恢复

时间:2024-09-20 13:52:10浏览次数:3  
标签:误删除 数据恢复 myflash 01 insert MySQL mysql flashback test01

创建MySQL容器

mkdir -p {data,conf.d}

cat > conf.d/log-bin.cnf <<-EOF
[mysqld]
log_bin=mysql-binlog
server_id=1
EOF

docker rm -f mysql

docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -v /etc/localtime:/etc/localtime -v ./data:/var/lib/mysql -v ./conf.d:/etc/mysql/conf.d mysql:5.7

创建测试表

  • 01_myflash_insert_data.sh
create database if not exists myflash_test character set utf8mb4 collate utf8mb4_unicode_ci comment '用于测试myflsh闪回工具';

use myflash_test;

create table if not exists test01(id int,name varchar(20),birthday date);

insert into test01 values(1,'小明','1993-01-02'),(2,'小华','1994-08-15'),(3,'小丽','1995-07-12');
docker cp 01_myflash_insert_data.sh mysql:/

docker exec mysql mysql -uroot -p123456 -e 'source /01_myflash_insert_data.sh'
  • 02_insert-some-data.sh
use myflash_test;

insert into test01 values(4,'小红','2000-01-01');

delete from test01 where id=1;

update test01 set birthday='1994-09-15';

select * from test01;

show master status;
docker cp 02_insert-some-data.sh mysql:/

docker exec mysql mysql -uroot -p123456 -e 'source /02_insert-some-data.sh'

安装MyFlash

docker cp MyFlash-master/binary/flashback mysql:/flashback

docker cp MyFlash-master/binary/mysqlbinlog20160408 mysql:/mysqlbinlog

执行闪回操作

  • flashback 和 mysqlbinlog 工具均位于 / 路径下。
docker exec -it mysql bash

bash-4.2# cd /

bash-4.2# /flashback --databaseNames=myflash_test --tableNames=test01 --sqlTypes='DELETE' --binlogFileNames=/var/lib/mysql/mysql-binlog.000004

bash-4.2# ls -l binlog_output_base.flashback 
-rw-r--r-- 1 root root 240 Sep 20 13:52 binlog_output_base.flashback

bash-4.2# /mysqlbinlog binlog_output_base.flashback | mysql -uroot -p123456
  • 查询数据,发现刚才被delete掉的数据已经恢复了
bash-4.2# mysql -uroot -p123456 -e 'select * from myflash_test.test01'
mysql: [Warning] Using a password on the command line interface can be insecure.
+------+--------+------------+
| id   | name   | birthday   |
+------+--------+------------+
|    2 | 小华 | 1994-09-15 |
|    3 | 小丽 | 1994-09-15 |
|    4 | 小红 | 1994-09-15 |
|    1 | 小明 | 1993-01-02 |
+------+--------+------------+

links:

MySQL闪回工具–MyFlash

标签:误删除,数据恢复,myflash,01,insert,MySQL,mysql,flashback,test01
From: https://blog.csdn.net/a772304419/article/details/142383401

相关文章

  • MyFlash使用示例——美团点评的开源MySQL闪回工具安装及使用示例
    下载及安装我已经将二进制安装包上传至网盘,点击如下链接进行下载——链接:https://pan.baidu.com/s/1RzuHv6nDiAVMP7yk03bdNg?pwd=jtua提取码:jtua将如下两个二进制文件拷贝至Linux系统PATH路径下将mysqlbinlong20160408重命名为mysqlbinlog1.Howtousecdbinary......
  • 使用MyFlash的mysqlbinlog工具查看MySQL binlog的原始SQL语句
    要使用myflash的mysqlbinlog工具查看MySQLbinlog的原始SQL语句,你可以按照以下步骤操作:确保你的MySQL服务器已经开启了binlog,并且binlog格式设置为ROW。这可以通过设置binlog_format=row和binlog_row_image=full在MySQL配置文件中实现。安装myflash工具。你可以从GitH......
  • MySQL shell脚本案例:实现每隔一小时统计MySQL数据更新次数,并将结果记录到文件中
    要编写一个Shell脚本,每隔一小时统计MySQL中数据更新的次数,并将结果写入一个文本文件update-record.txt中,你可以按照以下步骤来实现:创建脚本文件:首先创建一个Shell脚本文件,比如命名为mysql_update_stats.sh。编写脚本内容:在脚本中编写执行SQL查询并将结果写入文件的逻辑。设......
  • python关于pymysql 执行sql语句in的用法
    今天在执行python代码中发现一个有意思的事,直接看代码注意如下红色部分name='张三'ids=1,2,3sql="selectNAME,NUM,SEXfromTEMP_TWHERENAME=%sandidin(%s)"param=(name,ids)cursor.execute(sql,param) 发现实际执行的sql语句是:selectNAM......
  • MySQL数据备份和恢复
    MySQL数据备份和恢复完整解决方案一、备份策略设计备份类型:全量备份:备份整个数据库,适合定期执行。增量备份:只备份自上次备份以来变更的数据,适合频繁备份。差异备份:备份自上次全量备份以来的所有变更。备份频率:根据业务需求确定备份频率,例如每天、每周或每小时。备份窗......
  • 【实战篇】MySQL是怎么保证高可用的?
    背景在一个主备关系中,每个备库接收主库的binlog并执行。正常情况下,只要主库执行更新生成的所有binlog,都可以传到备库并被正确地执行,备库就能达到跟主库一致的状态,这就是最终一致性。但是,MySQL要提供高可用能力,只有最终一致性是不够的。主备切换可能是一个主动运维动......
  • 【实战篇】MySQL是怎么保证主备一致的?
    MySQL主备的基本原理如图1所示就是基本的主备切换流程。在状态1中,客户端的读写都直接访问节点A,而节点B是A的备库,只是将A的更新都同步过来,到本地执行。这样可以保持节点B和A的数据是相同的。当需要切换的时候,就切成状态2。这时候客户端读写访问的都是节......
  • 数据库数据恢复—SQL Server数据库附加数据库出现823错误,附加失败的数据恢复案例
    SQLServer数据库故障:SQLServer附加数据库出现错误823,附加数据库失败。数据库没有备份,无法通过备份恢复数据库。SQLServer数据库出现823错误的可能原因有:数据库物理页面损坏、数据库物理页面校验值损坏导致无法识别该页面、断电或者文件系统问题导致页面丢失。SQLServer数据......
  • Liunx安装mysql8.0.39版本以及如何远程连接Navicat保姆级教学
    前言:对于MySQL数据库的安装,我们将要使用安装方式rpm进行安装通过百度网盘分享的文件:mysql-8.0.39-1.el7.x86_64.rpm-bundl...链接:https://pan.baidu.com/s/1uAOqAeH03eU7t8T1_ekXXA?pwd=obce 提取码:obce其他版本链接:MySQL::DownloadMySQLCommunityServer1:检测当前......
  • MySQL在大数据场景应用
    MySQL是一个功能强大的关系型数据库管理系统,虽然它最初设计用于处理中小规模的数据,但随着技术的发展和优化,MySQL也被应用于一些大数据场景。MySQL在大数据场景下的应用:1.数据仓库MySQL可以作为数据仓库使用,存储和管理大量的业务数据。通过合理设计表结构、使用分区表和索引......