分布式存储系统设计方案——备份容灾

合集下载

分布式系统中的容灾与灾备设计(五)

分布式系统中的容灾与灾备设计(五)

分布式系统中的容灾与灾备设计在现代信息技术高速发展的时代,分布式系统已经成为许多企业和机构的核心架构。

然而,在构建和维护分布式系统时,容灾与灾备设计是一个至关重要的方面。

本文将讨论分布式系统中的容灾与灾备设计的原则、技术和最佳实践。

一、容灾与灾备的重要性分布式系统的容灾与灾备设计是为了应对可能发生的系统故障和自然灾害的影响,确保系统的稳定性和可用性。

容灾与灾备设计不仅可以减少系统停机造成的损失,还可以保持业务连续运行,提高用户体验,增加企业的竞争力。

二、容灾与灾备设计原则1. 多地区部署:分布式系统应该在不同地理区域部署,避免单点故障。

这样,即使一个地区发生故障,其他地区的系统仍然可以正常运行。

2. 数据备份:数据备份是容灾与灾备设计的核心。

应该定期将系统数据备份到不同的地点和存储介质中,以防止数据丢失。

3. 容错机制:分布式系统必须具备容错机制,能够在单点故障情况下自动切换到备用节点,保持系统的可用性。

4. 监控与预警:系统应该有自动化的监控和预警机制,能够及时检测到系统异常,并提供预警信息,以便及时采取应对措施。

5. 持续测试与复原能力:容灾与灾备设计并不是一次性完成的,而是需要持续测试和改进的过程。

系统应该具备快速复原能力,能够在灾难发生后迅速恢复正常运行。

三、容灾与灾备设计技术1. 数据复制:数据复制是容灾与灾备设计的关键技术之一。

通过将数据复制到多个地点,可以实现数据的冗余备份和高可用性。

常用的数据复制技术包括数据库复制、文件系统复制和对象存储复制等。

2. 负载均衡:负载均衡是分布式系统中常用的技术,通过均衡系统的负载,可以减少单个节点的压力,提高系统的性能和可靠性。

常用的负载均衡技术包括DNS负载均衡、软件负载均衡和硬件负载均衡等。

3. 容器化与虚拟化:容器化和虚拟化技术可以提供弹性和灵活性,使系统能够快速调整和扩展。

容器化技术如Docker和Kubernetes可以实现快速部署和迁移,而虚拟化技术如VMware和Hyper-V可以提供硬件资源的隔离和动态分配。

分布式系统中的容灾与灾备设计(六)

分布式系统中的容灾与灾备设计(六)

分布式系统中的容灾与灾备设计一、介绍在当今数字化的时代里,分布式系统扮演着至关重要的角色。

分布式系统可以同时运行在多个不同地理位置的计算机上,使得数据和任务能够被高效地处理和存储。

然而,由于各种原因,例如自然灾害、硬件故障或网络中断,分布式系统可能会面临容灾和灾备的挑战。

因此,设计有效的容灾和灾备机制对于分布式系统的可靠性至关重要。

二、容灾设计容灾是指在不可避免的系统故障或中断发生时,采取措施保障系统可用和可靠性的过程。

以下是一些常见的容灾设计方法: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容灾方案还包括建立灾备数据中心。

灾备数据中心通常位于地理位置上与主数据中心相距较远的地方,以避免受到同一地区的灾害影响。

TiDB通过数据复制和故障切换等技术手段,将数据实时同步到灾备数据中心,使得在主数据中心发生灾难时,可以快速切换到灾备数据中心,保证系统的连续性和可用性。

六、流量调度流量调度是指在容灾过程中,根据实际需求合理分配流量到不同的数据中心或节点上。

分布式系统中的容灾与灾备设计(七)

分布式系统中的容灾与灾备设计(七)

分布式系统中的容灾与灾备设计在当今高度互联的信息时代,分布式系统日益成为各行各业的核心基础设施之一。

然而,任何一个系统都无法百分之百保证完全无故障运行,因此容灾与灾备设计在分布式系统中变得至关重要。

本文将探讨分布式系统中的容灾与灾备设计,以及它们对系统可靠性和可用性的重要性。

一、容灾设计容灾设计是指为分布式系统设置备用的硬件设备、软件环境和数据存储等措施,以确保系统在面对故障、攻击或其他灾难时能够继续正常运行。

容灾设计的主要目标是避免单点故障和提高系统的可靠性。

1. 备份与复制备份是一种常见的容灾策略,通过将数据和系统配置的副本存储在不同的位置,以防止数据丢失。

分布式系统通常采用数据备份和系统配置备份的方式,以保证数据和系统的完整性。

复制数据可以采用同步备份或异步备份的方式,根据系统需求进行选择。

2. 集群与冗余集群是指将多个服务器连接起来作为一个整体来共同完成工作的系统。

通过在分布式系统中设置集群,可以实现负载均衡和冗余备份。

当一个服务器发生故障时,集群中的其他服务器可以接管工作,保证系统的正常运行。

通过冗余的方式,分布式系统可以提高容错性和可用性,减少单点故障的风险。

3. 容错算法与故障恢复在分布式系统中,容错算法是非常重要的一环,用于检测、纠正和恢复系统中的错误和故障。

常见的容错算法包括冗余校验、容错编码和错误检测与纠正等。

故障恢复是容灾设计中的重要环节,可以通过自动化的方式实现。

当系统出现故障时,故障恢复机制可以自动检测并启动故障恢复流程,以尽快恢复系统的正常运行。

二、灾备设计灾备设计是容灾设计的一种特殊情况,主要针对自然灾害和人为灾害等无法预测和控制的情况进行预防和应对。

灾备设计的主要目标是减少灾害对分布式系统的影响,提高系统的可用性和弹性。

1. 地理分布与多中心架构通过在不同地理位置建立数据中心和服务器节点,可以实现系统的地理分布和多中心架构。

当一个地区发生灾害时,其他地区的数据中心和服务器节点可以接管工作,保证系统的正常运行。

在分布式存储系统中进行容灾与备份的最佳实践(一)

在分布式存储系统中进行容灾与备份的最佳实践(一)

分布式存储系统已经成为了现代企业中不可或缺的重要组成部分。

为了保障数据的安全可靠,容灾与备份是分布式存储系统中的重要环节。

本文将探讨在实际应用中,分布式存储系统中进行容灾与备份的最佳实践。

1. 分布式存储系统的容灾机制在一个分布式存储系统中,容灾机制的设计至关重要。

容灾机制的目的是在发生硬件故障、软件错误或自然灾害等情况下,保障系统的连续可用性和数据的完整性。

常见的容灾机制包括数据冗余、备份和错误修复等。

数据冗余在分布式存储系统中,数据冗余是一种常见的容灾方式。

通过在多个节点上存储相同的数据副本,即使其中某些节点出现故障,系统仍然能够继续提供服务。

数据冗余可以采用同步复制或异步复制的方式实现。

同步复制提供了更高的数据一致性,但会带来更高的延迟和系统开销。

异步复制可以减少延迟和开销,但可能会导致数据不一致的情况。

备份备份是另一种常见的容灾方式。

分布式存储系统可以定期将数据备份到其他节点或磁盘上,以防止数据丢失。

备份可以提供更高的可靠性和数据恢复能力,但也会占用更多的存储空间和带宽。

错误修复在分布式存储系统中,错误修复是一项非常重要的任务。

当系统中的某个节点发生故障或数据损坏时,错误修复机制会自动检测并修复这些错误。

错误修复可以通过重新分配数据副本、重建丢失的数据块或使用纠删码等方式实现。

2. 最佳实践:容灾与备份策略在实际应用中,为了确保分布式存储系统的可靠性和容灾性,需要采取一些最佳实践策略。

多数据中心部署多数据中心部署是一种常见的容灾和备份策略。

通过在不同的数据中心之间进行数据冗余和备份,即使某个数据中心发生故障,系统仍然能够继续运行。

同时,多数据中心部署可以提供更好的故障切换和灾难恢复能力。

定期备份和恢复测试定期备份是保障数据安全的重要措施。

分布式存储系统应该根据实际需求,制定合理的备份策略,包括备份频率、存储介质和备份数据的完整性校验等。

并且,为了确保备份的可靠性和恢复性,在备份数据的同时,还应该进行定期的恢复测试,以验证备份数据的完整性和可用性。

分布式存储和容灾备份技术

分布式存储和容灾备份技术

分布式存储和容灾备份技术随着互联网的普及和物联网的兴起,数据量急剧增加,数据的存储和管理成为了企业及个人面临的重要问题。

而传统的集中式存储方案显然已无法满足这种需求,因此分布式存储方案逐渐成为了趋势。

分布式存储是指数据分散存储在多个节点上,而非传统的集中式存储方式。

这种方式可以有效地缓解存储压力,提高系统的稳定性和可靠性。

同时,数据分布在多个节点上还可以提高数据访问的效率。

在分布式存储中,容灾备份技术尤为重要,以确保数据的安全和可靠性。

容灾备份技术是指在出现灾难等异常情况时,通过备份的方式恢复已经丢失的数据。

常见的容灾备份技术包括冗余阵列、镜像备份、异地备份等。

冗余阵列技术可以通过数据的多次备份实现数据的可靠性。

常见的冗余阵列包括RAID 1、RAID 5、RAID 6等。

对于RAID 1来说,数据被镜像到两个磁盘上,当其中一个磁盘发生故障时,另一个磁盘可以继续工作,从而保证数据的安全。

对于RAID 5和RAID 6来说,数据被分散存储在不同的磁盘上,当发生故障时可以通过计算和重建的方式恢复数据。

镜像备份技术是指将数据完全复制到备份设备上,以避免数据因为任何故障导致的数据损失。

在镜像备份中,数据存储在两个设备上,当其中一个设备故障时,另一个设备可以继续工作。

因此,镜像备份技术在容灾备份中扮演了关键的角色。

异地备份技术是指将数据备份到远离本地的地方,以确保当本地发生灾难时数据仍然可以找到。

这种方式一般涉及到跨地域的数据备份,因此需要依赖于高速的网络通信。

总之,分布式存储和容灾备份技术是当下互联网和物联网时代不可缺少的技术。

分布式存储可以提高系统的效率和可靠性,容灾备份技术可以确保数据的安全和可靠性。

随着数据量的不断增加,这些技术的应用也将不断深入,并将成为未来数据存储的主流方案。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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差异,如果某个备节点差异达到一定的阈值,则禁止该备节点提供服务,如果差异在比较长的时间之后仍然无法恢复,则会触发死机恢复流程。

数据回档
最后再简单介绍下数据冷备和回档,主要是由备份系统负责。

备份任务一般是手动或定时发起,属于业务级别的,备份系统收到一个业务的备份任务后,会远程备份业务的所有数据,过程比较简单,就是遍历所有的存储节点,把属于该业务的所有数据写入到远程文件系统中,每次备份都需要记录开始时间和结束时间,作为数据回档的基准。

系统中所有的写操作都会记录一份远程的流水,每条流水都记录了写操作的时间戳,由流水中心统一存储。

结合数据冷备和流水,可以恢复到冷备完成后任意时刻的数据。

备份系统收到一个业务回档任务后,首先停止该业务的服务,然后清空业务的所有数据,接着从冷备做一次全量的恢复,然后再重放流水到指定时间点,即可完成数据回档。

需要注意的是这里的冷备并不是快照,在进行冷备的时候,写操作也正常执行,所以从冷备开始时间重放流水会导致很多的写操作重复执行,这里通过数据版本校验来避免这个问题,在数据中保存了版本信息,在写操作流水中也记录了对应的写操作完成后的数据版本,重放流水的时候,如果流水中记录的版本不比数据中的版本新,则直接跳过这条流水,这样就保证了数据回档的准确性。

Welcome To Download !!!
欢迎您的下载,资料仅供参考!。

相关文档
最新文档