Search ALL -->
| PostgreSQL 设置流复制 ( 2025-09-28 ) + ( 865 ) | | / | 设置PostgreSQL流复制主要包括 主库配置(设置复制用户、postgresql.conf和pg_hba.conf参数)、创建备库备份(使用pg_basebackup)以及配置备库(创建recovery.conf并设置primary_conninfo)等步骤。关键参数包括wal_level、max_wal_senders、wal_keep_size,以及根据需要配置hot_standby(用于读写分离)和同步复制的synchronous_commit与synchronous_standby_names。 第一步:主库配置 创建复制用户:在主库上创建一个拥有复制权限的用户。 sql CREATE USER replicator WITH REPLICATION ENCRYPTED PASSWORD 'your_password'; 修改 pg_hba.conf:允许创建的复制用户从备库IP连接。 host replication replicator <slave_ip_address>/32 md5 修改 postgresql.conf: 设置 wal_level = replica 或 logical。 设置 max_wal_senders 为一个正整数,例如 5。 设置 wal_keep_size,为WAL日志保留足够的空间,例如 128MB。 如果需要同步复制,还需设置 synchronous_commit (例如,设为 on) 和 synchronous_standby_names。 重载配置:使参数生效。 sql SELECT pg_reload_conf(); 第二步:在备库上执行 pg_basebackup 生成主库备份:在备库上使用 pg_basebackup 命令从主库获取一个完整的数据库备份。 bash pg_basebackup -h <主库IP> -U replicator -D /path/to/standby_data -Fp -Xs -P -R -h 指定主库主机名或IP地址。 -U 指定连接主库的用户。 -D 指定备库数据目录。 -Fp 指定以纯文本方式打包。 -Xs 指定使用流复制,包括复制WAL文件。 -P 显示进度。 -R 会在备库数据目录自动生成 recovery.conf (PostgreSQL 12之前版本) 或在 postgresql.auto.conf 文件中写入 primary_conninfo 参数 (PostgreSQL 12之后版本),并创建standby.signal 文件以启动备库。 第三步:备库配置与启动 创建 standby.signal:如果 -R 参数未自动创建,请手动在备库数据目录创建此文件来启动备库作为流复制的从节点。 配置 recovery.conf (PostgreSQL 12及之前版本):如果使用旧版本,需要在备库数据目录创建 recovery.conf 文件,并配置 primary_conninfo。 primary_conninfo = 'host=<主库IP> port=5432 user=replicator password=your_password application_name=standby001' application_name 参数的值应与主库 postgresql.conf 中 synchronous_standby_names 的值一致(如果进行同步复制)。 启动备库服务。 验证复制状态:在主库执行查询,检查备库是否正在进行WAL日志流传输。 sql SELECT * FROM pg_stat_replication; sync_state 字段为 async 表示异步流复制,为 sync 表示同步流复制。 status 字段为 streaming 表示正常状态。 |
|