首页 > 其他分享 >基于快照的异步远程复制介绍

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

时间:2024-07-16 14:30:44浏览次数:17  
标签:异步 同步 快照 主从 复制 主端 远程

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

1、简介:

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

2、概念介绍:

异步远程复制:通过定时的将业务端的数据同步到备份端,从而实现数据的备份和灾难恢复的技术;

RBD快照:RBD快照是RBD在某一时刻全部数据的只读镜像,可以保留某个时间点的状态历史;

同步快照:当发起定时拷贝任务时,主端(即业务端)创建的RBD快照作为此次同步任务的同步快照;

一致性快照:当主从拷贝任务完成后,对从端创建RBD快照,此时从端的数据与主端的同步快照的时间点数据一致,此时的快照称为一致性快照;

3、工作原理:

创建移步远程复制pair对

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

创建同步策略

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

数据同步

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

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

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

分裂:

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

异常断开:

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

关闭从资源写保护:

处于正常状态的异步复制关系对,从卷均处于写保护状态,如果用户想要发起主从切换操作,需要先关闭从资源写保护操作,让从卷可读写;

在执行关闭从资源写保护之前,必须先分裂异步复制关系对,停止后台的自动同步任务;

主从切换:

如果主端发生了故障,需要将从端作为业务端拉起服务,需要交换主从的复制关系,让原先的从端作为现在的主端承接业务,并将数据定时拷贝到原先的主端(即主从切换后的从端);

在执行主从切换之前,需要先分裂异步复制关系,关闭从资源写保护;

开启从资源写保护:

在完成了主从切换之后,此时主从两端对外均为可读写状态,此时的异步复制关系对无法进行自动同步,需要先关闭从资源写保护,让从端对外只读;

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

平滑任务:

当主端或者从端服务重启时,主从两端的复制对的状态或者角色信息会出现不一致,此时需要后端发起平滑任务,处理双主、双从以及状态不一致的问题;

平滑任务对复制对状态的处理:按照 正常 -> 同步中 -> 异常断开 -> 分裂 -> 失效 的顺序进行跃迁,例如主端此时处于正常,但是从端处于同步中,那么将主从的状态都修改为同步中,并重新发起同步任务,如果主端处于同步中,从端处于异常断开,那么主从均更新为异常断开,并在下个同步周期重新发起同步任务;如果主端处于异常断开,从端处于分裂,那么主从均更新为分裂,停止后台定时同步任务,依此类推;

对于双从的状态,分析主从卷的快照的时间,以最新一次创建同步快照的一端作为主端;异步复制不允许出现双主,当出现双主时,将复制对关系置为失效状态,处于失效状态的关系对只能进行删除,用户在删除后可以重新建立复制对关系

删除异步复制关系对:

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

标签:异步,同步,快照,主从,复制,主端,远程
From: https://www.cnblogs.com/developer-tianyiyun/p/18305164

相关文章

  • 远程开发?启动!
    OJ项目需要用到远程开发,那今天让我们一起从0到1实现远程开发吧~文章目录1、安装VM2、下载ubantu镜像3、创建虚拟机并更改相关设置4、下载软件5、开启ssh服务6、安装Java环境7、远程开发方式一远程部署本地电脑编写代码文件同步运行项目部署项目远程调试程序远程开发方......
  • 本地代码推送远程仓库(gitee实例)
    https://www.cnblogs.com/shijiehaiyang/p/14147899.htmlhttps://www.cnblogs.com/maojunyi/p/7735723.html1.首先安装Git及Tortoisegit2.安装完成后手动创建.gitignore文件,用来排除不上传文件(如bin,obj等)3.在本地代码文件夹创建本地仓库4.提交master 5.创建远程仓库后,......
  • 在JavaScript中,如何实现异步编程?
    在JavaScript中,如何实现异步编程?请列举几种常见的方法(如Promise、async/await)。在JavaScript中,异步编程是处理长时间运行的任务(如网络请求、文件读写、大量计算等)的关键。JavaScript是单线程的,但通过使用异步编程模式,我们可以编写出既不会阻塞主线程执行又能处理耗时任务的......
  • 算法金 | 最难的来了:超参数网格搜索、贝叶斯优化、遗传算法、模型特异化、Hyperopt、O
    ​大侠幸会,在下全网同名「算法金」0基础转AI上岸,多个算法赛Top「日更万日,让更多人享受智能乐趣」今日215/10000抱个拳,送个礼为模型找到最好的超参数是机器学习实践中最困难的部分之一1.超参数调优的基本概念机器学习模型中的参数通常分为两类:模型参数和超......
  • 如何实现异步操作
    文章目录1.概念介绍2.使用方法2.1async和awit配合使用2.2Future类单独使用3.示例代码我们在上一章回中介绍url_launcher包相关的内容,本章回中将介绍如何Flutter中的异步操作.闲话休提,让我们一起TalkFlutter吧。1.概念介绍异步操作是程序中不可缺少的内容......
  • Linux系统搭建轻量级个人博客VanBlog并一键发布公网远程访问
    文章目录前言1.Linux本地部署2.VanBlog简单使用3.安装内网穿透4.创建公网地址5.创建固定公网地址前言今天和大家分享如何在LinuxUbuntu系统搭建一款轻量级个人博客VanBlog,并结合cpolar内网穿透软件生成公网地址,轻松实现随时随地远程访问本地部署的站点。无需......
  • 从远程拉取分支并更新到本地方法1
    要一次性拉取远程仓库中所有分支的更新,通常使用以下方法:gitfetch:gitfetch 会获取远程仓库的所有分支,但不会合并到当前分支。这是最安全的方法,因为它不会改变你当前的工作状态。gitfetch--allgitpull:gitpull 通常用于当前分支的合并。要拉取并合并所有分支的......
  • [Windows] 号称最快免费小巧的远程桌面 AnyDesk v8.0.11单文件版
    描述对于经常在互联网上进行操作的学生,白领等!一款好用的软件总是能得心应手,事半功倍。今天给大家带了一款高科技软件虽然QQ拥有远程协助功能,但很多时候连接并不够流畅,而且被控电脑那方也必须要有人操作才行。因此,很多人会选择TeamViewer、AnyDesk等…这样更为专业的......
  • 0185-在 VSCode 中远程调试
    环境Time2022-11-13WSL-Ubuntu22.04QEMU6.2.0Rust1.67.0-nightlyVSCode1.73.1前言说明参考:https://os.phil-opp.com/minimal-rust-kernel目标将上一节编写的可执行文件制作成QEMU可以启动的镜像。使用QEMU启动后,使用VSCode远程调试。启动QEMU脚本#!/u......
  • usbip-server,Windows使用WSL实现usb设备的远程接入ubuntu
    一.写在前面    本篇内容参考微软写的WSL教程,整理了在实现项目的过程中遇到的问题和解决方案,希望可以帮到大家,原文链接连接USB设备|MicrosoftLearn二.目标    使用开源项目usbip-win,将在windows上接入的usb设备连接到在WSL上运行的linux发行版三.先决......