An's Blog
收藏、分享 …
Toggle navigation
Home
Cesium
SuperMap
ArcGIS
MapboxGL
CentOS
GeoServer
Favorites
Archives
Tags
PostgreSQL 12配置主从服务器(Windows)
2023-02-17 13:53:42
37
0
0
admin
### **一、准备工作** PostgreSql在9.0之后引入了主从的流复制机制,所谓流复制,就是从服务器通过tcp流从主服务器中同步相应的数据。这样当主服务器数据丢失时从服务器中仍有备份。 与基于文件日志传送相比,流复制允许保持从服务器更新。 从服务器连接主服务器,其产生的流WAL记录到从服务器, 而不需要等待主服务器写完WAL文件。 PostgreSQL流复制默认是异步的。在主服务器上提交事务和从服务器上变化可见之间有一个小的延迟,这个延迟远小于基于文件日志传送,通常1秒能完成。如果主服务器突然崩溃,可能会有少量数据丢失。 同步复制必须等主服务器和从服务器都写完WAL后才能提交事务。这样在一定程度上会增加事务的响应时间。 配置同步复制仅需要一个额外的配置步骤: synchronous_standby_names必须设置为一个非空值。synchronous_commit也必须设置为on。 **注: 主从服务器所在节点的系统、环境等最好一致。PostgreSQL版本也最好一致,否则可能会有问题。** ### **二、安装部署** 本示例采用两台相同配置的服务器进行部署,PostgreSQL12安装详情请参考《安装配置PostgreSQL12》 | 角色 | IP地址 | 系统版本 | 数据库版本 | PostGIS版本 | | :----: | ---- | ---- | ---- | ---- | ---- | |主服务器 | 192.168.80.58 | Windows Server 2012 R2 | PostgreSQL 12.14 | PostGIS 3.0.1-3 | |从服务器 | 192.168.80.59 | Windows Server 2012 R2 | PostgreSQL 12.14 | PostGIS 3.0.1-3 | #### **1、配置主服务器(58)** **(1) 打开Navicat,进入数据库,创建一个普通数据库用户,只赋予登录和复制的权限,执行以下语句:** create role rsyncd login replication encrypted password 'thth@1212'; **(2) 修改pg_hba.conf文件,设置rsyncd用户可以从192.168.80.0对应网段进度流复制请求,在结尾添加如下配置:** host replication rsyncd 192.168.80.0/24 md5  > **备注:** > *A. 即使之前添加过所有用户不限制IP地址登录,也要添加此配置项,否则数据同步不好用;* > *B. IP地址可配置成 0.0.0.0/0 根据具体的业务场景配置* **(3) 修改postgresql.conf文件,直接修改以下参数:** wal_level = replica ## 热备模式 max_wal_senders = 10 ## 最多有10个流复制连接 wal_keep_segments = 64 ## 日志文件大小64MB wal_sender_timeout = 60s ## 流复制超时时间 max_connections = 500 ## 最大连接时间,必须要小于从库的配置 **(4) 退出保存后,重启数据库服务** **(5) Windows防火墙,高级设置$\rightarrow$入站规则$\rightarrow$新建规则$\rightarrow$端口$\rightarrow$,特定本地端口,填入5432** #### **2、配置从服务器(59)** 测试从服务器是否能够连接到主服务器,如果可以正常连接,说明主服务器配置正常,否则检查下主服务器的pg_hba.conf文件; **(1) 关闭Postgresql服务,删除本地库(data目录)【这步需要做"基础备份",首次使用建议做好备份工作】** 删除C:\Program Files\PostgreSQL\12\data文件及文件夹 **(2) 复制库,使用主服务器创建的备份用户进行操作,切记在从服务器中打开CMD,进入C:\Program Files\PostgreSQL\12\bin执行以下语句:** pg_basebackup -h 192.168.80.58 -p 5432 -U rsyncd -W -Fp -Xs -Pv -R -D "C:\Program Files\PostgreSQL\12\data" > **备注:** > -R参数会在data路径下生成standby.signal,这个是关键。 > data路径下: postgresql.auto.conf 文件会添加连接信息。  **(3) 修改data文件夹属性** 文件夹属性$\rightarrow$安全$\rightarrow$高级$\rightarrow$更改权限$\rightarrow$添加以下3个用户,设置完成控制。 NETWORK SERVICE 完全控制 users 完全控制 Administrators 完全控制 > **注意:** > *新建data文件夹权限与原data文件夹权限不一致,不修改权限会导致最后重启服务失败* **(4) 成功之后,就可以看到data目录中现有的文件一主节点服务器都是一样的,而且还有一个自动生成的standby.signal文件**  修改postgresql.conf配置文件 max_connections = 1000 ## 比主服务器大 hot_standby = on ## 备机只读取模式 max_standby_streaming_delay = 30s ## 数据流备份的最延迟时间 wal_receiver_status_interval = 10s ## 类似心跳 hot_standby_feedback = on ## 如果有错误的数据复制,是否向主服务器进行反馈 **(5) 测试配置文件是否正常** pg_ctl start -D “C:\Program Files\PostgreSQL\12\data” pg_ctl stop -D “C:\Program Files\PostgreSQL\12\data”  **(6) 重新启动从节点postgresql-x64-12服务。** ### **三、测试** 主库新建用户user,创建数据库test,从库进行查看。 ### **四、其他主机查询** 修改从库data/pg_hba.conf文件 注:建议提供从库user用户给其他主机查询,并添加允许IP规则,不建议添加0.0.0.0/0开放查询 host all all 192.168.x.x/0 md5 ### **五、参考资料** 1. [Postgresql12在windows7下主从数据库配置笔记](https://www.jianshu.com/p/21f25e239945) 2. [postgreSQL(Windows)主从环境部署](https://wenku.baidu.com/view/777839a7f21dc281e53a580216fc700aba6852c6.html?_wkts_=1676962857344&bdQuery=postgre12%20windows%E4%B8%BB%E4%BB%8E)
Pre:
ESXI中给虚拟机添加物理网卡
Next:
PostGIS扩展
0
likes
37
Weibo
Wechat
Tencent Weibo
QQ Zone
RenRen
Table of content