基于快照的异步远程复制介绍

天翼云开发者社区
• 阅读 311

本文分享自天翼云开发者社区《基于快照的异步远程复制介绍》,作者:l****n

1、简介: 本文介绍了基于RBD快照的异步远程复制技术

2、概念介绍: 异步远程复制:通过定时的将业务端的数据同步到备份端,从而实现数据的备份和灾难恢复的技术; RBD快照:RBD快照是RBD在某一时刻全部数据的只读镜像,可以保留某个时间点的状态历史; 同步快照:当发起定时拷贝任务时,主端(即业务端)创建的RBD快照作为此次同步任务的同步快照; 一致性快照:当主从拷贝任务完成后,对从端创建RBD快照,此时从端的数据与主端的同步快照的时间点数据一致,此时的快照称为一致性快照;

3、工作原理: 创建移步远程复制pair对: 选择跨region或者跨AZ的大小一致的卷,建立主从异步远程复制关系对;异步远程复制分为主端设备与从端设备,主端设备为业务端,主端的卷可读写,从端设备为备份端,从端的卷对外只读;在建立好异步远程复制关系对之后,会关闭从端卷的写权限;

创建同步策略: 创建类型为时间间隔或者指定时间的同步策略,在激活异步远程复制关系对之后,后台将启动定时器,根据用户指定的策略,进行数据的同步;

数据同步: 首次同步为全量同步,为了防止从端卷有脏数据,在执行全量同步之前会清空从卷数据,执行全量拷贝之前,主端创建同步快照,将主卷所有 数据拷贝至从端,完成数据拷贝之后,对从卷创建快照作为初始同步的一致性快照,将主卷已经完成同步的同步快照进行归档,标记为此时与从卷数据一致的一致性快照;

完成初始同步之后,标记初始同步已完成,之后的同步全部为增量同步;

增量同步:先对主端创建快照作为此次数据同步的同步快照,对此同步快照与上一次完成同步的一致性快照,并拷贝差异数据到从端,完成拷贝后,对从卷创建快照作为此次同步的一致性快照,并将主端的同步快照归档为此次同步的一致性快照;

分裂: 分裂与异常断开均为暂停异步远程复制对的复制任务,但不解除主从复制关系,后端将停止后台定时器,已经分裂的异步复制关系对在用户主动发起同步任务之前,不会再执行同步任务;

异常断开: 异常断开为同步任务发生异常,后台自动发起的任务,发生异常时,后台将异步复制关系对状态更新为“异常断开”, 并在下一个同步任务执行周期,重试此次已经失败的任务;

关闭从资源写保护: 处于正常状态的异步复制关系对,从卷均处于写保护状态,如果用户想要发起主从切换操作,需要先关闭从资源写保护操作,让从卷可读写; 在执行关闭从资源写保护之前,必须先分裂异步复制关系对,停止后台的自动同步任务;

主从切换: 如果主端发生了故障,需要将从端作为业务端拉起服务,需要交换主从的复制关系,让原先的从端作为现在的主端承接业务,并将数据定时拷贝到原先的主端(即主从切换后的从端); 在执行主从切换之前,需要先分裂异步复制关系,关闭从资源写保护;

开启从资源写保护: 在完成了主从切换之后,此时主从两端对外均为可读写状态,此时的异步复制关系对无法进行自动同步,需要先关闭从资源写保护,让从端对外只读; 由于在执行了主从切换之后,用户可能不会立即执行开启从资源写保护操作,为了保证主从之间数据实时的一致性,在执行了主从切换和关闭从资源写保护之后的首次同步任务执行直线,需要先对从端使用完成上一次同步的一致性快照做快照回滚,以保证从卷无任何脏数据;

平滑任务: 当主端或者从端服务重启时,主从两端的复制对的状态或者角色信息会出现不一致,此时需要后端发起平滑任务,处理双主、双从以及状态不一致的问题; 平滑任务对复制对状态的处理:按照 正常 -> 同步中 -> 异常断开 -> 分裂 -> 失效 的顺序进行跃迁,例如主端此时处于正常,但是从端处于同步中,那么将主从的状态都修改为同步中,并重新发起同步任务,如果主端处于同步中,从端处于异常断开,那么主从均更新为异常断开,并在下个同步周期重新发起同步任务;如果主端处于异常断开,从端处于分裂,那么主从均更新为分裂,停止后台定时同步任务,依此类推; 对于双从的状态,分析主从卷的快照的时间,以最新一次创建同步快照的一端作为主端;异步复制不允许出现双主,当出现双主时,将复制对关系置为失效状态,处于失效状态的关系对只能进行删除,用户在删除后可以重新建立复制对关系

删除异步复制关系对: 当用户想要解除主从复制关系时,可以删除异步复制关系对,让主从卷成为独立的卷;

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Stella981 Stella981
2年前
AssemblyScript 入门指南[每日前端夜话0xEB]
每日前端夜话0xEB每日前端夜话,陪你聊前端。每天晚上18:00准时推送。正文共:2459 字预计阅读时间:10分钟作者:DannyGuo翻译:疯狂的技术宅来源:logrocket!(https://oscimg.oschina.net/oscnet/b880277c594152a503
Wesley13 Wesley13
2年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Stella981 Stella981
2年前
Node.js 12中的ES模块[每日前端夜话0x9E]
每日前端夜话0x9E每日前端夜话,陪你聊前端。每天晚上18:00准时推送。正文共:2552字预计阅读时间:10 分钟作者:BrianDeSousa翻译:疯狂的技术宅来源:logrocket!(https://oscimg.oschina.net/oscnet/2ccaf94cecd3
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Stella981 Stella981
2年前
Linux日志安全分析技巧
0x00前言我正在整理一个项目,收集和汇总了一些应急响应案例(不断更新中)。GitHub地址:https://github.com/Bypass007/EmergencyResponseNotes本文主要介绍Linux日志分析的技巧,更多详细信息请访问Github地址,欢迎Star。0x01日志简介Lin
Wesley13 Wesley13
2年前
mysql5.7.26 基于GTID的主从复制环境搭建
mysql5.7.26基于GTID的主从复制环境搭建时间:2019090616:10:21    阅读:20    评论:0    收藏:0    \点我收藏\标签:connect(https://www.oschina.net/action/GoToLink?
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
天翼云开发者社区
天翼云开发者社区
Lv1
天翼云是中国电信倾力打造的云服务品牌,致力于成为领先的云计算服务提供商。提供云主机、CDN、云电脑、大数据及AI等全线产品和场景化解决方案。
文章
640
粉丝
14
获赞
40