mysql延迟复制实现

我们使用mysql的主从同步来实现mysql数据的实时同步和备份,但由于正常情况下,数据是实时同步的,当人为在主库上误操作数据时,备份库实时地也操作了错误数据。

为了避免上述数据错误的情况,希望能建立一个延迟同步的mysql备份库,当主库数据被误操作时,备份库还保留未操作前的正确数据,便于数据恢复。

使用第三方工具percona-toolkit可实现延迟复制的需求。

实现环境:

192.168.189.143 (mysql主库)

192.168.189.144 (mysql备库,延迟3分钟)

步骤:

1:在服务器上安装mysql,并配置主从复制。(省略)

2:查看144从库的复制状态,确认同步正常,也可在主库上写入数据测试。

3:下载percona-toolkit软件包,并上传至143主库,并安装:

下载地址:http://www.percona.com/downloads/percona-toolkit/

#wget http://www.percona.com/downloads/perconatoolkit/2.2.14/RPM/percona-toolkit-2.2.14-1.noarch.rpm

#yum -y install percona-toolkit-2.2.14-1.noarch.rpm

注:若安装提示pulic key问题,导致失败,则修改/etc/yum.conf中的gpgcheck参数为0。

安装成功,查看pt-slave-delay是否可用:

#pt-slave-delay --help

4:在144从库上配置一个用户,供延迟复制工具连接使用。

mysql> grant all on *.* to ‘delay_rep‘@‘192.168.189.%‘ identified by ‘123456‘;

mysql>flush privileges;

5:开启延迟复制:

#pt-slave-delay --user=‘delay_rep‘ --password=‘123456‘ --delay=3m --interval=20s 192.168.189.144    注:

--user=:延时服务器中授权用户的用户名。

--password=:延时服务器中授权用户的密码。

--delay=3m:延时同步的时间,这里设置为3分钟。

--interval=20s:检查同步的时间,这里设置为20s。

192.168.189.144:延时服务器的IP地址。

这时候查看144的slave同步状态,可以看到Slave_SQL_Running状态变为NO。延迟复制现在已经生效了。

6:测试:

在143主库插入一条数据:

---------

查看144从库,数据还未同步过来:

-----------

3分钟左右,日志显示开始同步数据:

这时查看144从库,发现数据已经同步完成,说明延迟复制已经开始发生作用:

------------

附件是porcona-toolkit的安装文件,大家可以下载……

时间: 2024-10-16 13:53:40

mysql延迟复制实现的相关文章

MySQL延迟复制--percona-toolkit和MASTER TO MASTER_DELAY

为了数据的安全,有的时候数据库需要延迟备份,这里说下两种延迟备份的方法. 一.借助工具. 实现环境: 192.168.189.143 (mysql主库) 192.168.189.144 (mysql备库,延迟3分钟) 步骤: 1:在服务器上安装mysql,并配置主从复制.(省略) 2:查看144从库的复制状态,确认同步正常,也可在主库上写入数据测试. 3:下载percona-toolkit软件包,并上传至143主库,并安装: 下载地址:http://www.percona.com/downloa

MySQL主从延迟复制实践及生产故障案例恢复实践

1.1 MySQL主从延迟复制介绍 从MySQL5.6开始支持了主从延迟复制,这个功能主要解决的问题是,当主库有逻辑的数据删除或错误更新后,所有的从库都会进行错误的更新,从而导致所有的数据库数据异常,即使有定时的备份数据可以用于数据恢复,特别是数据库数据量很大时,恢复时间会很长,再恢复期间数据库数据被删或错误数据影响正常的访问体验. 而延迟复制就可以较好的解决这个问题.例如,可以设定某一个从库和主库的更新延迟1小时,这样主库数据出问题以后,1个小时以内发现,可以对这个从库进行无害恢复处理,使之依

MySQL 5.6 延迟复制,误操作后的数据库恢复

MySQL 5.6 支持延迟复制,可以在Slave服务器指定一个延迟的值.默认值为0秒.使用MASTER_DELAY 选项为CHANGE MASTERTO 设置N秒延迟. 1. 下面来实际演示,正常运行的从节点执行,设置延迟100秒 STOP SLAVE; CHANGE MASTER TO MASTER_DELAY = 100; START SLAVE; SHOW SLAVE STATUS\G; 显示                     SQL_Delay: 100  --延迟 100S  

Oracle & MySQL 老司机说我们要使用(延迟复制)

最近工作中又遇到生产环境数据库的表被删除的情况,其实这样的事情本不该发生. 几个小建议: 生产环境数据库开发人员只能有查询权限,甚至级别低的开发根本没权限查生产系统,类似表的删除交给专业的DBA来操作,当然有些单位没有所谓的DBA. 专职的DBA基本都具备一个属性,就是每一步的操作都会考虑好后果,所以删除表之前都会有一个备份. 建立审核制度,truncate .drop. rm这样的操作可能是致命的,必须要审核. 可以先rename表,比如把表rename成bak_date_tablename,

MySQL 5.7 延迟复制

MySQL 5.7延迟复制是通过设置复制参数MASTER_DELAY实现(单位为秒,就是从库延迟多少秒后执行这条SQL) 例如: mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 10.10.1.101 ..... Slave_IO_Runnin

mysql主从复制、延迟复制、半同步

#xtrabackup备份: #备份/data/mysql_backup/percona-xtrabackup-2.4.9-Linux-x86_64/bin/xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/backup/2020-01-22-14 --user=root --password= -S /var/lib/mysql/mysql.sock #恢复/data/mysql_backup/percona-

mysql AB复制理论

Mysql AB复制(主从复制)理论 MySQL 支持单向.异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.即从Master复制到一个或多个Slave上. 实现整个主从复制需要由Master上的IO进程,和Slave上的sql进程和IO进程共同完成.首先打开Master上的 binary log (bin-log)功能(修改配置文件),因为整个复制实际就是slave从master端获取相应的二进制日志,然后在slave端按顺序执行日志中的各种操作.(二进制日志几乎

mysql5.6,基于GTID的主从同步与延迟复制

GTID相关: 在mysql5.6之前,mysql主从复制是slave通过配置master的binlog位置实现的,且每一个slave自身的binlog却不同.而在mysql5.6版本后引入了GTID(全局事务标识符),这个值在master生成,slave只要在开启主从复制时指定master的用户,密码,就可获取master的GTID实现同步,而无需再每次去查看master的binlog位置,大大方便了主从同步的配置.GTID的唯一性强化了数据的主备一致性,故障恢复,以及容错能力. 延迟复制相关

InnoSQL/MySQL并行复制的实现与配置

InnoSQL/MySQL并行复制的实现与配置 http://www.innomysql.net/article/6276.html 并行复制之前的解决方案 InnoSQL在5.5.30-v4版本中支持了从机并行复制的功能.总所周知,MySQL数据库slave服务器延迟的现象是非常普遍的,这导致了虽然对比Oracle.Microsoft SQL Server,MySQL复制允许从机进行SELECT操作,但是在实际线上环境下,由于从机延迟的关系,很难将读取操作转向到从机.这就导致了有了以下一些潜规