win下安装postgresql集群
# 前言
1 首先保证主节点的版本与从节点一致,并在pg9以上. 2 主节点可以不用从新安装,如果主节点已经服役了很长时间,你可以理解成该文档就是为了给该主节点添加从节点.
# 主节点操作
1 创建用于同步的用户.
CREATE ROLE replicator LOGIN REPLICATION ENCRYPTED PASSWORD 'replicator';
2.添加配置:data下的pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
host all all 0.0.0.0/0 md5 # 允许远程链接
host replication 'replicator' 121.40.20.28(从库ip)/32 md5 # 允许从库以复制用户链接
3 添加配置 直接在配置文件最后面追加以下配置,pg的配置文件相同的配置,后面的会覆盖前面的,不用担心
listen_addresses = '*' # 设置监听的ip,* 为允许所有
wal_level = replica # wal日志写入级别,要使用流复制,必须使用replica或更高级别
full_page_writes = on # 可以防止意外宕机后部分数据无法写入
synchronous_commit = on # 表示主节点的数据在从节点落盘了之后才会给客户端返回成功.
synchronous_standby_names = '*'
hot_standby = on # 打开热备
max_connections = 10001 # 从节点不可以小于主节点的最大连接数
wal_level = hot_standby
max_wal_senders = 10
wal_keep_segments = 250
superuser_reserved_connections= 10
min_wal_size =2048MB
max_wal_size= 4GB
wal_keep_segments= 64
listen_addresses = '*'
shared_buffers = 500MB
work_mem = 16MB
maintenance_work_mem = 128MB
wal_buffers = 1MB
random_page_cost = 2.0
xmloption = 'document'
max_parallel_maintenance_workers = 2
max_parallel_workers = 4
checkpoint_timeout = 30min
recovery_target_timeline=latest
recovery_target_action=promote
4 重启数据库
主数据库重启了之后,当前如果从节点没有启动的话,主数据库只能读,不能写.
因为主数据库他所有修改操作的落盘都是等从节点同步完了之后在进行操作的.
故给数据库添加从节点的操作,应该在晚上系统不繁忙的时候做.
# 从节点操作
拿着win-postgresql的安装包,正常安装数据库.一路next,如果主节点安装了,postgis,从节点也需要安装postgis.
假如你的postgresql安装在 C:\PostgreSQL\12 下
安装完成后进行如下操作.
1 同步主节点数据.
进入C:\PostgreSQL\12\bin 目录,进入cmd.执行
pg_basebackup -h 121.40.20.27(主ip) -p 5432 -U replicator(主库创建的复制用户) --password -X stream -Fp --progress -D C:\PostgreSQL\12\masterData(主库同步过来的数据保存到当前机器的目录) -R
执行的时候记得把括号的内容删除了,再往cmd控制台里面粘贴!!!!
他会让你输入密码,正常操作就行了.
2 处理主节点数据
等待同步完成, C:\PostgreSQL\12\masterData 这个文件夹里面就是主节点的所有数据.
然后你就停止当前的postgresql服务. 在注册表里面把postgresql的数据目录指向这个masterData目录.
此时如果启动成功了,就成功了,如果启动不成功,就去修改masterData的安全属性,设置成所有用户完全控制.
在服务器里面无法启动的话,可以去pg的bin目录启动
启动命令
"C:\PostgreSQL\12\bin\pg_ctl.exe" runservice -N "postgresql-x64-12" -D "C:\PostgreSQL\12\masterData" -w
观察启动日志即可.根据日志去排查启动不成功的问题.
3 经过以上蹉跎,你成功的把从节点启动成功了. 这个时候把从节点服务停止,检查从节点的配置参数.
pg标识自己为从节点主要是有两个文件.
1 standby.signal
2 postgresql.auto.conf
检查一下你的从节点有没有这两个文件.第二个文件一般都会有,里面保存的是主节点的节点信息
第一个文件没有你就手动创建一个,然后在里面加上一行
# 开启从节点备份
standby_mode = 'on'
再启动从节点.
4 检查从节点是否与主节点正在通信.
4.1主节点执行sql可查看从节点的连接情况
select pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_flush_lsn(), write_lsn)) delay_wal_size, * from pg_stat_replication;
4.2 查看当前节点是主还是从
select pg_is_in_recovery();
# 主从切换
其实主从的本质就是从节点去主节点不停的备份新的数据。
配置文件的系统其实就是两个:
standby.signal文件,这个是从节点开启备份 postgresql.auto.conf文件,这个从节点指定主节点的地址信息
切换就是原主追加上述配置,原从删除上述配追
1、主从节点全部stop停止
2、原从删除上述配置
3、原从新主启动服务
4、原主新从去原从新主备份一次数据:pg_basebackup操作,同时做解压,然后修改postgresql.conf文件以及standby.signal配置文件
5、启动原主新从查看信息
# 相关参考
如何查看 Windows 下 PostgreSQL 服务无法启动的错误信息 (opens new window)
使用postgresql15配置主从 (opens new window)
解决PostgreSQL其他机器无法访问的问题 (opens new window)
postgresql流复制相关参数 (opens new window)
主从切换相关切换 (opens new window)