Ubuntu 上使用 pgAdmin 配置 PostgreSQL 主从复制

一 架构与准备
二 主库配置(使用 pgAdmin 执行 SQL 与修改配置文件)
CREATE ROLE replicator WITH REPLICATION LOGIN ENCRYPTED PASSWORD 'StrongPass123';listen_addresses = '*'wal_level = replicamax_wal_senders = 10wal_keep_size = 128MB# 老版本可用 wal_keep_segmentsarchive_mode = onarchive_command = 'cp %p /var/lib/postgresql/14/main/archive/%f'hostreplication replicator192.168.22.215/32 md5sudo systemctl restart postgresql@14-main说明:上述参数与步骤为 Ubuntu 上搭建流复制的通用做法,pgAdmin 主要用于执行 SQL 与编辑配置文件,服务重启需在操作系统层面完成。
三 从库初始化与配置(使用 pgAdmin 与系统终端配合)
sudo systemctl stop postgresql@14-mainsudo rm -rf /var/lib/postgresql/14/main/*sudo mkdir -p /var/lib/postgresql/14/mainsudo chown postgres:postgres /var/lib/postgresql/14/mainexport PGPASSWORD='StrongPass123'sudo -E -u postgres pg_basebackup -h 192.168.22.131 -U replicator -D /var/lib/postgresql/14/main -P -w -v --wal-method=streamsudo -u postgres touch /var/lib/postgresql/14/main/standby.signalprimary_conninfo = 'host=192.168.22.131 port=5432 user=replicator password=StrongPass123'hot_standby = onhot_standby_feedback = onsudo systemctl start postgresql@14-main说明:pg_basebackup 会创建备库数据目录并自动写入 primary_conninfo 到 postgresql.auto.conf;standby.signal 用于标识该实例为备库。
四 验证与监控
SELECT client_addr, state, sync_stateFROM pg_stat_replication;正常应看到从库 client_addr、状态 streaming,以及 sync_state 为 async(异步)或 sync(同步)。SELECT slot_name, plugin, slot_type, active FROM pg_replication_slots;SHOW transaction_read_only;-- 应为 on提示:若出现复制中断,检查主库 pg_hba.conf 授权、网络连通性、磁盘空间与 WAL 保留策略(如 wal_keep_size 或复制槽)。
五 可选 同步复制与切换
synchronous_standby_names = 'pgstandby1'sudo -u postgres psql -c "SELECT pg_create_physical_replication_slot('pgstandby1');"在备库 postgresql.auto.conf 中应看到由 pg_basebackup -R -C -S pgstandby1 自动写入的:primary_slot_name = 'pgstandby1'application_name = 'pgstandby1'再次在主库查询 pg_stat_replication,应见到 sync_state = sync。sudo -u postgres pg_ctl promote -D /var/lib/postgresql/14/main