欢迎来到第一文库网! | 帮助中心 第一文库网-每个人都是第一
第一文库网
全部分类
  • 研究报告>
  • 学术论文>
  • 全科教育>
  • 应用文档>
  • 行业资料>
  • 企业管理>
  • 技术资料>
  • 生活休闲>
  • ImageVerifierCode 换一换
    首页 第一文库网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    闪回工具科普.docx

    • 资源ID:87571       资源大小:121.69KB        全文页数:30页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    扫码关注公众号登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    闪回工具科普.docx

    闪回工具科普MySQL闪回特性最早由阿里巴巴的彭立勋开发,2012年他向MySQL官方提交了一个补丁,并对闪回设计思路做了说明。但是由于一些原因,目前业内安装这个补丁的团队还很少,真正应用到线上的更是少之又少。之后,又有多位人员针对不同MySQL版本的不同语言开发了闪回工具,原理用的都是他的思路。闪回工具按实现方式可以分成三类。第一类是以补丁形式集成到官方工具mysqlbinlog中。以彭立勋提交的补丁为代表。优点如下:-上手成本低。mysqlbinlog原有的选项都能直接使用,只是多加了一个闪回选项。闪回特性未来有可能被官方收录。 支持离线解析。缺点如下: 兼容性差、项目活跃度不高。由于binlog格式的变动,如果闪回工具的作者不及时对补丁升级,则闪回工具将无法使用。目前已有多位人员分别针对MySQL 5.5/5.6/5.7开发了补丁,部分项目代码公开,但总体上活跃度都不高。 难以添加新功能,实战效果欠佳。在实战中,经常会遇到现有补丁不能满足需求的情况,比如要添加表过滤功能,很简单的一个需求,代码改动也不大,但是对大部分DBA来说,修改MySQL源码还是很困难的事情。 安装稍显麻烦。需要对MySQL源码打补丁,然后再编译安装。这些缺点,可能就是mysqlbinlog工具中的闪回功能没有流行起来的原因。第二类是独立工具,通过伪装成Slave拉取binlog来进行处理。以binlog2sqi为代表。优点如下: 兼容性好。伪装成Slave拉取binlog这项技术在业界的应用非常广泛,很多开发语言都有这样的活跃项目,MySQL版本的兼容性由这些项目搞定,闪回工具的兼容问题不再突出。 添加新功能的难度小。这类闪回工具更容易被改造成DBA自己喜欢的形式,更适合实战。 安装和使用简单。缺点如下: 必须开启MySQL服务器。第三类是简单脚本。先用mysqlbinlog解析出文本格式的binlog,再根据回滚原理用正则表达式进行匹配并替换。优点如下: 脚本编写方便,往往能快速搞定某个特定问题。 安装和使用简单。 支持离线解析。缺点如下: 通用性不好。可靠性不好。就目前的闪回工具而言,线上环境的闪回,笔者建议使用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(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, REPLICATIONCLIENT, 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 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),然后使用该binlog pos范围反向解析binlog,即可生成可用于恢复数据的SQL语句文本。解析出回滚SQL语句:(root 0 local host -* # python binlog2sql .py -flashback -hl27.0.0.1 -P3306 -uadmin-p1 admin1 -dtest -ttest3 start-file= fMySQL-bin.0000021 -start-position=763 -stop-position=1147输出内容与解析出标准SQL语句的输出内容类似,比如INSERTINTOtest.test3(addtime, data, id) VALUES (2016-12-10 13:03:38; English1, 4);#start 981 end1147,这时对反向的SQL语句进行人工确认,如果无误就可以导入实例中执行了。(二)命令行选项4. MySQL连接配置选项- -h:指定需要连接的数据库IP地址。 -P:指定需要连接的数据库端口。 -U:指定需要连接的数据库中的用户名。 -p:指定-U选项指定的用户的密码。5.解析模式选项 -stop-never:持续同步binlog。可选。不使用此选项,则同步至执行命令时最新的binlog 位置。 -K,no-primary-key:对INSERT语句去除主键。可选。 -B,-flashback:生成回滚语句,可解析大文件,不受内存限制,每打印1000行加一句SLEEPSELECT(l)。可选。与一stop-never或-no-primary-key选项不能同时使用。6 .解析范围控制选项 -start-file:起始解析文件。必选。 -start-position/start-pos :用于指定-start-file选项指定文件的起始解析位置。可选。如果不指定,则默认将从-start-file选项指定文件的开头进行解析。 -stop-file/-end-file:末尾解析文件。可选。如果不指定,则将复用-startfile选项指定的文件名(即,开始和结束文件名相同,表示只解析一个文件)。若解析模式为-stop-never,则此选项失效。 -stop-position/end-pos: stopflle的末尾解析位置。可选。默认为stop行le的最末位置。若解法模式为-stop-never,则此选项失效。 -start-datetime:从哪个时间点的binlog开始解析,格式必须为datetime,如2016-11-11 IklklTo可选。默认不过滤。 -stop-datetime:到哪个时间点的binlog停止解析,格式必须为datetime,如'2016-11-11 IklklTo可选。默认不过滤。7 .对象过滤选项 -d,-databases:只输出目标数据库的SQL语句。可选。默认为空。- -t,-tables:只输出目标表的SQL语句。可选。默认为空。(三)实战演示8.造数#建库、建表mysql> CREATE DATABASE % test'use test;mysql> CREATE TABLE 'test' ('id' int(ll) NOT NULL AUTO_INCREMENTzFame、 varchar(20) COLLATE utf8_bin DEFAULT NULL,PRIMARY KEY (id)ENGINEInnoDB;f插入测试数据mysql> insertmysql> insertmysql> insertmysql> insertmysql> insertmysql> insertmysql> insertmysql> insertinto test(name)into test(name)into test(name)into test(name)into test(name)into test(name)into test(name)into test(name)values(* testlvalues(test2values(1test3values(* test4values(* test5values(1test6values('test?values(* test89. INSERT 闪回登录到数据库中,查看当前的数据:mysql> use testDatabase changedmysql> show tables;+I Tables_in_test I+I testI+1 row in set (0.00 sec)mysql> select * from test;IidInameII2|testlII4|test2II6|test3II8|test4|I10Itest5II12|test6|I14|test7|I16|test8I8 rows in set (0.00 sec)执行插入数据操作:mysql> insert into test (naxne) values (1 test91);Query OK, 1 row affected (0.00 sec)mysql> insert into test(name) values(1testlO1);Query OK, 1 row affected (0.00 sec)mysql> insert into test(name) values(* testll1);Query OK, 1 row affected (0.00 sec)mysql> insert into test(name) values('testl2');Query OK, 1 row aff

    注意事项

    本文(闪回工具科普.docx)为本站会员(lao****ou)主动上传,第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知第一文库网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 001doc.com网站版权所有   

    经营许可证编号:宁ICP备2022001085号

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



    收起
    展开