mysql 复制 延时_MySQL主从之延时复制

目录一、延时复制1.配置延时复制(已经有主从)

2.配置延时复制(没有主从)

3.关闭延时从库

实例

一、延时复制

延时从库只做备份,不提供任何对外服务,正常情况下我们是不会有刻意延迟从库的需求的,因为正常的线上业务自然是延迟越低越好。

但是针对测试场景,业务上偶尔需要测试延迟场景下业务是否能正常运行。

# 延时复制流程:

和异步复制类似,同样是将主库的binlog日志通过dump线程发送给从库的中继日志中,但是当执行SQL的线程时,

会根据配置的延时复制时长,sql线程等到了延迟时间之后再执行中继日志中的sql语句了。

# 注意:

延时从库恢复数据时不要关闭主库的binlog,实际上从库还是会执行主库执行错的语句,只不过又执行了重建语句

1.配置延时复制(已经有主从)

1.停止主从

mysql> stop slave;

Query OK, 0 rows affected (0.03 sec)

2.配置延时时间

mysql> change master to master_delay=180;

Query OK, 0 rows affected (0.01 sec)

3.开启主从

mysql> start slave;

Query OK, 0 rows affected (0.00 sec)

2.配置延时复制(没有主从)

1.搭建出一台mysql

2.配置主从

mysql> change master to

-> master_host=‘172.16.1.51‘,

-> master_user=‘rep‘,

-> master_password=‘123‘,

-> master_log_file=‘mysql-bin.000001‘,

-> master_log_pos=424,

-> master_delay=180;

Query OK, 0 rows affected, 2 warnings (0.02 sec)

3.开启线程

mysql> start slave;

Query OK, 0 rows affected (0.01 sec)

3.关闭延时从库

mysql> stop slave;

Query OK, 0 rows affected (0.01 sec)

mysql> change master to master_delay=0;

Query OK, 0 rows affected (0.01 sec)

mysql> start slave;

Query OK, 0 rows affected (0.02 sec)

实例

#关于延时复制如何恢复思考问题:

总数据量级500G,正常备份去恢复需要1.5-2小时

1)配置延时3600秒

mysql>CHANGE MASTER TO MASTER_DELAY = 3600;

2)主库

drop database db;

3)怎么利用延时从库,恢复数据?

提示:

1、从库relaylog存放在datadir目录下

2、mysqlbinlog 可以截取relaylog内容

3、show relay log events in ‘db01-relay-bin.000001‘;

#处理的思路:

1)停止SQL线程

mysql> stop slave sql_thread;

2)截取relaylog到误删除之前点

relay-log.info 获取到上次运行到的位置点,作为恢复起点

分析relay-log的文件内容,获取到误删除之前position

模拟故障处:

1)关闭延时

mysql -S /data/3308/mysql.sock

mysql> stop slave;

mysql> CHANGE MASTER TO MASTER_DELAY = 0;

mysql> start slave;

2)模拟数据

mysql -S /data/3307/mysql.sock

source /root/world.sql

use world;

create table c1 select * from city;

create table c2 select * from city;

3)开启从库延时5分钟

mysql -S /data/3308/mysql.sock

show slave status \G

mysql>stop slave;

mysql>CHANGE MASTER TO MASTER_DELAY = 300;

mysql>start slave;

mysql -S /data/3307/mysql.sock

use world;

create table c3 select * from city;

create table c4 select * from city;

4)破坏,模拟删库故障。(以下步骤在5分钟内操作完成。)

mysql -S /data/3307/mysql.sock

drop database world;

5)从库,关闭SQL线程

mysql -S /data/3308/mysql.sock

stop slave sql_thread;

6)截取relay-log

起点:

cd /data/3308/data/

cat relay-log.info

./db01-relay-bin.000002

283

终点:

mysql -S /data/3308/mysql.sock

show relaylog events in ‘db01-relay-bin.000002‘

db01-relay-bin.000002 | 268047

mysqlbinlog --start-position=283 --stop-position=268047 /data/3308/data/db01-relay-bin.000002 >/tmp/relay.sql

恢复relay.sql

1)取消从库身份

mysql> stop slave;

mysql> reset slave all;

2)恢复数据

mysql> set sql_log_bin=0;

mysql> source /tmp/relay.sql

mysql> use world

mysql> show tables;

MySQL主从之延时复制

标签:实例   删库   tab   根据   业务   中继   时间   模拟   mysql主从

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:https://www.cnblogs.com/tcy1/p/13377994.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值