PostgreSQL 14同步异步流复制配置及备库application_name设置求助
PostgreSQL 14 新增异步备库及配置唯一application_name方案
一、新增异步模式备用服务器
1. 主库端准备(若已有复制用户可跳过)
- 登录主库执行SQL创建复制用户:
CREATE ROLE repl_user WITH REPLICATION LOGIN PASSWORD 'your_secure_password'; - 编辑主库的
/etc/postgresql/14/main/pg_hba.conf,添加新备库的访问规则:host replication repl_user 新备库IP地址/32 scram-sha-256 - 重载主库配置使变更生效:
sudo systemctl reload postgresql@14-main
2. 新备库端同步主库数据
在新备库服务器上执行pg_basebackup拉取主库全量数据:
pg_basebackup -h 主库IP地址 -U repl_user -D /var/lib/postgresql/14/main -P -X stream -R
参数说明:
-D指定备库数据目录(需确保目录为空且属主为postgres)-X stream启用流式备份,避免生成过大的WAL日志文件-R自动生成备库连接主库的配置参数
3. 配置异步复制关系
- 主库端保持原有
synchronous_standby_names配置(仅包含已有的同步备库),新备库不在此列表内会自动以异步模式运行 - 新备库端确认
/var/lib/postgresql/14/main/postgresql.conf中hot_standby = on已启用 - 启动新备库服务:
sudo systemctl start postgresql@14-main
二、为各备库配置唯一application_name
1. 修改现有备库的application_name
登录每个备库服务器,编辑/var/lib/postgresql/14/main/postgresql.auto.conf(PG14中备份生成的连接配置默认在此文件),找到primary_conninfo参数,添加自定义的application_name字段,示例:
primary_conninfo = 'host=主库IP地址 port=5432 user=repl_user password=your_secure_password application_name=standby_sync_01'
2. 新备库直接配置自定义application_name
完成pg_basebackup后,修改新备库的postgresql.auto.conf,在primary_conninfo中添加唯一的application_name,示例:
primary_conninfo = 'host=主库IP地址 port=5432 user=repl_user password=your_secure_password application_name=standby_async_01'
3. 使配置生效
修改完成后,重启对应备库的PostgreSQL服务:
sudo systemctl restart postgresql@14-main
验证配置
登录主库执行以下SQL,可查看所有备库的连接状态及application_name:
SELECT application_name, state, sync_state FROM pg_stat_replication;
内容的提问来源于stack exchange,提问作者Maly Mohsem Ahmed
相关产品推荐
相关产品推荐

