分布式存储系统设计方案——备份容灾
容灾备份技巧:分布式备份与集中式备份的区别(十)

容灾备份技巧:分布式备份与集中式备份的区别背景介绍:在当今数字化时代,数据的安全性和可靠性越发被重视。
尤其对于企业而言,数据的丢失或损坏可能导致巨大损失。
因此,容灾备份技巧成为了每个企业都应该掌握的重要知识。
而在容灾备份技巧中,分布式备份与集中式备份是两种常见的备份方式。
本文将探讨分布式备份与集中式备份的区别,以帮助读者更好地理解和选择适合自己的备份方式。
一、概念解析1. 分布式备份分布式备份是指将备份数据分散存储在不同的位置或节点上,以增加数据的容灾性和安全性。
每个节点都包含完整的备份数据,即使其中一个节点损坏或丢失,其他节点依然能够还原数据。
分布式备份通常需要借助网络传输技术,将数据分发到各个节点。
2. 集中式备份集中式备份是指将所有的备份数据集中存储在一个中心位置。
这个中心位置可以是一个磁带库、硬盘阵列或云存储服务器等。
所有的备份操作都在该中心位置进行,每个备份任务都会将数据发送到中心位置进行存储和管理。
二、备份效率1. 分布式备份的备份效率由于分布式备份将备份数据分散存储在多个节点上,备份效率较高。
备份任务可以同时在多个节点上运行,提高了备份速度。
此外,分布式备份还可以根据需求自定义备份计划,提高备份效率和灵活性。
2. 集中式备份的备份效率集中式备份采用集中存储的方式,备份效率相对较低。
因为所有的备份任务都需要在中心位置进行,如果备份任务较多或数据量庞大,可能会导致备份速度较慢。
另外,集中式备份也有可能造成瓶颈问题,因为中心位置需要承载所有备份任务。
三、数据安全性1. 分布式备份的数据安全性分布式备份将备份数据分散存储在多个节点上,即使其中一个节点发生故障,其他节点仍然可以保证数据的安全。
由于数据分布在不同的节点上,对于黑客攻击或自然灾害等风险也拥有更高的抵抗能力,因此,分布式备份具备较高的数据安全性。
2. 集中式备份的数据安全性集中式备份将所有的备份数据集中存储在一个中心位置,一旦中心位置遭受到故障、黑客攻击或自然灾害等,可能导致所有的备份数据丢失。
ceph 灾备方案

ceph 灾备方案Ceph 灾备方案随着云计算和大数据时代的到来,数据的安全性和可靠性成为了企业和组织关注的重点。
Ceph作为一种分布式存储系统,具有高可靠性和可扩展性,因此备受青睐。
为了确保数据的持久性和可恢复性,制定一套完善的Ceph灾备方案是至关重要的。
一、灾备方案的必要性Ceph作为一种分布式存储系统,通过将数据分布在不同的节点上,提高了数据的可靠性和可用性。
然而,单一节点的故障或灾难事件(如火灾、地震等)可能导致数据的不可用或永久丢失。
因此,采取灾备措施是必要的,以保证数据的安全性和可恢复性。
二、Ceph灾备方案的设计原则1. 多活数据中心:构建跨多个数据中心的Ceph集群,以实现数据的多活部署。
这样即使一个数据中心发生故障,其他数据中心仍然可以提供服务。
2. 异地冗余备份:将数据在不同地理位置的节点上进行冗余备份。
这样即使某个地区发生自然灾害或人为破坏,数据仍然可以从其他地区恢复。
3. 定期备份:定期对Ceph集群中的数据进行备份,以确保数据的完整性和可恢复性。
备份数据可以存储在独立的存储系统中,以防止主集群的故障。
4. 自动化恢复机制:灾备方案应该具备自动化的数据恢复机制,能够在节点故障发生时快速地将数据恢复到正常状态。
这可以通过使用Ceph的自动化工具和脚本来实现。
三、Ceph灾备方案的具体实施1. 多活数据中心的构建:建立多个数据中心,并在每个数据中心中部署独立的Ceph集群。
通过使用Ceph的异步复制功能,将数据同步到其他数据中心的节点上,实现数据的多活部署。
2. 异地冗余备份的配置:将数据在不同地区的节点上进行冗余备份。
可以通过配置Ceph的存储池和副本数来实现数据的冗余备份。
确保每个数据中心都有足够的存储容量来存储备份数据。
3. 定期备份策略的制定:制定定期备份策略,定期对Ceph集群中的数据进行备份。
可以根据数据的重要性和变化频率来确定备份的时间间隔。
备份数据可以存储在独立的存储系统中,也可以使用Ceph本身的特性来实现备份。
数据中心容灾备份方案设计

数据中心容灾备份方案设计一、引言在当今信息时代,数据的重要性无需多言。
企业的运营和发展离不开数据的支撑,数据中心是企业存储、管理和处理大量数据的核心节点。
然而,数据中心也存在各种风险,如自然灾害、系统故障、恶意攻击等,这些都可能导致数据丢失和业务中断。
因此,设计一套可靠的容灾备份方案对于数据中心至关重要。
二、容灾备份方案的目标1.数据保护:确保数据的完整性、可用性和机密性,防止数据丢失和泄露。
2.业务连续性:在面对灾害和故障时,保障业务能够快速恢复。
3.备份恢复:提供快速、可靠的备份数据恢复功能。
1.多地点部署数据中心应具备多地点部署,避免单点故障带来的影响。
可以在地理位置上选择远离自然灾害风险的地区,减小灾害发生的可能性。
2.容灾设备选型在不同地点建立备份数据中心,并配置相应的容灾设备,包括服务器、存储设备、网络设备等。
容灾设备应采用高可靠性的硬件,确保其能够在灾难发生后快速启动并运行。
3.数据备份策略采用持续备份的策略,将数据实时复制到备份设备中。
建议采用异地备份和多备份策略,确保数据的可用性。
备份数据的存储介质应经过加密保护,防止数据泄露。
4.数据同步与恢复方案定期进行数据同步,确保备份数据的更新,缩小数据丢失的范围。
针对不同的业务系统,设计相应的恢复方案,包括数据恢复顺序、恢复时间、恢复策略等。
重要的业务系统可以采用热备份技术,实现实时备份和快速恢复。
5.灾难恢复演练定期进行灾难恢复演练,验证备份方案的可靠性和有效性。
演练应包括各种故障和灾难的模拟,并测试备份数据的恢复速度和正确性。
6.监控与报警系统建立监控系统,对数据中心的设备、网络和服务进行实时监测。
同时,建立报警系统,能够及时发现和解决潜在的问题,防止问题进一步扩大。
7.人员培训与管理培训数据中心的运维人员具备应急处理和灾难恢复的能力,确保他们能够迅速反应和处理灾难事件。
另外,建立完善的人员管理制度,确保人员能够按照方案执行,并定期更新方案和培训内容。
分布式数据库中的数据备份与异地容灾方法(八)

分布式数据库中的数据备份与异地容灾方法随着互联网的迅猛发展,数据在企业和组织中扮演着越来越重要的角色。
在分布式数据库中,数据备份和异地容灾是确保数据安全性和可用性的关键考虑因素。
本文将讨论分布式数据库中数据备份和异地容灾的方法和策略。
一、数据备份的重要性数据备份是在发生数据丢失或灾难性事件时恢复数据的重要手段。
在分布式数据库中,数据备份的目的是确保即使出现单点故障或硬件故障,数据仍然可用。
数据备份不仅可以防止数据丢失,还可以减少数据恢复的时间和成本。
1. 增量备份在分布式数据库中,增量备份是一种常见的备份策略。
它只备份数据库中发生更改的部分数据,而不是整个数据库。
这种备份方法可以减少备份时间和存储空间的消耗。
增量备份还可以降低数据恢复的时间,因为只需恢复最近的备份和增量备份。
2. 分布式备份分布式备份是一种将数据备份到不同的节点或服务器上的策略。
通过将数据分散存储在多个节点上,分布式备份可以提高数据的冗余和可用性。
当一个节点出现故障或损坏时,数据仍然可以从其他节点恢复。
二、异地容灾的重要性数据中心的灾难是一种常见但难以预测的事件。
由于自然灾害、硬件故障或人为错误等因素,一个数据中心可能会变得不可用。
在这种情况下,异地容灾是确保数据中心在故障发生后能够尽快恢复和继续运行的关键。
1. 数据镜像数据镜像是一种将数据复制到远程地点的方法。
它可以通过同步或异步方式进行。
同步镜像将实时地将数据复制到远程地点,这种方法确保了数据的一致性,但在网络延迟较大时可能会影响性能。
异步镜像允许一定程度的延迟,但在发生故障时可能会导致一些数据丢失。
2. 多数据中心部署多数据中心部署是一种将数据分布在不同地理位置的策略。
当一个数据中心失效时,数据可以从其他数据中心恢复。
多数据中心部署可以确保数据中心的高可用性和容灾能力。
然而,这种方法需要考虑数据一致性和延迟的问题。
三、数据备份与异地容灾的综合方案在分布式数据库中,综合采用数据备份和异地容灾的方案可以更好地保护数据的可用性和安全性。
分布式系统中的容灾与灾备设计(六)

分布式系统中的容灾与灾备设计一、介绍在当今数字化的时代里,分布式系统扮演着至关重要的角色。
分布式系统可以同时运行在多个不同地理位置的计算机上,使得数据和任务能够被高效地处理和存储。
然而,由于各种原因,例如自然灾害、硬件故障或网络中断,分布式系统可能会面临容灾和灾备的挑战。
因此,设计有效的容灾和灾备机制对于分布式系统的可靠性至关重要。
二、容灾设计容灾是指在不可避免的系统故障或中断发生时,采取措施保障系统可用和可靠性的过程。
以下是一些常见的容灾设计方法:1. 数据备份:数据是分布式系统的核心组成部分。
为了保护数据不丢失或损坏,在设计分布式系统时,必须考虑数据备份方案。
常见的方法包括增量备份和全量备份。
增量备份只备份数据中的变化部分,而全量备份则备份所有数据。
2. 容错机制:容错是指系统在存在故障的情况下仍能持续正常运行的能力。
通过在系统中引入冗余,例如使用容错编码技术或复制数据,可以提高系统的容错性。
3. 负载均衡:负载均衡是指将工作任务均匀地分配给多个机器处理,以避免系统过载或某台机器过度负载。
通过使用负载均衡算法,例如轮询和最小连接数,可以确保分布式系统在各个节点上均衡地分配任务。
三、灾备设计灾备是指在发生灾难性事件时,保障关键系统能够尽快地恢复正常运行的措施。
以下是一些常见的灾备设计方法:1. 多地理位置布局:在设计分布式系统时,将服务节点部署在多个地理位置上,以避免一处灾难导致整个系统瘫痪。
多地理位置布局不仅能提高系统的容灾性,还能提供更好的性能和用户体验。
2. 冗余备份:通过将数据和任务的冗余备份存储在不同地理位置的机器上,可以确保即使一处灾害发生,系统仍然能够继续运行。
这需要考虑数据同步和一致性的问题,确保多份备份之间的数据一致性。
3. 灾难恢复计划:制定详细而全面的灾难恢复计划是灾备设计中的关键环节。
计划中需要包括对各种灾害情景的分析、应急措施、恢复步骤和所需资源等信息。
定期测试和更新灾难恢复计划可以确保其有效性。
分布式数据库的容灾方案

分布式数据库的容灾方案随着互联网和大数据技术的迅速发展,分布式数据库在数据存储和处理方面扮演着重要角色。
然而,由于分布式数据库的跨地域和多节点特性,容灾成为了保障数据可用性和一致性的重要问题。
本文将介绍几种常见的分布式数据库容灾方案。
一、备份和恢复备份和恢复是最基本的分布式数据库容灾方案之一。
该方案通过定期将数据库中的数据备份到远程存储设备,以防止数据库服务器出现故障或数据丢失。
在发生灾难性事件时,可通过恢复备份数据来重建数据库。
备份和恢复方案需要注意以下几点:1. 定期备份数据并存储到可靠的远程设备,以避免单点故障。
2. 保证备份数据的完整性和一致性,可以使用数据校验算法进行验证。
3. 定期进行备份文件的恢复测试,以确保备份数据的有效性。
二、数据复制和同步数据复制和同步是分布式数据库容灾方案中常用的一种方式。
该方案通过将数据复制到不同的节点,实现数据的冗余存储和同步,以提供高可用性和容灾能力。
数据复制和同步方案需要注意以下几点:1. 设置合适的复制拓扑结构,如主从复制、多主复制等,以满足业务需求和数据一致性要求。
2. 选择合适的复制策略,如同步复制、异步复制、半同步复制等,平衡性能和数据一致性。
3. 为数据复制和同步过程提供高可用的网络环境和稳定的带宽。
三、故障转移和容灾管理故障转移和容灾管理是分布式数据库容灾方案的关键环节。
该方案通过监控数据库节点的状态和性能,当节点故障或性能异常时,自动切换到备用节点,实现数据库的自动故障转移和容灾。
故障转移和容灾管理方案需要注意以下几点:1. 配置合适的监控系统,及时检测节点的故障和性能问题。
2. 设置自动故障转移策略,如基于心跳检测的故障切换、权重轮询等,实现节点的自动切换。
3. 定期进行故障转移演练和容灾测试,以确保系统的可靠性和高可用性。
四、跨数据中心容灾对于大规模分布式数据库系统来说,常使用跨数据中心容灾方案。
该方案通过在不同地理位置的数据中心部署数据库节点,实现地域容灾和数据备份恢复能力。
tidb容灾方案

tidb容灾方案TiDB容灾方案随着互联网的快速发展,数据的存储和处理需求越来越大。
对于大型互联网企业来说,数据的高可用性和容灾能力是至关重要的。
TiDB作为一种分布式数据库系统,具备强大的数据存储和处理能力,并且提供了灵活的容灾方案,以保障数据的安全和可靠性。
一、容灾概述容灾即容灾备份,是指在系统发生故障或意外情况时,通过采取一系列措施来保护系统的连续性和可用性。
TiDB容灾方案主要包括数据备份、数据冗余和故障切换等。
二、数据备份数据备份是指将数据库中的数据复制到其他存储介质中,以便在主库故障时能够迅速恢复数据。
TiDB提供了备份工具,可以定期将数据备份到远程存储介质中,如云存储或磁盘阵列。
备份数据的频率可根据实际需求进行设置,以保证数据的最新性。
三、数据冗余数据冗余是指将数据复制到多个节点或数据中心,以提高数据的可用性和容灾能力。
TiDB采用分布式架构,数据分片存储在多个节点上,每个节点都包含了完整的数据副本。
当某个节点发生故障时,其他节点可以接替其工作,保证数据的连续性和可用性。
四、故障切换故障切换是指在发生故障时,将工作负载从故障节点迁移到其他节点上,以保证系统的连续运行。
TiDB具备自动故障切换的能力,当某个节点出现故障时,系统会自动将工作负载迁移到其他节点上,并通过重新分配数据副本来恢复数据的可用性。
故障切换的时间取决于节点故障的性质和数据的大小,一般在几秒到几分钟之间。
五、灾备数据中心为了应对自然灾害或其他不可抗力因素,TiDB容灾方案还包括建立灾备数据中心。
灾备数据中心通常位于地理位置上与主数据中心相距较远的地方,以避免受到同一地区的灾害影响。
TiDB通过数据复制和故障切换等技术手段,将数据实时同步到灾备数据中心,使得在主数据中心发生灾难时,可以快速切换到灾备数据中心,保证系统的连续性和可用性。
六、流量调度流量调度是指在容灾过程中,根据实际需求合理分配流量到不同的数据中心或节点上。
云计算平台中的容灾与备份方案设计

云计算平台中的容灾与备份方案设计在云计算平台中,容灾与备份方案的设计是至关重要的。
容灾和备份方案能够帮助组织保护其关键数据和应用程序免受灾害、故障和其他紧急情况的影响。
本文将介绍云计算平台中容灾与备份方案设计的重要性,并探讨一些常见的策略和最佳实践。
云计算平台作为一个分布式虚拟化环境,通常由多个数据中心组成。
容灾和备份方案作为保障云计算平台高可用性和可靠性的基本要素,必须在系统架构的早期阶段就进行规划和设计。
容灾和备份方案的设计应考虑以下几个关键方面。
首先,容灾方案需要通过复制和分布数据来保护系统免受硬件故障、自然灾害或人为错误的影响。
常见的容灾技术包括备份、存储区域网络(SAN)镜像和数据复制。
备份是指将数据复制到一个独立的存储系统,以便在主系统故障时进行恢复。
SAN镜像将数据复制到另一个物理位置的存储设备中,以提供故障转移的能力。
数据复制是将数据从一个地方复制到另一个地方,以实现冗余和恢复功能。
其次,备份方案应确保数据和应用程序能够恢复到先前的状态。
实施备份方案可以采用全备份、增量备份和差异备份等多种方式。
全备份是将整个系统的数据和配置进行备份。
增量备份只备份自上次备份以来发生的变化。
差异备份则是备份自上次完全备份以来的变化。
此外,高可用性和灵活性也是容灾和备份方案设计的重要考虑因素。
高可用性是指云平台的系统和服务能够在发生故障时保持连续运行的能力。
为了实现高可用性,可以采用热备份、冷备份和暖备份等策略。
热备份是指在主机故障时立即切换到备用主机,实现零停机。
冷备份是指备用主机配置和镜像与主机相同,但需要手动介入切换,停机时间较长。
暖备份则是在备用主机上预先安装和配置应用程序,但不实时复制数据。
另外,容灾与备份方案还需要考虑数据恢复点目标(RPO)和恢复时间目标(RTO)。
RPO是指发生故障时,系统中最多可以丢失的数据量。
RTO是指系统从发生故障到完全恢复正常运行所需的时间。
根据业务需求和风险承受能力来确定RPO和RTO,从而选择合适的容灾和备份技术。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分布式存储系统设计方案——备份容灾
在分布式存储系统中,系统可用性是最重要的指标之一,需要保证在机器发生故障时,系统可用性不受影响,为了做到这点,数据就需要保存多个副本,并且多个副本要分布在不同的机器上,只要多个副本的数据是一致的,在机器故障引起某些副本失效时,其它副本仍然能提供服务。
本文主要介绍数据备份的方式,以及如何保证多个数据副本的一致性,在系统出现机器或网络故障时,如何保持系统的高可用性。
数据备份
数据备份是指存储数据的多个副本,备份方式可以分为热备和冷备,热备是指直接提供服务的备副本,或者在主副本失效时能立即提供服务的备副本,冷备是用于恢复数据的副本,一般通过Dump的方式生成。
数据热备按副本的分布方式可分为同构系统和异步系统。
同构系统是把存储节点分成若干组,每组节点存储相同的数据,其中一个主节点,其他为备节点;异构系统是把数据划分成很多分片,每个分片的多个副本分布在不同的存储节点,存储节点之间是异构的,即每个节点存储的数据分片集合都不相同。
在同构系统中,只有主节点提供写服务,备节点只提供读服务,每个主节点的备节点数可以不一样,这样在部署上会有更大的灵活性。
在异构系统中,所有节点都是可以提供写服务的,并且在某个节点发生故障时,会有多个节点参与故障节点的数据恢复,但这种方式需要比较多的元数据来确定各个分片的主副本所在的节点,数据同步机制也会比较复杂。
相比较而言,异构系统能提供更好的写性能,但实现比较复杂,而同构系统架构更简单,部署上也更灵活。
鉴于互联网大部分业务场景具有写少读多的特性,我们选择了更易于实现的同构系统的设计。
系统数据备份的架构如下图所示,每个节点代表一台物理机器,所有节点按数据分布划分为多个组,每一组的主备节点存储相同的数据,只有主节点能提供写服务,主节点负责把数据变更同步到所有的备节点,所有节点都能提供读服务。
主节点上会分布全量的数据,所以主节点的数量决定了系统能存储的数据量,在系统容量不足时,就需要扩容主节点数量。
在系统的处理能力上,如果是写能力不足,只能通过扩容主节点数来解决;而在写能力不足时,则可以通过增加备节点来提升。
每个主节点拥有的备节点数量可以不一样,这在各个节点的数据热度不一样时特别有用,可以通过给比较热的节点增加更多的备节点实现用更少的资源来提升系统的处理能力。
同步机制
在上面的备份架构中,每个分组只有主节点接收写请求,然后由主节点负责把数据同步到所有的备节点,如下图所示,主节点采用一对多的方式进行同步,相对于级联的方式,这种方式在某个备节点故障时,不会影响其它备节点的同步。
在CAP理论中,可用性和一致性是一对矛盾体,在这里主节点执行写操作后会立即回复客户端,然后再异步同步数据到备节点,这样并不能保证主备节点的数据强一致性,主备数据会有短暂的不一致,通过牺牲一定的一致性来保证系统的可用性。
在这种机制下,客户端可能在备节点读到老数据,如果业务要求数据强一致性,则可以在读请求中设置只读主选项,这样读请求就会被接口层转发到主节点,这种情况下备节点只用于容灾,不提供服务。
为了保证主备节点的数据一致性,需要一种高效可靠的数据同步机制。
同步分为增量同步和全量同步,增量同步是主节点把写请求直接转发到备节点执行,全量同步是主节点把本地的数据发到备节点进行覆盖。
接下来详细介绍同步机制的实现,同步的整体流程如下图所示。
系统中数据分片的单位是一致性哈希环中的VNode(虚拟节点),每个VNode有一个自增的同步序列号SyncSeq,VNode中所包含的数据的每一个写操作都会触发它的SyncSeq进行自增,这样在每个VNode内SyncSeq就标识了每一次写操作,并且SyncSeq的大小也反映了写操作的执行顺序。
数据的每次写操作除了修改数据,还会保存写操作对应的SyncSeq,后面可以看到,SyncSeq是同步机制可靠性的基础。
主节点的写进程收到写请求后,先修改数据,把当前VNode的SyncSeq加1并更新到数据中。
接下来会记录Binlog,Binlog是一个三元组
主备节点的数据同步由主节点上的同步进程异步进行,通过扫描上图的同步进度表中主备节点的SyncSeq差异就可知备节点需要同步哪些数据。
同步进程通过同步进度表确定需要同步的二元组
接下来介绍一下同步协议如何保证同步的高效和可靠。
为了让同步包严格按照主节点的发送顺序到达备节点,采用TCP协议进行同步,在主节点的每个 VNode 上到每一个备节点建立一个TCP连接,记为一个同步连接。
在每一个同步连接上,主节点会一次性批量发送多个同步包,备节点也会记录已同步的 SyncSeq,对每一个同步包会检查携带的SyncSeq是否符合预期,如果符合预期,则执行同步写操作,执行成功是更新已同步的SyncSeq,在这种情况写备节点也不需要回应
主节点,主节点在未收到备节点的回应时,会认为同步一切正常。
只有以下异常情况下,备节点才会回应主节点:
在正常同步后第一次收到错误的SyncSeq,回应主节点自己所期望的SyncSeq,主节点收到回应后,会从备节点所期望的SyncSeq开始同步,需要注意的是,备节点在连续收到错误SyncSeq时,只需对第一个错误回应,否则主节点会出现重复同步的情况;
同步连接在断连后重新连接时,备节点告知主节点自己所期望开始同步的SyncSeq,主节点从该SyncSeq开始同步;
SyncSeq符合期望但执行出错,一般是增量同步才可能出现,备节点回应主节点同步出错,主节点收到回应后,把出错的同步包改为全量同步。
在增量同步和全量同步交叉进行的情况下,如果某次全量同步已同步了最新的数据,后续的增量同步可能导致写操作重复执行,为了避免这种情况,备节点会校验同步包中的SyncSeq和数据中的SyncSeq,如果前者不大于后者,说明数据已执行了这次写操作,直接跳过不执行,也不需要回应主节点,这就是为什么需要在数据中保存SyncSeq的原因。
通过上面介绍和分析,可以看出采用同步连接、批量同步的方法,正常情况下只有单向的同步流量,是非常高效的;而在异常情况下,通过出错回应、SyncSeq 校验等机制,保证了同步的可靠性。
容灾机制
如果系统需要具有容灾能力,即在机器发生故障时,系统的可用性基本不受影响,那么系统中所有数据至少需要有两个以上的副本,并且系统的处理能力要有一定的冗余,需要保证在故障机器不能提供服务时,系统不会过载。
一般来说,数据的副本数量越多,系统的处理能力越冗余,系统的容灾能力越强。
更进一步,还需要考虑物理部署,通过把数据的不同副本分布在不同机架、不同机房、甚至是不同城市,来把系统的容灾能力提升到不同的级别。
配置运维中心会监控系统存储层所有节点的状态,存储节点会定时上报心跳,如果配置运维中心在一段时间未收到某个存储节点的心跳,则把该节点的状态标记为故障,并进行故障处理流程。
首先需要禁止故障节点继续提供服务,即通知接口层不再把客户端请求转发的故障节点,如果故障节点是主节点,配置运维中心会查询并对比所有备节点的同步进度,选择数据最新的备节点,将其切换为主节点。
由于所有备节点也会记录Binlog,所以在切换为主节点之后,可以直接向其它备节点进行同步。
这里的主备切换可能会导致少量的数据丢失,如果业务不能容忍这样的数据丢失,则需要使用其它强一致性的方案。
在容灾切换之后,还需要进行故障节点的恢复,以便系统恢复到正常的状态。
故障机器恢复后,就会进入死机恢复流程,无论故障节点在故障前是主节点还是备节点,故障恢复后的角色都是备节点。
首先待恢复节点需要把机器上所有的数据
清空;接着主节点会把当前所有VNode的SyncSeq复制到待恢复节点,并且全量复制所有数据;在全量复制完成之后,开始进行数据同步,由前面的同步机制可知,同步的SyncSeq会从之前复制到待恢复节点的状态开始追赶;在主节点和待恢复节点之间的SyncSeq差异缩小到正常范围时,待恢复节点的角色就变为备节点,开始提供服务。
配置运维中心会监控主备节点之间的SyncSeq差异,如果某个备节点差异达到一定的阈值,则禁止该备节点提供服务,如果差异在比较长的时间之后仍然无法恢复,则会触发死机恢复流程。
数据回档
最后再简单介绍下数据冷备和回档,主要是由备份系统负责。
备份任务一般是手动或定时发起,属于业务级别的,备份系统收到一个业务的备份任务后,会远程备份业务的所有数据,过程比较简单,就是遍历所有的存储节点,把属于该业务的所有数据写入到远程文件系统中,每次备份都需要记录开始时间和结束时间,作为数据回档的基准。
系统中所有的写操作都会记录一份远程的流水,每条流水都记录了写操作的时间戳,由流水中心统一存储。
结合数据冷备和流水,可以恢复到冷备完成后任意时刻的数据。
备份系统收到一个业务回档任务后,首先停止该业务的服务,然后清空业务的所有数据,接着从冷备做一次全量的恢复,然后再重放流水到指定时间点,即可完成数据回档。
需要注意的是这里的冷备并不是快照,在进行冷备的时候,写操作也正常执行,所以从冷备开始时间重放流水会导致很多的写操作重复执行,这里通过数据版本校验来避免这个问题,在数据中保存了版本信息,在写操作流水中也记录了对应的写操作完成后的数据版本,重放流水的时候,如果流水中记录的版本不比数据中的版本新,则直接跳过这条流水,这样就保证了数据回档的准确性。