window下postgresql14做主从复制
-
安装主库
-
安装从库,然后停止服务,删除从库的数据文件夹下面的所有文件,默认为安装目录下的 data 文件夹。
-
修改主库的配置文件postgresql.conf
listen_addresses = '*'
wal_level = replica # 设置流复制模式至少设置为replica
max_wal_senders= 10 # 最大WAL发送进程数,此数量需大于等于从库个数且比max_connections小。
max_connections = 1000 #最大连接数,从库的max_connections必须要大于主库的
- 主库创建用户,用于复制
CREATE ROLE replica login replication encrypted password '123';
- 修改主库pg_hba.conf
host replication replica 192.168.10.222/24 md5
-
主库重启
-
从库主机上执行一下命令(基础备份数据)
pg_basebackup -D "C:\Program Files\PostgreSQL\14\data" -h 192.168.1.134 -p 5569 -U replica -X stream -P -R -v
-h 指定连接的数据库的主机名或IP地址,这里就是主库的ip
-U 指定连接的用户名,此处是我们刚才创建的专门负责流复制的repl用户
-F 指定生成备份的数据格式,支持p(plain原样输出)或者t(tar格式输出)
-X 表示备份开始后,启动另一个流复制连接从主库接收WAL日志,有 f(fetch)和s (stream)两种方式,建议使用s方式
-P 表示显示数据文件、表空间传输的近似百分比 允许在备份过程中实时的打印备份的进度
-v 表示启用verbose模式,命令执行过程中会打印各阶段日志,建议启用
-R 表示会在备份结束后自动生成recovery.conf文件,这样也就避免了手动创建(pg12之后已经没有这个文件,recovery.conf文件里的内容已经填充到了postgresql.auto.conf)
-D 指定把备份写到哪个目录,这里尤其要注意一点就是做基础备份之前从库的数据目录(/data/postgresql/data)目录需要手动清空
-l 表示指定个备份的标识,运行命令后可以看到进度提示
- 从库创建或者修改文件 standby.signal 文件,声明是从库.
standby_mode = on
-
启动从库
-
主库使用SQL查询
select pid, usesysid, usename, client_addr, state, sync_state from pg_stat_replication;