第一章 《PostgreSQL高可用之主备复制》
第二章 《PostgreSQL高可用之主备切换》
第三章 《PostgreSQL高可用之故障转移》
文章目录
1.前言
多个PostgreSQL可协同工作,如果主库发生宕机备库将迅速进行接管并对外提供服务以实现高可用。本文将从主备复制、主备切换、故障转移等角度进行实际测试演练。第一章主备复制是基础,通过主备复制可以得到一个或多个相同的实例。在主备复制的基础上通过第二章主备切换介绍了如何手工将主库与备库互换角色。在第三章中,采用了Keepalived进行实时监测,在主库宕机后,使用主备切换中提到的命令使备库升级为主库并对外提供服务,以达到PostgreSQL高可用的目标。
数据库采用14版本,使用docker容器方式搭建主备数据库示例。部分命令与数据库版本有关,如果用的版本不是PostgreSQL14请注意调整相关命令。配置方面主要参考官网"High Availability, Load Balancing, and Replication"章节(https://www.postgresql.org/docs/14/high-availability.html)。
将standby.signal空文件放入PostgreSQL的data目录后启动数据库服务可进入备库模式,备库可以通过读取wal归档或者流复制的方式与主库保持同步。在这里我们采用复制延迟性更低的流复制方式实现主备复制。完成主备库配置后,主库可正常读写,备库将处于只读模式。
2.环境准备
在两台虚拟机上使用docker-compose分别搭建主备库:
- 主库所在服务器IP及端口:192.168.241.129:5432
- 备库所在服务器IP及端口:192.168.241.136:5432
- 数据库工作目录:/home/shfirm/postgresql
主备库docker-compose配置一致:
version: "3.7"
networks:
shfirm:
name: shfirm-network
driver: bridge
services:
postgres:
image: postgres:14.1
container_name: postgres14
restart: always
ports:
- 5432:5432
volumes:
- /home/shfirm/postgresql/data:/var/lib/postgresql/data
environment: