前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SRE初识PostgreSQL:可用性知识体系梳理

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

原创
作者头像
AIOPS
发布2023-09-25 19:37:43
5233
发布2023-09-25 19:37:43
举报
文章被收录于专栏:高可用高可用

背景

最近一场调查还是挺意外的,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腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 备份体系
  • 混沌工程
  • 高可用建设
  • 监控体系
  • 总结
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档