Pivotal Greenplum® 6.9-管理员指南-管理系统-Greenplum数据库高可用性概述

Greenplum数据库高可用性概述

可以通过这些方式实现Greenplum数据库系统的高可用性:提供容错硬件平台;启用Greenplum数据库的高可用性功能;执行定期监控运维作业以确保所有系统组件保持健康。

硬件组件终归会因正常耗损或意外情况而发生故障。断电可能导致组件暂时不可用。通过为可能发生故障的组件提供冗余的备用组件,可以使系统具有高可用性,从而在发生故障时使服务不间断。在有些情况下,冗余的成本高于用户对服务中断的承受能力。在这种情况下,高可用的目标是确保能够恢复完整的服务,且能在预期的时间内恢复完成。

硬件级RAID

Greenplum数据库部署最佳实践是,采用硬件级别的RAID为单个磁盘失败的情况提供高性能的磁盘冗余,而不必考虑数据库级别的容错。该方式可以在磁盘级别提供了低级别的冗余保护。

数据存储校验和

Greenplum数据库使用校验和,来验证从磁盘加载到内存的数据在文件系统上没有被破坏。

Greenplum数据库有两种存储用户数据的方式:堆表和AO表。两种存储模型都使用校验和来验证从文件系统读取的数据,默认配置下,它们以类似的方式处理校验和验证错误。

Greenplum数据库master和segment实例在它们所管理的内存中更新页面上的数据。当内存页面被更新并刷新到磁盘时,将计算校验和并与页面一起保存。以后从磁盘检索页面时先验证校验和,并且仅在验证成功的情况下才允许页面进入管理内存。校验和验证失败表示文件系统已损坏,这会导致Greenplum数据库生成一个错误,并中止事务。

默认的校验和设置提供了最佳的保护级别,可以防止未检测到的磁盘损坏传播进数据库和镜像的segment。

堆表的校验和支持在Greenplum数据库采用gpinitsystem初始化时默认启用。可以通过设置 gpinitsystem配置文件中的HEAP_CHECKSUM参数为off来禁用堆表的校验和功能,但是强烈不推荐这么做,详见gpinitsystem

一旦集群初始化完成,就不能改变堆表的校验和功能在该集群上的状态,除非重新初始化系统并重载数据库。

可以通过查看只读的服务器配置参数 data_checksums ,来查看是否在集群中启用了堆表的校验和:

$ gpconfig -s data_checksums

当启动Greenplum数据库集群时,gpstart工具会检查堆表的校验和在master和所有segment上是否一致地启用还是禁用。如果存在不一致,集群会启动失败。请参考gpstart

在有些情况下,为了数据能被恢复,有必要忽略堆表校验和的验证错误,设置ignore_checksum_failure系统配置参数为on,会使Greenplum数据库在堆表和验证失败时只生成一个警告信息,数据页仍然可以被夹在到管理内存中。 如果该页被更新并保存到磁盘,损坏的数据也被复制到镜像segment节点。因为这会导致数据丢失,所以只有在启用数据恢复时才允许设置ignore_checksum_failure参数为on。

对于AO表,校验和支持是在使用CREATE TABLE命令创建AO表时设置的几个存储选项之一默认的存储选项在 gp_default_storage_options服务器配置参数中定义。checksum 存储选项默认被启用并且强烈不建议禁用它。

如果想要禁用AO表上的校验和,您可以

  • 在创建表之前,修改gp_default_storage_options配置参数,使之包含checksum=false,或者
  • 在CREATE TABLE语句的WITH storage_options 子句中,增加checksum=false选项。

注意:CREATE TABLE允许为每一个单独的分区表,设置包括checksums在内的存储选项。

有关语法和示例,请查看创建表命令参考和 gp_default_storage_options 配置参数参考。

Segment镜像

Greenplum数据库将数据存储在多个segment实例中,每个实例都是一个Greenplum数据库PostgreSQL实例。每个表的数据根据​​创建表时在DDL中为表定义的分布策略,分布在各segment之中。启用segment镜像后,每个segment实例都有一对primarymirror。使用基于预写日志记录(WAL)的流复制,使镜像segment与主segment保持最新。请参见segment镜像概述

镜像实例通常采用gpinitsystem或gpexpand工具进行初始化作为最佳实践,为防止单机故障,镜像实例通常运行在与主实例不同的主机上。将镜像分配到不同的主机上也有不同的策略当选择主实例和镜像实例的放置位置时,重要的是考虑故障场景,以确保当单机发生故障的情况下能最小化地处理倾斜。

Master镜像

在一个高可用集群中,有两个master实例:主master备master。与segment一样,主master和备master应部署在不同的主机上,以便群集可以单机故障容错。客户端连接到主master,且查询只在主master上执行。使用基于预写日志记录(WAL)的流复制,备用master与主master保持最新状态。请参阅Master镜像概述

如果主master出现故障,管理员可以通过运行gpactivatestandby工具,让master作为新的master来接管。可以通过在主master和备master上配置一个虚拟IP地址,来保证当发生切换后客户端不需要在不同的网址之间切换如果master发生故障,虚拟IP可以漂移到新的活动master上继续提供服务。

双集群

通过维护两个存储相同数据的Greenplum数据库集群,可以提供更高级别的冗余。

保持双集群数据同步有两种方法,分别叫做"双ETL"和"备份/恢复"。

双ETL提供了一个完整的备用群集,其数据与主群集相同。ETL(提取,转换和加载)是指清理、转换、验证并将数据加载到数据仓库中的过程。使用双ETL,此过程并行执行两次,每个集群一次,每次都需要被验证。它还允许在两个群集上查询数据,从而使查询吞吐量增加一倍。应用程序可以利用两个集群,也可以确保两个集群上的ETL成功并通过验证。

使用备份/还原方法维护双集群,请创建主集群的备份并将其恢复到次集群上。与双ETL策略相比,此方法在次集群上同步数据花费的时间更长,但是需要开发的应用程序逻辑更少。在数据修改和ETL每天或更低频率的执行情况下,使用备份填充第二个集群是理想的选择。

备份和恢复

建议定期备份数据库,除非可以轻松地从源数据重新生成数据库。应进行备份以防止操作、软件和硬件错误。

使用 gpbackup 工具来备份Greenplum数据库。 gpbackup在所有segment上执行并行备份, 所以备份能力随着硬件增加线性扩展。

在设计备份策略时,最主要的关注点是存储备份数据的位置。每个segment管理的数据可以备份到其本地的存储中,但不能永久存储在该位置——备份会减少segment的磁盘空间,更重要的是,硬件故障可能同时破坏该segment的实时数据和备份。执行备份后,应将备份文件从主群集移至独立的、安全的存储。或者,可以直接备份到单独的存储中。

采用Greenplum数据库存储插件工具gpbackup和gprestore,您可以将备份发送到/读取自远程位置或存储设备。该存储插件支持连接到包括Amazon Simple Storage Service(Amazon S3)和Dell EMC Data Domain在内的存储设备。

使用备份/恢复的存储插件API,您可以创建一个自定义的插件, gpbackup 和 gprestore工具可以使用该插件,将自定义的备份存储系统与Greenplum数据库集成。

有关使用gpbackup 和 gprestore的信息,请参阅使用gpbackup和gprestore进行并行备份

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值