Skip to main content

Deploy HA PostgreSQL Cluster

Pigsty

We recommend using automation tools such as Pigsty to deploy a production PostgreSQL cluster with HA.

Pigsty Introduction : https://doc.pigsty.cc/

Download

curl -L https://get.pigsty.cc/v2.5.1/pigsty-v2.5.1.tgz -o ~/pigsty.tgz 
curl -L https://get.pigsty.cc/v2.5.1/pigsty-pkg-v2.5.1.el7.x86_64.tgz -o /tmp/pkg.tgz

Install and Deploy

1、set up password-less login for all nodes including self

ssh-keygen -t rsa
ssh-copy-id root@hosts

2、initialize in all nodes

bash -c "$(curl -fsSL https://get.pigsty.cc/latest)"  
cd ~/pigsty
./bootstrap

3、modify ~/pigsty/pigsty.yml in the primary node as below

all:
children:
# infra cluster for proxy, monitor, alert, etc..
infra: { hosts: { 192.168.17.91: { infra_seq: 1 } } }
# etcd cluster for ha postgres
etcd: { hosts: { 192.168.17.91: { etcd_seq: 1 } }, vars: { etcd_cluster: etcd } }
# minio cluster, optional backup repo for pgbackrest
#minio: { hosts: { 192.168.17.91: { minio_seq: 1 } }, vars: { minio_cluster: minio } }
# postgres cluster 'pg-meta' with single primary instance
pg-test:
hosts:
192.168.17.91: { pg_seq: 1, pg_role: primary } # primary instance, leader of cluster
192.168.25.215: { pg_seq: 2, pg_role: replica } # replica instance, follower of leader
192.168.28.137: { pg_seq: 3, pg_role: replica, pg_offline_query: true } # replica with offline access
vars:
pg_cluster: pg-test # define pgsql cluster name
pg_users: [{ name: test , password: test , pgbouncer: true , roles: [ dbrole_admin ] }]
pg_databases: [{ name: test }]
pg_vip_enabled: true
pg_vip_address: 192.168.17.92/24
pg_vip_interface: eth0
node_tune: tiny
pg_conf: tiny.yml
node_crontab: # make a full backup on monday 1am, and an incremental backup during weekdays
- '00 01 * * 1 postgres /pg/bin/pg-backup full'
- '00 01 * * 2,3,4,5,6,7 postgres /pg/bin/pg-backup'
vars: # global parameters
version: v2.5.1 # pigsty version string
admin_ip: 192.168.17.91 # admin node ip address
region: china # upstream mirror region: default,china,europe
tip

pg_vip_address is needed

4、install

./install.yml 

Check

patronictl -c /etc/patroni/patroni.yml list
tip

Switch Command:patronictl -c /etc/patroni/patroni.yml switchover

Data Backup Command:/pg/bin/pg-backup full; Full and incremental backup tasks are configured in /etc/crontab

Monitor

Grafana

http://192.168.17.91:3000
tip

use your ip address