暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL 高可用方案

云计算布道师 2021-06-02
751

PostgreSQL 是一块非常优秀的数据库产品,除了完美支持事务、子查询、多版本控制(MVCC)、数据完整性检查等特性外,在去 O、科学计算、地理数据更有很多优秀的特性。

本文旨在帮助非数据库专业的技术人员对其高可用方面有了全面的了解,以建立面向业务层的架构选型设计框架。

在讨论高可用方案前,需要先对齐对高可用的理解,抽象谈高可用方案很容易过度焦虑风险,最终导致过度设计。

完整的高可用方案涉及的方面很多,需要根据应用情况选择性建设。

如果纯粹从技术、成熟度、成本等角度考虑,租用云服务实现高可用是最具性价比的方案,省去了部署方案的设计、实施和维护等挑战和工作量。例如可以考虑阿里、华为的相关高可用版本。

如果自建,在资源充裕的条件下,可以采用共享磁盘的方案。因为只有一份数据,则省去了数据一致性、同步技术及效率等的设计,同时也增加了硬件成本以及数据异常时的风险。

如果有两台以上服务器,但没有存储设备,可以将数据库视作黑盒,即直接实现两台数据库所在机器的数据同步。它的好处是,通用性强,不受数据库自身能力的限制。

对一件事物了解越多,我们能解决它的角度就越多。在不将文件当做黑盒,而是知道其结构,而且是专门设计的,则能更高效的完成数据同步。WAL 的复制技术就是这类思路。

选择同步或异步都要视业务场景而定,同步复制优先保证的是数据的一致性,但带来服务可用性的降低;异步复制降低了数据一致性,但解耦了主备。重要的系统可以考虑用 3 台服务器组成集群,1 个主,1 个同步,1 个异步。
无论同步和异步都面临数据误操作时难恢复的问题,所以还可以选择延时复制,即备份节点在主完成操作一段时间后,再复制该操作。
如果增加级联的维度,部署方案还有很多对读写优化的变形方案。

逻辑复制是在上一个方案基础上做的变形,还是基于 WAL,但更加精细化了,而不像前者是面向整个库的复制,即可以精细到表级别。

基于触发器的主备复制是一种更精确的复制,有兴趣的可以试试。

使用中间件基于语句的复制是将复制的复杂度留在中间件中,不再依赖数据库服务,降低了数据库部署的难度。但如果涉及随机函数、时间戳等类函数,不同数据库上的结果可能会不一样,最终会导致数据不一致的问题。

图书推荐《PostgreSQL 实战》

文章转载自云计算布道师,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论