闪回工具科普.docx
《闪回工具科普.docx》由会员分享,可在线阅读,更多相关《闪回工具科普.docx(30页珍藏版)》请在第一文库网上搜索。
1、闪回工具科普MySQL闪回特性最早由阿里巴巴的彭立勋开发,2012年他向MySQL官方提交了一个补丁,并对闪回设计思路做了说明。但是由于一些原因,目前业内安装这个补丁的团队还很少,真正应用到线上的更是少之又少。之后,又有多位人员针对不同MySQL版本的不同语言开发了闪回工具,原理用的都是他的思路。闪回工具按实现方式可以分成三类。第一类是以补丁形式集成到官方工具mysqlbinlog中。以彭立勋提交的补丁为代表。优点如下:-上手成本低。mysqlbinlog原有的选项都能直接使用,只是多加了一个闪回选项。闪回特性未来有可能被官方收录。 支持离线解析。缺点如下: 兼容性差、项目活跃度不高。由于bi
2、nlog格式的变动,如果闪回工具的作者不及时对补丁升级,则闪回工具将无法使用。目前已有多位人员分别针对MySQL 5.5/5.6/5.7开发了补丁,部分项目代码公开,但总体上活跃度都不高。 难以添加新功能,实战效果欠佳。在实战中,经常会遇到现有补丁不能满足需求的情况,比如要添加表过滤功能,很简单的一个需求,代码改动也不大,但是对大部分DBA来说,修改MySQL源码还是很困难的事情。 安装稍显麻烦。需要对MySQL源码打补丁,然后再编译安装。这些缺点,可能就是mysqlbinlog工具中的闪回功能没有流行起来的原因。第二类是独立工具,通过伪装成Slave拉取binlog来进行处理。以binlog
3、2sqi为代表。优点如下: 兼容性好。伪装成Slave拉取binlog这项技术在业界的应用非常广泛,很多开发语言都有这样的活跃项目,MySQL版本的兼容性由这些项目搞定,闪回工具的兼容问题不再突出。 添加新功能的难度小。这类闪回工具更容易被改造成DBA自己喜欢的形式,更适合实战。 安装和使用简单。缺点如下: 必须开启MySQL服务器。第三类是简单脚本。先用mysqlbinlog解析出文本格式的binlog,再根据回滚原理用正则表达式进行匹配并替换。优点如下: 脚本编写方便,往往能快速搞定某个特定问题。 安装和使用简单。 支持离线解析。缺点如下: 通用性不好。可靠性不好。就目前的闪回工具而言,线
4、上环境的闪回,笔者建议使用binlog2sql,离线解析使用mysqlbinlog o一、binlog2sqlbinlog2sql的作用如下: 快速回滚(闪回)数据。 修复主从切换后数据不一致的问题。 binlog生成标准SQL语句带来的衍生功能。已测试环境如下: Python2.6/2.7 MySQL5.6.x, MySQL 5.7.18, MariaDB提示:binlog2sqi代码及相关使用介绍详见:(一)安装和使用要求从MySQLbinlog解析出SQL语句。根据不同的选项,可以得到原始SQL语句、回滚SQL语句、去除主键的INSERT SQL语句等。1 .安装 binlog2sqi(
5、root local host# git clone https : /github. com/danf engcao/binlog2sql. git & cdbinlog2sqiroot local host # pip install -r requirements. txt2 .使用要求 f参数设置:server_id= 1, log_bin=/var/log/MySQL/MySQL-bin.log,max_binlog_size = 1G, binlog format = row, binlog row image = fullo 用户最小权限:SELECT, SUPER, REPLI
6、CATIONCLIENT, REPLICATIONSLAVEo SELECT:需要读取服务器端的information_schema.COLUMNS表,获取表结构的元信息,拼接成可视化的SQL语句。 SUPER/REPLICATION CLIENT:需要执行SHOWMASTER STATUS语句,获取服务器端的binlog列表。 REPLICATION SLAVE:通过BINLOG_DUMP协议获取binlog内容。3.基本用法解析出标准SQL语句:(root local host -* # python binlog2sql .py -hl27.0.0.1 -P3306 -uadmin -p
7、 admin -dtest-t test3 test4 -start-file=,MySQL-bin.0000021在输出内容中带有SQL语句及其对应的binlogpos,比如INSERTINTOtest.test3(addtime, data, id) VALUES C2016-12-10 13:03:38; English, 4);#start 570 end736o在上述命令的解析结果中,产过误操作的SQL语句文本进行甄孙找到误操作的语句对应的binlog pos范围(例如:示例语句中的#start 570 end 736就表示binlog pos的起始值为570,结束值由736),然后
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 工具 科普