Greenplum高可用架构

10. Greenplum高可用架构与数据持久化论述

Greenplum数据库系统的高可用可以通过提供容错硬件平台实现,可以通过启用Greenplum数据库高可用特性实现,也可以通过执行定期监控和运维作业来确保整个系统所有组件保持健康来实现。

硬件平台的终故障,可能因为常见的持久运行故障或非预期的运行环境。异常断电会导致组件临时不可用。系统可以通过为可能故障的节点配置冗余备份节点来保证异常出现时仍能够不间断提供服务。在一些情况下,系统冗余的成本高于用户的服务终端容忍度。此时,高可用的目标可以改为确保服务能在预期的时间内恢复。

本文会介绍一下master的standby创建,切换;segment添加mirror,如何检测和修复。

目录

10. Greenplum高可用架构与数据持久化论述

1 概述

硬件级别RAID

数据存储总和校验

Segment镜像

Master镜像

双集群

备份和恢复

总结

2 Master mirror

创建一个standby master host

切换

激活master

3 segment mirror

启用 segment mirror 镜像(有条件我会再做测试实验)

检测segment 故障

恢复segment故障

segment mirror故障分析示例

segment 镜像 group vs spread

Group Mirroring 部署方案

Spread Mirroring 部署方案

Group + Spread Mirroring 部署方案

1 概述Greenplum数据库的容错和高可用通过以下几种方式实现:

硬件级别的RAID存储保护

数据存储总和校验

Greenplum segment节点镜像

Master镜像

双集群

[数据库备份和恢复]

硬件级别RAIDGreenplum数据库部署佳时间是采用硬件级别的RAID为单盘失败的情况提供高性能的磁盘冗余,避免只采用数据库级别的容错机制。该方式可以在磁盘级别提供低级别的冗余保护。

数据存储总和校验Greenplum数据库采用总和校验机制在文件系统上验证从磁盘加载到内存的数据没有被破坏。

Greenplum数据库有两种存储用户数据的方式:堆表和追加优化表。两种存储模型均采用总和校验机制 验证从文件系统读取的数据,默认配置下,二者采用总和校验机制验证错误的方式基本类似。

可以通过查看只读服务器配置参数 data_checksums 来查看堆表的总和校验是否开启。

$ gpconfig -s data_checksums [gpadmin@mdw ~]$ gpconfig -s data_checksums Values on all segments are consistent GUC : data_checksums Master value: on Segment value: on [gpadmin@mdw ~]$

强烈建议不要关闭此参数

Segment镜像Greenplum数据库将数据存储在多个segment实例中,每一个实例都是Greenplum数据库的一个PostgreSQL实例,数据依据建表语句中定义的分布策略在segment节点中分布。启用segment镜像时,每个segment实例都由一对 primary和mirror*组成。镜像segment采用基于预写日志(WAL)流复制的方式保持与主segment 的数据一致。

镜像实例通常采用gpinitsystem或gpexpand工具进行初始化。作为佳实践,为了保证单机失败镜像通常运行在与主segment不同的主机上。将镜像分配到不同的主机上也有不同的策略。当搭配镜像和主segment的放置位置时,要充分考虑单机失败发生时处理倾斜小化的场景。

Master镜像在一个高可用集群中,有两种master实例,primary和standby。像segment一样,master和standby 应该部署在不同的主机上,以保证集群不出现单节点故障问题。客户端只能连接到primary master并在上面执行查询。standby master采用基于预写日志(WAL)流复制的方式保持与primary master的数据一致。

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

详细的切换步骤请我之前写的blog:

Greenplum实战--standby master的模拟故障与修复

https://blog.csdn.net/murkey/article/details/105625972

master节点故障切换到standby master上

https://blog.csdn.net/murkey/article/details/105648866

双集群可以通过维护两套Greenplum数据库集群,都存储相同的数据来提供额外的冗余。

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

备份和恢复建议经常备份数据库,可以保证一旦出现问题可以很容易的重新生成数据库集群。备份可以很好的保护 误操作、软件错误和硬件错误。

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

具体的备份和恢复我这边会单独设一个专栏来专门测试

总结

  • Server HA 主机的高可用