SRE初识PostgreSQL:可用性知识体系梳理

2023-09-25 19:37:43 浏览数 (1)

背景

最近一场调查还是挺意外的,PostgreSQL超越MySQL成为最受欢迎的数据库。身边的客户也有不少开始采用PostgreSQL作为生产的数据库,同时大模型火热、常时记忆的需求,也催生了对向量数据库的需求,而PostgreSQL,众多原因让我不得不把目光投向了这款产品,准备写一篇系列文章介绍PostgreSQL的备份体系、高可用建设、混沌工程、监控体系等内容。

从网上了解到PostgreSQL用户众多、应用领域广泛、支持注入地理位置/向量等众多数据类型,当前我对PostgreSQL了解有限,暂时不在这些知识展开,感兴趣的人自行搜索。

备份体系

数据库内容的备份是为了确保数据的安全性和可恢复性。在数据损坏、误删除、系统故障或灾难性事件发生时,备份允许恢复关键数据,确保业务连续性,避免数据丢失和停机时间,同时满足合规性要求。备份还支持数据版本控制、性能优化和数据分析。因此,数据库备份是保护和管理重要数据的关键措施。主要根据过往经验,备份要在以下几个方面做好建设:

1、 异构备份:使用与当前数据运行环境不同的存储平台或者系统进行备份,例如:CDB产品使用COS产品作为冷备存储,COS产品使用CBS产品作为冷备存储。

2、 权限分离:线上数据和灾备数据(冷备数据)的运维权限需做分离,确保单人不能同时删除线上数据和备份数据;最佳实践:CDB回收冷备数据清理权限,由COS自身管理冷备的生命周期。

3、 定期删除故障演习,针对不同的产品构造不同的删除场景,验证恢复能力,输出报告和改造方案,并结合业务场景进行校验

4、 备份地域:根据数据紧要程度,可建立异地备份选项。避免同地的灾难事件影响数据安全性

5、 恢复能力:定期做恢复实验,验证数据的可用性及恢复应急能力。

6、 运营监控:备份是否正常执行,备份效率是否满足需要

混沌工程

混沌工程是一种实验方法,在生成环境引入故障来提升系统的韧性,对业务系统可用性稳定起到巨大作用,国外已有不少实践,现在国内也在探索采用。之前我写过一篇从方法论到实践的文章,供不熟悉混沌的人参考【万字长文】腾讯云新能源汽车客户-混沌工程实战-腾讯云开发者社区-腾讯云

调研了国内的ChaosBlade、ChaosMesh、ChaosMeta后,发现并没有直接在PostgreSQL上面注入故障的工具,同时 PostgreSQL 本身并没有专门用于故障注入的内置工具。

那具体如何实施呢?可以从日常生产上的故障场景出发,借助业务访问数据库的异常、承载数据库的IaaS异常,来模拟下面是一个思路表格:

故障场景

业务层

IaaS层

主从切换

——

1、PostgreSQL集群主节点故障

部分请求错误

1、访问接口层面

1、PostgreSQL集群间网络异常

延迟

1、 借助istio等第三方工具,在访问接口层面,注入接口访问延迟 2、 借助chaosblade等工具,在java agent中注入jvm 虚拟机级别的延迟

1、 提升PostgreSQL底层资源高负载 2、 模拟微服务到PostgreSQL间网络延迟

高可用建设

高可用,主要是避免单点故障,对整个PostgreSQL的可用性造成影响,收集网上资料,主要有以下几种高可用方案

分类

方案

特点

优点

劣势

软件

流复制 (Streaming Replication)

- 使用PostgreSQL内置的复制机制。- 主服务器将数据流式传输到一个或多个从服务器。- 异步复制- 适用于故障切换和负载均衡。

- 内置于PostgreSQL,易于配置和管理。- 可用于故障切换和负载均衡。- 高性能。- 适用于同一版本的PostgreSQL。

- 异步复制可能会导致数据延迟。- 从服务器不能用于读写分离。- 需要手动配置和监视。

逻辑复制 (Logical Replication)

- 使用PostgreSQL内置的逻辑复制机制。- 允许选择性复制特定表或数据库的更改。- 可跨版本复制。- 可用于数据仓库和数据集成。

- 灵活的数据复制。- 跨版本兼容性。- 可用于数据仓库和数据集成。- 可用于多个PostgreSQL版本。

- 配置较复杂。- 需要更多的管理和监视。- 逻辑复制通常比流复制慢。

BDR (Bi-Directional Replication)

- 多主复制解决方案。- 允许多个PostgreSQL服务器之间的双向复制。- 可用于数据同步和负载均衡。

- 双向数据同步。- 可用于负载均衡。- 可以用于多主架构。

- 配置和管理复杂。- 可能需要更多的硬件资源。- 不适用于所有用例。

硬件方案

SAN是(Storage Area Network)

- 使用SAN技术将存储资源共享给多台服务器。- 数据存储在共享的存储设备上,多个服务器可以访问相同的数据。-通常通过双控制器和冗余电源实现高可用性存储设备。

- 数据一致性:SAN提供了数据一致性和可靠性,可以避免数据损坏或丢失。- 高性能:SAN通常提供高性能存储,适用于高负载数据库工作负载。- 管理简单:SAN提供集中管理,可以轻松管理存储资源。- 可扩展性:可以轻松扩展存储容量,以适应不断增长的数据需求。

- 单点故障:尽管SAN通常具有高可用性功能,但仍然存在单点故障的风险。- 成本高昂:SAN硬件和许可证费用可能很高。- 复杂性:配置和管理SAN可能需要专业知识,复杂性较高

DRBD(Distributed Replicated Block Device)

- DRBD是一种块设备复制技术,用于在两个节点之间实时复制块级数据。- DRBD可以配置为活动/备份模式,其中一个节点为主节点,另一个为备份节点。- 数据在主节点上写入后,会实时复制到备份节点。

- 实时复制:DRBD提供实时数据复制,确保数据在主节点故障时不会丢失。- 自动故障切换:可以自动切换到备份节点,实现高可用性。- 相对较低的成本:相对于一些高端SAN解决方案,DRBD可能成本较低。- 简化管理:相对于一些复杂的存储解决方案,DRBD的配置和管理可能较为简单。

- 限制于块级复制:DRBD是块级复制,不支持更高级别的数据库复制或故障切换。- 对网络要求高:DRBD需要低延迟和高可靠性的网络连接。- 配置和管理复杂性:虽然相对较简单,但仍需要配置和管理。

监控体系

数据库作为业务系统的关键组件,完善的监控体系,对数据库稳定运行、故障定位、恢复都具有至关紧要的作用。参考云产品MySQL的监控体系,后面准备从以下几个方面做监控建设:

分类

监控工具

对标云MySQL监控

图形化监控

Prometheus、Grafana

云监控

性能监控

pg_stat_statements

dbbrain

配置管理

pgAdmin

控制台配置管理命令

总结

本文是一个开篇性的文章,先把技术领域、范围划出来,后面会结合实际案例,对每部分做深入探讨和实践。

我正在参与 腾讯云开发者社区数据库专题有奖征文

我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表

0 人点赞