实现原理

flashback的概念最早出现于Oracle数据库,用于快速恢复用户的误操作。

flashback for MySQL用于恢复由DML语句引起的误操作,目前不支持DDL语句。例如下面的语句:

DELETE FROM XXX;

UPDATE XXX SET YYY=ZZZ;

若没有flashback功能,那么当发生误操作时,用户只能通过全备+二进制日志前滚的方式进行恢复。通常来说,这样所需的恢复时间会非常长。为了缩短误操作恢复的时间,通常可以在slave上搭建LVM,通过定期快照的方式来缩短误操作的恢复时间。但是LVM快照的缺点是会对slave的性能产生一定的影响。

官方mysqlbinlog命令为解析MySQL的二进制日志。当二进制日志的格式为ROW格式时,可以输出每个操作的每条记录的前项与后项。那么通过逆操作即可进行回滚操作,例如:

原始操作:INSERT INTO ...

flashback操作:DELETE ...

原始操作:DELETE FROM ...

flashback操作:INSERT INTO ...

原始操作:UPDATE XXX SET OLD_VALUES ...

flashback操作:UPDATE XXX SET NEW_VALUES ...

目前flashback功能集成于官方mysqlbinlog命令,通过参数的方式进行flashback功能的开启。

相关参数

-B --flashback

flashback核心参数,回滚二进制日志

root@test-1:~# ./mysqlbinlog -B --base64-output=decode-rows  -vv /mdata/mysql_data_old/bin.000008

......

-A --skip_database

解析BinLog时过滤掉该数据库。

-a --skip_table

解析BinLog时过滤掉该表,一般与skip_datebase配套使用。

-O --split-size-interval

将BinLog文件按照指定的大小拆分为多个段,解析结果为打印每个段的起始offset位置。

注意,当进行flashback时,flashback的内容先保存在内存中。若你的binlog大小为10G,那么需要额外的10G内存先暂时保存这部分信息。在某些情况下,如云环境、或服务器内存较小,会导致无法输出flashback的日志。这时可以通过此参数来设置内存保存文件的大小,例如将此值设置为100M,那么每100M就会刷新到一个文件。

-D --datetime_to_pos

基于输入的时间信息,解析出该时间对应的第一个BinLog event偏移位置,格式参照start-datetime,

flashback时要先找到起始的偏移量,DBA可以先通过此参数定位到具体位置,然后再进行flashback操作。

-T --table

仅解析该表,一般与database配套使用。

-E --fb_event

仅解析该类型的Log event,一般与database、table选项配套使用。可选的值有:

DELETE

INSERT

UPDATE

关于DDL的flashback功能

flashback功能仅支持DML语句的快速恢复,但是如果误操作为DDL的话,那么就无能为力了,比如:

TRUNCATE TABLE  xxx;

DROP TABLE xxxx;

DROP DATABASE xxx;

若要支持上述的快速flashback功能,需要修改MySQL源代码,将删除的库或者表保存到一个垃圾回收的库中,例如$RECYCLE库。想要支持这个功能,可以考虑使用InnoSQL商业版本。

视频

视频是最好的文档

下载地址

下载地址 如需技术支持,可微信联系:82946772。

原文:http://www.cnblogs.com/276815076/p/6102641.html

mysql 5.7 flashback_Flashback for MySQL 5.7相关推荐

  1. mysql关于时间的面试题,mysql时间设置默认值MySQL常见面试题

    1.limit(选出10 到20 条) select * from students order by id limit 9,10; 2.MySQL 会使用索引的操作符号 =,>,=,betwe ...

  2. liunx上mysql源码安装mysql,搞定linux上MySQL编程(一):linux上源码安装MySQL

    [版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 1. 首先下载源码包: ftp://ftp.jaist.ac.jp/pub/m ...

  3. .net连接mysql数据_.net连接MYSQL数据库的方法及示例!

    连接MYSQL数据库的方法及示例 方法一: 使用MYSQL推出的MySQL Connector/Net is an ADO.NET driver for MySQL 该组件为MYSQL为ADO.NET ...

  4. 加速mysql导入时间_加快mysql导入导出速度

    MySQL导出的SQL语句在处理百万级数据的时候,可能导入要花几小时.在导出时合理使用几个参数,可以大大加快导入的速度. -e 使用包括几个VALUES列表的多行INSERT语法; --max_all ...

  5. mysql error number 1130,[转]mysql error number 1130的解决方法

    关键字: is not allowed to connect to this MySQL server 如果你想连接你的mysql的时候发生这个错误: ERROR 1130: Host '192.16 ...

  6. Can 't connect to local MySQL server through socket '/tmp/mysql.sock '(2)

    安装了mysql, 使用命令mysql -u root -p 弹出Can 't connect to local MySQL server through socket '/tmp/mysql.soc ...

  7. linux mysql 无法识别,Linux下MySQL 5.7.23无法远程连接解决方案

    MySQL 版本:5.7.23操作系统:Linux问题描述:只能通过Linux系统账号Root命令行进入数据库,无法使用JDBC,远程连接工具进入数据库.报错:ERROR 1698 (28000): ...

  8. 怎么重启网站mysql数据库_如何重启MySQL数据库服务

    服务器的启动和停止 停止:net stop mysql 启动:net start mysql -------------------------mysql mode相关问题-------------- ...

  9. qt发布后 mysql数据库_qt发布后 mysql数据库

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

最新文章

  1. Python 为什么不支持 i++ 自增语法,不提供 ++ 操作符?
  2. 关于学习Python的一点学习总结(15)
  3. myeclipse 项目中jsp或者js 文件中的错误是没必要处理的,可以忽略
  4. part-time job
  5. postgresql cast转换类型
  6. 不输3000元旗舰!红米Note 7 Pro堆料有点狠
  7. Github 15K! 亿级向量相似度检索库Faiss 原理+应用
  8. 数据--第38课 - 霍夫曼树
  9. js操作checkbox(复选框)的方法总结
  10. 文献阅读---普通狗牙根阳江基因组单倍型解析与基因组稳定性和匍匐性研究
  11. web网页设计实例作业 ——中国茶文化(6页) 茶文化网页制作作业_中国化(网页设计...
  12. Chmox - Mac下的CHM电子书阅读器
  13. 硬件编码相关知识(H264,H265),IPB分别压缩率/H265/H264压缩率
  14. 360浏览器默认使用IE兼容模式解决办法
  15. 漫话最短路径(二)--bellman-Ford(贝尔曼-福特)算法
  16. Codeforces Round #545 (Div. 2)
  17. 【转】智能合约灵活升级
  18. 任务流程管理,从冗杂的项目管理中解脱出来
  19. 一分钟解决Springboot响应报错:would dispatch back to the current handler URL [/index] agai
  20. 零配置初始化流程就一直过不去_大华可视对讲系统如何配置,一文了解配置细节...

热门文章

  1. html调用父页面的函数,js调用父框架函数与弹窗调用父页面函数的方法
  2. lock 线程 java_JAVA多线程-基础Lock Condition 并发集合
  3. Git fetch pull 详解
  4. 背景选择器selector替换按钮默认背景
  5. 哈佛大学计算机生物科学,生命科学专业
  6. linux mount命令衔接,Linux mount命令详解:挂载Linux系统外的文件
  7. Java BigDecimal add()方法与示例
  8. hashmap示例_Java HashMap remove()方法与示例
  9. rofl用什么播放_ROFL的完整形式是什么?
  10. Java BigInteger类| hashCode()方法与示例