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


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

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

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

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

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

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

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

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

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

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




