PolarDB-X 数据节点备库重搭

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: 本文主要介绍PolarDB-X中DN(数据节点)备库重搭的背景,以及polardbx-operator上是如何实现DN备库重搭的。

作者:不俗

本文主要介绍PolarDB-X中DN(数据节点)备库重搭的背景,以及polardbx-operator上是如何实现DN备库重搭的。

背景

在一个一主多从的高可用系统中,往往存在一个主节点负责对外提供服务,另外一个或者多个备节点,向主节点实时同步数据,当主节点发生异常时,会有一个备节点立马切换为主节点,继续对外提供服务,此时对业务来说,仅仅是发生一次连接闪断,重试便能恢复。备节点越多,则这个系统变得完全不可服务的几率就越小,因此我们需要有足够多的备节点来保证高可用性,当备节点发生异常时,我们需要及时进行重建,上述重建操作,我们称之为备库重搭。 一个完整的PolarDB-X实例,由计算节点、存储节点、元数据节点、日志节点组成,其中计算节点和日志节点为无状态部署,当迁移节点的时候不需要迁移数据,只需要给配置、给资源便能正常拉起,而存储节点和元数据服务节点是有状态部署,当备节点不可用时,我们需要迁移数据来恢复节点(在本文我们统称为DN备库重搭)。 存储节点和元数据服务节点是XDB实例(基于mysql进行了改造和升级),其架构如下图所示:
21.jpg

一个XDB实例,由leader、follower、logger节点构成,三个节点通过xpaxos协议通信并实现多数派决策,形成了一个paxos group,三个节点均会在本地持久化consensus log,另外Leader和Follower还存有mysql数据文件(回放consensus log所得),当Follower升级为Leader时,可以利用mysql数据文件对外提供服务。 当Follower和Logger节点由于软件bug、宿主机宕机、数据文件损坏等原因无法继续正常参与paxos通信的时候,我们需要对其发起重搭操作。

方案设计

关键问题

  • Follower和Logger节点重搭有什么区别?

follower相比logger节点需要恢复mysql数据文件,恢复的时候需要从leader节点拷贝数据文件。

  • 如何对Follower节点重搭?

一次类似mysql的备份恢复流程,追平增量数据,加入到paxos group中开始正常运行。

  • 如何对Logger节点重搭?

从leader节点获取当前的一致性位点,写入logger节点的元数据,加入到paxos group中开始正常运行。

  • 如何减少重搭对用户业务的影响?

Follower重搭的时候,可能需要从Leader节点上复制大量的数据,复制过程需要减少大锁的使用以免阻塞用户业务操作,另外需要对拷贝速度的进行控制,以免占用过多cpu、内存、网络带宽、磁盘io等资源,对正常业务所需的资源产生争抢。

  • 本机备库重搭和跨机备库重搭?

顾名思义,本机备库重搭的意思是follower节点在原来的宿主机上进行重建,跨机备库重搭则表示follower节点不在原来的宿主机上进行重建。运维任务可以根据实际需求在下发备库重搭任务时候指定是否跨机重搭,比如机器资源不足的时候,而原宿主机仍然健康,则可以选择本机备库重搭,反之本机不健康且机器资源充足,则建议选择跨机重搭。

Follower重搭

对Follower重搭时候,首先确定一个目标的主机,在这个host上恢复出一个follower节点来,在跨机重搭的时候,我们可以通过创建一个配置和原Follower Pod一样的临时pod,由k8s调度器将pod调度到合适的主机上,来确定目标主机。确定Leader Pod、目标主机,我们便可以利用DN专用的备份工具发起一次流式备份,让备份集直接落盘到目标主机上。
22.jpg

备份完成后,发起RecoverJob,恢复任务的Pod的挂载目录包括Follower的数据目录和备份集目录,使用备份工具发起恢复任务,主要为回放redo日志,并把数据文件从备份集目录移动到Follower的数据目录。相比普通MySQL的恢复流程,我们的DN还需要做一次刷新三节点元数据的操作,主要告诉当前节点自己是Follower还是Logger,还有其他节点的地址信息。
23.jpg

之后便是重新拉起Follower,让Follower追平leader上的consensus log,我们便得到一个恢复成功的Follower节点。

Logger重搭
对Logger重搭的时候,因为Logger不需要存数据文件,所以我们不再需要在Leader做一次备份,可直接从Leader获取当前的consensus log的位点,在一个刚刚初始化好的节点上,刷元数据,即告诉这个节点:自己的角色、consensus log位点、其他节点的地址信息。其他的实现流程上,比如临时pod、恢复Job的创建,节点拉起等,则和Follower重搭类似。

应用案例

备库重搭主要作用包含:恢复节点和迁移节点,我们可以利用这两个特性做很多事情。在实际的运维中,备库重搭我愿称之为运维神器。在polardbx-operator中,我们无需关心follower节点还是logger节点,只需要在配置文件中指定pod的名称(参考备库重搭),polardbx-operator会去识别节点类型进行相应的任务,以下讲解我们将不再区分Follower和Logger节点的备库重搭。

案例一 节点故障恢复
导致节点故障的原因有很多,我们只需要判断是否为宿主机故障导致的节点故障,这决定了我们是采用本机重搭还是跨机重搭。
24.jpg

案例二 节点迁移
表面上备库重搭是一种恢复备库的手段,然而它所具备的节点迁移能力,可以在非故障场景下也发挥出很大的作用,比如旧主机下线,我们可通过指定主机重搭的方式,把节点迁移到新主机上。如果遇到需要迁移的节点是主节点,则通过主动HA切换将主节点切换为备节点,再利用备库重搭进行迁移。接下来,我们通过一个典型例子,讲解如何利用备库重搭,手工地将一个机房的xdb实例,在保证用户业务不中断的情况下,将该xdb实例迁移到另外一个机房。 初始状态下,一个xdb实例的leader、follower和logger节点分别分布在可用区1(一般情况下可以认为是一个机房)里的主机1、主机2和主机3上。我们需要把整个xdb实例迁移到可用区2去,那么我们如何通过备库重搭来实现节点的迁移呢?
25.jpg

首先,我们可以通过备库重搭中指定主机重搭的方式,将follower节点和logger节点分别迁移到可用区2里的主机2和主机3上,如下图所示:
26.jpg

接下来,做一次主动HA切换,将Leader角色切换到可用区2的主机2上,接着在使用指定节点跨机备库重搭,将可用区1的主机1上的follower节点迁移到可用区2的主机1上,如下图所示:
27.jpg

结尾

本文我们首先讲解了什么是备库重搭,之后讲解了polardbx-operator如何实现对DN的备库重搭,最后通过两个案例描述了备库重搭的实际运用。希望读者有所启发,利用备库两个基本的功能:节点恢复和迁移,在真实场景中解决问题。

本文来源:PolarDB-X知乎号

相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
相关文章
|
2月前
|
SQL 关系型数据库 索引
关系型数据库SQLserver插入数据
【7月更文挑战第28天】
37 4
|
8天前
|
存储 人工智能 Cloud Native
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
阿里云数据库重磅升级!元数据服务OneMeta + OneOps统一管理多模态数据
|
1月前
|
存储 SQL Cloud Native
揭秘!PolarDB-X存储引擎如何玩转“时间魔术”?Lizard多级闪回技术让你秒回数据“黄金时代”!
【8月更文挑战第25天】PolarDB-X是一款由阿里巴巴自主研发的云原生分布式数据库,以其高性能、高可用性和出色的可扩展性著称。其核心竞争力之一是Lizard存储引擎的多级闪回技术,能够提供高效的数据恢复与问题诊断能力。本文通过一个电商公司的案例展示了一级与二级闪回技术如何帮助快速恢复误删的大量订单数据,确保业务连续性不受影响。一级闪回通过维护最近时间段内历史数据版本链,支持任意时间点查询;而二级闪回则通过扩展数据保留时间并采用成本更低的存储方式,进一步增强了数据保护能力。多级闪回技术的应用显著提高了数据库的可靠性和灵活性,为企业数据安全保驾护航。
32 1
|
28天前
|
数据库 Windows
超详细步骤解析:从零开始,手把手教你使用 Visual Studio 打造你的第一个 Windows Forms 应用程序,菜鸟也能轻松上手的编程入门指南来了!
【8月更文挑战第31天】创建你的第一个Windows Forms (WinForms) 应用程序是一个激动人心的过程,尤其适合编程新手。本指南将带你逐步完成一个简单WinForms 应用的开发。首先,在Visual Studio 中创建一个“Windows Forms App (.NET)”项目,命名为“我的第一个WinForms 应用”。接着,在空白窗体中添加一个按钮和一个标签控件,并设置按钮文本为“点击我”。然后,为按钮添加点击事件处理程序`button1_Click`,实现点击按钮后更新标签文本为“你好,你刚刚点击了按钮!”。
96 0
|
1月前
|
SQL 关系型数据库 数据库
|
2月前
|
SQL 关系型数据库 数据库
关系型数据库SQLserver查询数据
【7月更文挑战第28天】
39 4
|
1月前
|
监控 Cloud Native 关系型数据库
【跨区域PolarDB-MySQL主备互通】:揭秘如何跨越万里实现数据无缝同步,打造坚不可摧的灾备体系!
【8月更文挑战第20天】阿里云PolarDB是一款兼容MySQL协议的云原生数据库服务,提供高性能与高可用性。本文介绍如何在PolarDB-MySQL中实现跨区域主备同步。首先创建主备两个集群,接着通过MySQL复制功能配置同步:获取主节点复制信息、配置备节点复制并启动复制进程。最后,通过`SHOW SLAVE STATUS\G;`监控复制状态,确保数据同步正常。此方法可提升数据的可靠性和可用性,需考虑网络条件对性能的影响。
48 0
|
1月前
|
SQL 关系型数据库 数据库连接
drds配置逻辑库和物理表
【8月更文挑战第6天】
63 0
|
16天前
|
关系型数据库 MySQL Serverless
探索PolarDB MySQL版:Serverless数据库的灵活性与性能
本文介绍了个人开发者对阿里云PolarDB MySQL版,特别是其Serverless特性的详细评测体验。评测涵盖了产品初体验、性能观测、Serverless特性深度评测及成本效益分析等方面。尽管试用过程中遇到一些小问题,但总体而言,PolarDB MySQL版表现出色,提供了高性能、高可用性和灵活的资源管理,是个人开发者和企业用户的优秀选择。
|
1月前
|
关系型数据库 MySQL 分布式数据库
PolarDB 与传统数据库的性能对比分析
【8月更文第27天】随着云计算技术的发展,越来越多的企业开始将数据管理和存储迁移到云端。阿里云的 PolarDB 作为一款兼容 MySQL 和 PostgreSQL 的关系型数据库服务,提供了高性能、高可用和弹性伸缩的能力。本文将从不同角度对比 PolarDB 与本地部署的传统数据库(如 MySQL、PostgreSQL)在性能上的差异。
71 1

热门文章

最新文章

相关产品

  • 云原生数据库 PolarDB