笃信您理当碰到过由于误职掌摧残数据库的题目,譬如忘了带WHERE前提的UPDATE、DELETE职掌,而后就需求举办保守方法的全量增量复原。如今,给您讲解一下MySQL中的flashback弄法,也也许做到像Oracle的flashback那样。
当今MySQL的flashback(又称闪回)寻常是行使binlog完竣的,能迅速完竣复原且无需停机维持。
第一个完结该成效的是阿里云的彭立勋,他在MySQL5.5版本上就已完结,并将其开源及提交给MariaDB,为社区供给了特别突出的参考模子。
2、闪回旨趣本节咱们先来讲解一下MySQLbinlogflashback的根底办事旨趣。
MySQL的binlog以event的大局,纪录了MySQL中悉数的改变景况,行使binlog咱们就也许重现所纪录的悉数职掌。
MySQL引入binlog要紧有两个用处/方针:一是为了主从复制;二是用于备份复原后需求从新运用部份binlog,进而抵达全备+增备的成果。
MySQL的binlog公有三种可选格式(binlog_format),其各有优缺陷:
statement,基于SQL语句的大局,寻常来讲生成的binlog尺寸较小,然则某些虚浮定性SQL语句或函数在复制经过也许致使数据不一致以至失足;
row,基于数据行的大局,纪录的是数据行的完全改变。相对更平安,举荐应用(但每每生成的binlog会比其余两种大局大良多);
mixed,搀杂大局,也许按照景况主动采用statement抑或row大局;这个大局下也也许形成主从数据不一向。它属于MySQL5.1版本时间的过渡计划。因而,假若你如今还应用mixed的话,那你的过渡时光也过久了......
备注:想要应用binlogflashback东西,需求将binlog_format配置为row才行。
3、东西举荐项目一:mysqlbinlog_flashback
项目做家:赖亿
58抵家github项目