1、当数据库宕机时,当数据库宕机时,PostgreSQLPostgreSQL高可用高可用在背后做了什么?在背后做了什么?瀚高股份 工程师孟飞龙IvorySQL 2025IvorySQL 2025生态大会生态大会暨暨PostgreSQLPostgreSQL高峰论坛高峰论坛前言故障检测故障检测与转移与转移问题问题探讨探讨结语结语目录CONTENTSIvorySQL 2025IvorySQL 2025生态大会生态大会暨暨PostgreSQLPostgreSQL高峰论坛高峰论坛前言前言IvorySQL 2025IvorySQL 2025生态大会生态大会暨暨PostgreSQLPostgreSQL高峰论坛高
2、峰论坛PGPG高可用高可用简述简述高可用的作用高可用的作用在数据库宕机的危机时刻,PostgreSQL高可用架构会通过一系列精密设计的机制,悄然接管服务并保障业务连续性。高可用的基础高可用的基础流复制,主库将预写日志(WAL)实时发送至备库,备库通过应用日志实现数据同步。同步复制模式下牺牲部分性能换取零数据丢失。高可用的高可用的动作动作提升备库为新主库,通常通过设置vip使应用无感知地连接主库。高可用的难题高可用的难题脑裂防护,如因网络分区造成的多主问题。IvorySQL 2025IvorySQL 2025生态大会生态大会暨暨PostgreSQLPostgreSQL高峰论坛高峰论坛PGPG高可
3、用开源高可用开源软件软件P Pgpool-IIgpool-II核心功能:连接池、负载均衡、读写分离、故障转移核心功能:连接池、负载均衡、读写分离、故障转移局限:配置复杂度较高,故障转移需结合自定义脚本局限:配置复杂度较高,故障转移需结合自定义脚本RepmgrRepmgr核心功能:主从复制管理、自动化故障转移、监控复制状态核心功能:主从复制管理、自动化故障转移、监控复制状态局限:在某些复杂场景下的灵活性和自动化程度局限:在某些复杂场景下的灵活性和自动化程度较弱较弱StolonStolon核心功能:云原生高可用,支持核心功能:云原生高可用,支持KubernetesKubernetes集成。集成。局
4、限:局限:依赖外部存储,性能受存储层限制依赖外部存储,性能受存储层限制P Patroniatroni核心功能:核心功能:自动化、强一致性和云原生支持,自动化、强一致性和云原生支持,比较主流比较主流局限:局限:依赖分布式协调服务的强一致性,增加了架构的复杂度依赖分布式协调服务的强一致性,增加了架构的复杂度IvorySQL 2025IvorySQL 2025生态大会生态大会暨暨PostgreSQLPostgreSQL高峰论坛高峰论坛故障检测与故障检测与转移转移IvorySQL 2025IvorySQL 2025生态大会生态大会暨暨PostgreSQLPostgreSQL高峰论坛高峰论坛故障故障检测
5、检测数据库故障检测数据库故障检测高可用组件会根据主库的进程状态或是否能够连接数据库来判断数据库是否健康。主库故障,需要选举新主同步备故障,需要降为异步备服务器故障检测服务器故障检测高可用组件会根据是否能够获取主库状态来判断数据库是否健康,如patroni是通过dcs中的leader来判断,repmgr通过连接主库和witness判断断电故障断网故障IvorySQL 2025IvorySQL 2025生态大会生态大会暨暨PostgreSQLPostgreSQL高峰论坛高峰论坛故障故障转移转移选举新主选举新主所有的候选备一般按照LSN、故障优先级、同异步等条件来竞选新主备节点备节点提升提升对备节点
6、执行promote操作,使其成为新主跟随新主跟随新主其他备节点会修改配置追随新主复制槽的处理复制槽的处理物理复制槽和逻辑复制槽的处理IvorySQL 2025IvorySQL 2025生态大会生态大会暨暨PostgreSQLPostgreSQL高峰论坛高峰论坛问题问题探讨探讨IvorySQL 2025IvorySQL 2025生态大会生态大会暨暨PostgreSQLPostgreSQL高峰论坛高峰论坛RPORPO和和R RTOTORPORPO与性能与性能RPO(Recovery Point Objective,恢复点目标)是衡量系统在故障或灾难发生后,允