-- 安装PostgreSQL的流复制扩展
CREATE EXTENSION IF NOT EXISTS pg_replication SLOT my_replication_slot_name LATERAL VIEW pg_create_physical_replication_slot(slot_name) AS slot_name;
-- 为复制角色授权
GRANT REPLICATION SLAVE ON DATABASE my_database TO my_replication_user;
-- 配置主服务器(primary server)
-- 修改postgresql.conf
wal_level = replica
max_wal_senders = 3 -- 根据需要设置,足够支持并发复制的数量
max_replication_slots = 3 -- 根据需要设置,足够支持并发复制的数量
-- 在master的pg_hba.conf中添加复制用户的认证信息
host replication my_replication_user dbname=my_database host=replica_ip/32 scram-sha-256
-- 重启主服务器的PostgreSQL服务
-- 配置从服务器(standby server)
-- 修改postgresql.conf
primary_conninfo = 'user=my_replication_user password=my_replication_password host=primary_ip port=5432 sslmode=prefer sslcompression=1'
primary_slot_name = 'my_replication_slot_name'
-- 在slave的pg_hba.conf中添加复制用户的认证信息
host replication my_replication_user dbname=my_database host=primary_ip/32 scram-sha-256
-- 初始化流复制
-- 如果是首次设置,使用pg_basebackup进行基础备份和初始化
pg_basebackup -h primary_ip -U my_replication_user -D /path/to/data/directory -X stream -P
-- 在从服务器上,启动PostgreSQL服务并启动复制进程
pg_ctl -D /path/to/data/directory -l logfile start
-- 检查复制状态
SELECT * FROM pg_stat_replication;
这个代码实例提供了在PostgreSQL中设置异步流复制的基本步骤。需要注意的是,这只是一个简化的示例,实际配置时需要考虑更多的因素,如网络环境、角色权限、配置参数等。