ubuntu pgadmin如何设置主从复制
导读:Ubuntu 上使用 pgAdmin 配置 PostgreSQL 主从复制 一 架构与准备 架构选择:使用 PostgreSQL 原生流复制(Streaming Replication),主库可写,备库只读,支持异步与同步两种模式。 版本...
Ubuntu 上使用 pgAdmin 配置 PostgreSQL 主从复制
一 架构与准备
- 架构选择:使用 PostgreSQL 原生流复制(Streaming Replication),主库可写,备库只读,支持异步与同步两种模式。
- 版本与目录:以 Ubuntu 上的 PostgreSQL 14/15 为例,常见路径为:数据目录 /var/lib/postgresql/14/main(或 /var/lib/postgresql/15/main),配置目录 /etc/postgresql/14/main(或 /etc/postgresql/15/main)。
- 网络与账号:确保主从服务器间 5432 端口互通;创建复制专用账号(如 replicator),并在主库授权复制权限。
二 主库配置(使用 pgAdmin 执行 SQL 与修改配置文件)
- 创建复制用户(pgAdmin:Servers → 主库 → Query Tool)
CREATE ROLE replicator WITH REPLICATION LOGIN ENCRYPTED PASSWORD 'StrongPass123'; - 修改 postgresql.conf(pgAdmin:Tools → Server Configuration → postgresql.conf)
- 建议参数(按实际调优):
listen_addresses = '*' wal_level = replica max_wal_senders = 10 wal_keep_size = 128MB # 老版本可用 wal_keep_segments archive_mode = on archive_command = 'cp %p /var/lib/postgresql/14/main/archive/%f'
- 建议参数(按实际调优):
- 配置 pg_hba.conf(pgAdmin:Tools → Server Configuration → pg_hba.conf)
- 允许备库复制连接(示例为单 IP,可按网段配置):
host replication replicator 192.168.22.215/32 md5
- 允许备库复制连接(示例为单 IP,可按网段配置):
- 重启主库使配置生效(系统终端执行)
sudo systemctl restart postgresql@14-main
说明:上述参数与步骤为 Ubuntu 上搭建流复制的通用做法,pgAdmin 主要用于执行 SQL 与编辑配置文件,服务重启需在操作系统层面完成。
三 从库初始化与配置(使用 pgAdmin 与系统终端配合)
- 清空备库数据目录并赋权(系统终端执行)
sudo systemctl stop postgresql@14-main sudo rm -rf /var/lib/postgresql/14/main/* sudo mkdir -p /var/lib/postgresql/14/main sudo chown postgres:postgres /var/lib/postgresql/14/main - 拉取基础备份(系统终端执行,使用复制用户)
export 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=stream - 配置备库为只读副本
- PostgreSQL 12+ 使用 standby.signal(系统终端执行)
sudo -u postgres touch /var/lib/postgresql/14/main/standby.signal - 写入主库连接信息(pgAdmin:Tools → Server Configuration → postgresql.conf)
primary_conninfo = 'host=192.168.22.131 port=5432 user=replicator password=StrongPass123' hot_standby = on hot_standby_feedback = on
- PostgreSQL 12+ 使用 standby.signal(系统终端执行)
- 启动备库(系统终端执行)
sudo systemctl start postgresql@14-main
说明:pg_basebackup 会创建备库数据目录并自动写入 primary_conninfo 到 postgresql.auto.conf;standby.signal 用于标识该实例为备库。
四 验证与监控
- 在主库查看复制状态(pgAdmin:Query Tool)
正常应看到从库 client_addr、状态 streaming,以及 sync_state 为 async(异步)或 sync(同步)。SELECT client_addr, state, sync_state FROM pg_stat_replication; - 查看复制槽(如配置了复制槽)
SELECT slot_name, plugin, slot_type, active FROM pg_replication_slots; - 备库只读验证(pgAdmin:Query Tool)
SHOW transaction_read_only; -- 应为 on
提示:若出现复制中断,检查主库 pg_hba.conf 授权、网络连通性、磁盘空间与 WAL 保留策略(如 wal_keep_size 或复制槽)。
五 可选 同步复制与切换
- 配置同步复制(在确认网络低延迟且可容忍性能影响时启用)
- 主库 postgresql.conf(pgAdmin:Server Configuration)
synchronous_standby_names = 'pgstandby1' - 备库创建复制槽并写入应用名(系统终端执行)
在备库 postgresql.auto.conf 中应看到由 pg_basebackup -R -C -S pgstandby1 自动写入的:sudo -u postgres psql -c "SELECT pg_create_physical_replication_slot('pgstandby1'); "
再次在主库查询 pg_stat_replication,应见到 sync_state = sync。primary_slot_name = 'pgstandby1' application_name = 'pgstandby1'
- 主库 postgresql.conf(pgAdmin:Server Configuration)
- 计划内切换与故障提升
- 备库提升为主库(系统终端执行)
sudo -u postgres pg_ctl promote -D /var/lib/postgresql/14/main - 原主库恢复后可作为新备库重新接入(重新执行基础备份或使用 pg_rewind 对齐后再启动)。
- 备库提升为主库(系统终端执行)
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu pgadmin如何设置主从复制
本文地址: https://pptw.com/jishu/774998.html
