在Debian上设计PostgreSQL的高可用架构,可以采用多种方法。以下是一个基本的设计方案,使用了Patroni和Keepalived来实现高可用性。
确保你有一个运行Debian的系统,并且已经更新到最新的稳定版本。
sudo apt update
sudo apt upgrade -y
在所有节点上安装PostgreSQL。
sudo apt install -y postgresql postgresql-contrib
在主节点上初始化数据库集群。
sudo systemctl start postgresql
sudo -u postgres psql -c "CREATE USER replicator WITH REPLICATION PASSWORD 'your_password' LOGIN;"
sudo -u postgres psql -c "ALTER USER replicator CREATEDB;"
在所有节点上编辑/etc/postgresql/<version>/main/pg_hba.conf
文件,添加复制用户的认证信息。
host replication replicator <replica_ip>/32 md5
在主节点上编辑/etc/postgresql/<version>/main/postgresql.conf
文件,启用归档和流复制。
wal_level = replica
max_wal_senders = 10
wal_keep_segments = 64
hot_standby = on
在所有节点上安装Patroni。
sudo apt install -y python3-pip
sudo pip3 install patroni[etcd]
创建一个Patroni配置文件/etc/patroni.yml
,并确保所有节点上的配置一致。
scope: postgres
name: pg1
namespace: /db/
restapi:
listen: 0.0.0.0:8008
connect_address: <master_ip>
etcd:
host: <etcd_ip>
port: 2379
scheme: http
bootstrap:
dcs:
ttl: 30
loop_wait: 10
retry_timeout: 10
maximum_lag_on_failover: 1048576
postgresql:
use_pg_rewind: true
use_slots: true
parameters:
wal_level: replica
max_wal_senders: 10
wal_keep_segments: 64
hot_standby: on
replication:
slot_name: pg1_replica_slot
listen: 0.0.0.0:5432
connect_address: <replica_ip>
authentication:
username: replicator
password: your_password
restore_command: 'cp /var/lib/postgresql/pg_wal/archive/%f %p'
backup_command: 'rsync -a --delete /var/lib/postgresql/pg_wal/archive/ <backup_location>/wal_archive/'
primary_role_timeout: 30s
failover_timeout: 60s
check_reachability: true
skip_if_not_primary: true
recovery_target_timeline: latest
recovery_target_xid: 0
recovery_target_inclusive: false
recovery_target_lsn: 0/0
recovery_target_time: '2023-01-01 00:00:00'
recovery_target_name: 'latest'
recovery_target_priority: 100
recovery_target_state: 'streaming'
recovery_target_action: 'promote'
recovery_target_description: 'Latest checkpoint'
recovery_target_progress: 0
recovery_target_progress_description: 'Progress to latest checkpoint'
recovery_target_progress_estimate: 0
recovery_target_progress_estimate_description: 'Estimated progress to latest checkpoint'
recovery_target_progress_estimate_unit: 'seconds'
recovery_target_progress_estimate_unit_description: 'Seconds'
recovery_target_progress_estimate_unit_multiplier: 1
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress estimate'
recovery_target_progress_estimate_unit_multiplier_description: 'Multiplier for progress