点击上方"蓝字"
关注我们,享更多干货!
前言
主备流复制,是PostgreSQL最常用、最简单的一种高可用、读写分离的形式,类似于Oracle的ADG,主库用于读写,备库可以只读。
PostgreSQL流复制,有两种方式,分别是异步流复制和同步流复制。
异步流复制模式中,当备库出现异常,主库可以正常的进行读写;
同步流复制模式中,当备库出现异常,主库则可能会hang住(DML、DDL)。
这两天根据需求,我需要搭建一套同步流复制库,但是在过程中遇到了一些小问题,所以记录下来,作为备忘以及指导,帮助大家避坑。
一、基本环境
本次搭建,我的PostgreSQL基本环境如下:
PostgreSQL版本为12.5;
操作系统为CentOS 7.6;
Server: 192.168.18.181:18801
Slave: 192.168.18.182:18802
二、同步流复制搭建
我们知道,搭建PostgreSQL的流复制核心步骤非常简单,只需要2-3步:
1. 对源端数据库进行基础备份;
2. 将基础备份拷贝到目标端;
3. 配置备库参数,并启动备库
那么在基础备份中,我们直接在目标端,通过pg_basebackup工具对源端数据库进行基础备份并将数据目录直接放在目标端的/pgdata中:
pg_basebackup -h 192.168.18.181 -p 18801 -U repl -l pg_basebackup_`date +%Y%m%d%H%M%S` -Fp -X fetch -P -v -R -D /pgdata
在PostgreSQL 12中,已经没有recovery.conf文件了,而是用standby.signa