1. 首页
  2. IT资讯

MySQL延时复制简介

“u003Cdivu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002Fc3ff679289a745c59f8a4afbf5e3749c” img_width=”654″ img_height=”360″ alt=”MySQL延时复制简介” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E公司有一套mysqlAB复制架构的生产库,一主一从的架构, 每周一凌晨0天都自动做全备。u003Cu002Fpu003Eu003Cpu003E一切正常,但今天(假设为周6)不小心误删除了一张表,从库也会跟着做误删除。假设这张表里有好几年的业务数据, 如何恢复呢?u003Cu002Fpu003Eu003Cpu003E有以下几种思路:u003Cu002Fpu003Eu003Cpu003E需要把这几年内所有的二进制日志先合并,再通过sed,grep,awk等命令处理把这张表从建表到现在的所有操 作按顺序找出来(当然要除掉你最后误删除的那条),然后导回去(数据量太大就不建议了)u003Cu002Fpu003Eu003Cpu003E先恢复周一的全备到测试库上,然后再恢复全备到现在的二进制日志(除了误删除的那句),再把那张表导出 来,导回到生产库上u003Cu002Fpu003Eu003Cpu003E有延时复制的话,在延时库上导出这张表,导回A, 再用二进制日志恢复延时时间内的误删表的操作(除了误删除的那句)u003Cu002Fpu003Eu003Cpu003E从上面的分析来看,延时复制能够在一定程序上简化恢复的过程。u003Cu002Fpu003Eu003Cpu003EMaatkit是一个Perl写的Mysql开源管理工具包,里面有一个可以在www.maatkit.org网站上下载软件包。我这里软包为u003Cu002Fpu003Eu003Cpu003Emk-slave-delayu003Cu002Fpu003Eu003Cpu003Emaatkit-7540.tar.gzu003Cu002Fpu003Eu003Cpu003E命令可以实现延时复制。u003Cu002Fpu003Eu003Cpu003E搭建过程u003Cu002Fpu003Eu003Cpu003E首先需要搭建好mysqlAB复制(传统AB复制,基于GTIDs的AB复制,半同步复制等都可以),然后做以下过程u003Cu002Fpu003Eu003Cpu003E1, 在需要做延时复制的slave上安装mattkitu003Cu002Fpu003Eu003Cpu003E(注意: master和正常的slave不用安装)u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F6d5fcb032f4e467fa19560af8af67d1b” img_width=”636″ img_height=”487″ alt=”MySQL延时复制简介” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E2, 确认整个架构所有机器时间同步u003Cu002Fpu003Eu003Cpu003E因为延时是要按时间来计算的,所以时间必须要一致, 所有服务器执行下面的命令,并比较时间u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F0c2cd2a2ccf64225a5bec98403193e1f” img_width=”343″ img_height=”70″ alt=”MySQL延时复制简介” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E3, 运行延时复制进程u003Cu002Fpu003Eu003Cpu003E确认时间一致, 并且AB复制正常的情况下, 在slave上执行下面的命令u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp9.pstatp.comu002Flargeu002Fpgc-imageu002Fe76b7f91b9f441b39b379af3f184c1c7″ img_width=”595″ img_height=”63″ alt=”MySQL延时复制简介” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F6234e5104e274b4a92a458ef7d3539f8″ img_width=”650″ img_height=”291″ alt=”MySQL延时复制简介” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E4, 测试u003Cu002Fpu003Eu003Cpu003E在slave上查看复制状态,会发现SQL线程为NO,这是正常的,因为延时复制里IO线程是实时的,只是把SQL线程延时了u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002Fcd1f204b6eb24d46bbd322bc7ca0f7bd” img_width=”407″ img_height=”140″ alt=”MySQL延时复制简介” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E然后在master上找一个测试表插入几条数据,等待1分钟后,才会看到数据在salve上复制成功。u003Cu002Fpu003Eu003Cu002Fdivu003E”

原文始发于:MySQL延时复制简介

主题测试文章,只做测试使用。发布者:程序员,转转请注明出处:http://www.cxybcw.com/26788.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code