Postgresql主从集群流复制从无到有搭建(windows架构)

1.总体架构:

4台windows服务器架构图

2.环境:

1、 WindowsServier (windows10)
2、 postgres12.4
3、 AlwaysUp windows流氓进程开门狗程序

3.创建流复制环境搭建:

1、 安装数据库(这个就不做都演示了相信大家都会的)

CSDN图标

2、复制Data目录创建多个启动跨平台目录
提醒: 如果是异步架构linux与windows,区域编码要设置成C(不使用区域编码使用postgres里面默认的什么货币格式化,字符串排序等等),坏处:所有输出(日志啥的等等)全是英文,查询时字符串排序顺序不能从上往下,其实用C个人觉得还好可以让postgres查询性能提升。
只演示:pg3(服务器ip映射的名字)
我这边是四台服务器,每台服务器有三个从库 (这里只演示其中一套会一套其余的都一样的)

在这里插入图片描述

4.正式开始主从备份配置:

数据库结构:
pg1:5432
pg2:5434
pg3:5433
pg4:5435

1.主机pg3配置

1、 pg3主库设置 启动数据库并建立同步用户(这个用户以后机器跟机器间做同步用的:流复制用户)
 create role sync login replication encrypted password '123456';

2、 配置pg3主机ip映射(主从机都是一样的)
C:\Windows\System32\drivers\etc\hosts

在这里插入图片描述


3、 配置pg3主库流复制允许那几个ip连接(备库)
提醒: 当前服务器是pg3,对应配置我需要让3台从机可以连接pg3,一主三从

文件: pg_hba.conf

在这里插入图片描述


4、 配置pg3主库配置文件
文件: postgresql.conf
#监听的地址(pg_hba里面配的)
listen_addresses = '*'
#流复制级别
wal_level = replica
#允许几个备库连接
max_wal_senders=20
#设置Wal段文件,64兆字节(默认16兆)
wal_keep_segments =64

#归档配置咯
archive_mode = on
archive_command = 'copy D:\\pg\\JituanData\\%p D:\\pg\\JituanWal\\%f'	
restore_command = 'copy D:\\pg\\JituanWal\\%f D:\\pg\\JituanData\\%p'	
recovery_target_timeline = 'latest'

#往备库里写数据配置
full_page_writes = on
wal_log_hints = on

#实时同步你用异步流也行
synchronous_standby_names = 'FIRST 2 (standby_pg1,standby_pg2,standby_pg4)'	
synchronous_commit = on  --默认值,可以设置为remote_write,对主库性能有利
5、 重启主库(主库打完收工)
.\pg_ctl -D  D:\pg\JituanData -l C:\Users\Administrator\Desktop\postges集团主库 start

在这里插入图片描述

2.从机p1配置

1、pg1备库基础配置
复制主库数据到备库数据需要,主从数据需要做同步
pg_basebackup -h pg3 -p 5433 -U sync -R -F p -P -D D:\pg\JituanData
配置pg1从库配置文件(本身就是从主库复制来的不需要改多少东西)
这几个配的跟主库一致,其实里面大多是主库的配置,但是从生产环境下来说就应该这么配
(方便以后主从切换直接切,只需要改少量配置文件就行) 

listen_addresses = '*'
wal_level = replica
max_wal_senders=20
wal_keep_segments =64

archive_mode = on
archive_command = 'copy D:\\pg\\JituanData\\%p D:\\pg\\JituanWal\\%f'	
restore_command = 'copy D:\\pg\\JituanWal\\%f D:\\pg\\JituanData\\%p'
recovery_target_timeline = 'latest'

full_page_writes = on
wal_log_hints = on

备库需要配的里面只有一个需要改一下向主机反馈 其余三个默认就是这样
hot_standby = on   						    #在备份的同时允许查询,默认值	
max_standby_streaming_delay = 30s			#可选,流复制最大延迟		
wal_receiver_status_interval = 10s			#可选,从向主报告状态的最大间隔时间	
hot_standby_feedback = on					#可选,查询冲突时向主反馈		

2、配置pg1备库 pg_hba.conf

在这里插入图片描述

3、创建pg1备库文件standby.signal

第一行参数:连接到主库信息
第二行参数:将来变成主库时需要用到的参数。
第三行参数:变成主库后需要清空的归档日志。
第四行参数:把备库变成read-only transaction模式,不允许进行写操作。允许查询。这一点非常好。

注意:application_name是备库实时同步的名称我用的是实时同步需要配

primary_conninfo = 'host=pg3 application_name=standby_pg1 port=5433  user=sync password=123456 options=''-c wal_sender_timeout=5000'''
restore_command = 'copy D:\\pg\\JituanWal\\%f D:\\pg\\JituanData\\%p'
archive_cleanup_command = 'D:\\pg\\bin\\pg_archivecleanup D:\\pg\\JituanWal %r'
standby_mode = on

在这里插入图片描述

4、启动备库

.\pg_ctl -D  D:\pg\JituanData -l C:\Users\Administrator\Desktop\postges集团主库 start
5、postgresql.auto.conf会产生一句连接主机命令,把命令中的这个application_name也改一下
application_name=standby_pg1

在这里插入图片描述

3.从机p2配置

1、pg2备库基础配置
复制主库数据到备库数据需要,主从数据需要做同步
pg_basebackup -h pg3 -p 5433 -U sync -R -F p -P -D D:\pg\JituanData
配置pg2从库配置文件(本身就是从主库复制来的不需要改多少东西)
这几个配的跟主库一致,其实里面大多是主库的配置,但是从生产环境下来说就应该这么配
(方便以后主从切换直接切,只需要改少量配置文件就行) 

listen_addresses = '*'
wal_level = replica
max_wal_senders=20
wal_keep_segments =64

archive_mode = on
archive_command = 'copy D:\\pg\\JituanData\\%p D:\\pg\\JituanWal\\%f'	
restore_command = 'copy D:\\pg\\JituanWal\\%f D:\\pg\\JituanData\\%p'
recovery_target_timeline = 'latest'

full_page_writes = on
wal_log_hints = on

备库需要配的里面只有一个需要改一下向主机反馈 其余三个默认就是这样
hot_standby = on   						    #在备份的同时允许查询,默认值	
max_standby_streaming_delay = 30s			#可选,流复制最大延迟		
wal_receiver_status_interval = 10s			#可选,从向主报告状态的最大间隔时间	
hot_standby_feedback = on					#可选,查询冲突时向主反馈		

2、配置pg2备库 pg_hba.conf (这其实都是一样的我就拿pg1的图片了)

在这里插入图片描述

3、创建pg2备库文件standby.signal

第一行参数:连接到主库信息
第二行参数:将来变成主库时需要用到的参数。
第三行参数:变成主库后需要清空的归档日志。
第四行参数:把备库变成read-only transaction模式,不允许进行写操作。允许查询。这一点非常好。

注意:application_name是备库实时同步的名称我用的是实时同步需要配

primary_conninfo = 'host=pg3 application_name=standby_pg2 port=5433  user=sync password=123456 options=''-c wal_sender_timeout=5000'''
restore_command = 'copy D:\\pg\\JituanWal\\%f D:\\pg\\JituanData\\%p'
archive_cleanup_command = 'D:\\pg\\bin\\pg_archivecleanup D:\\pg\\JituanWal %r'
standby_mode = on

在这里插入图片描述

4、启动备库

.\pg_ctl -D  D:\pg\JituanData -l C:\Users\Administrator\Desktop\postges集团主库 start
5、postgresql.auto.conf会产生一句连接主机命令,把命令中的这个application_name也改一下
application_name=standby_pg2  图片就不演示了都是一样的

3.从机p4配置

1、pg4备库基础配置
复制主库数据到备库数据需要,主从数据需要做同步
pg_basebackup -h pg3 -p 5433 -U sync -R -F p -P -D D:\pg\JituanData
配置pg4从库配置文件(本身就是从主库复制来的不需要改多少东西)
这几个配的跟主库一致,其实里面大多是主库的配置,但是从生产环境下来说就应该这么配
(方便以后主从切换直接切,只需要改少量配置文件就行) 

listen_addresses = '*'
wal_level = replica
max_wal_senders=20
wal_keep_segments =64

archive_mode = on
archive_command = 'copy D:\\pg\\JituanData\\%p D:\\pg\\JituanWal\\%f'	
restore_command = 'copy D:\\pg\\JituanWal\\%f D:\\pg\\JituanData\\%p'
recovery_target_timeline = 'latest'

full_page_writes = on
wal_log_hints = on

备库需要配的里面只有一个需要改一下向主机反馈 其余三个默认就是这样
hot_standby = on   						    #在备份的同时允许查询,默认值	
max_standby_streaming_delay = 30s			#可选,流复制最大延迟		
wal_receiver_status_interval = 10s			#可选,从向主报告状态的最大间隔时间	
hot_standby_feedback = on					#可选,查询冲突时向主反馈		

2、配置pg4备库 pg_hba.conf (这其实都是一样的我就拿pg1的图片了)

在这里插入图片描述

3、创建pg4备库文件standby.signal

第一行参数:连接到主库信息
第二行参数:将来变成主库时需要用到的参数。
第三行参数:变成主库后需要清空的归档日志。
第四行参数:把备库变成read-only transaction模式,不允许进行写操作。允许查询。这一点非常好。

注意:application_name是备库实时同步的名称我用的是实时同步需要配

primary_conninfo = 'host=pg3 application_name=standby_pg4 port=5433  user=sync password=123456 options=''-c wal_sender_timeout=5000'''
restore_command = 'copy D:\\pg\\JituanWal\\%f D:\\pg\\JituanData\\%p'
archive_cleanup_command = 'D:\\pg\\bin\\pg_archivecleanup D:\\pg\\JituanWal %r'
standby_mode = on

在这里插入图片描述

4、启动备库

.\pg_ctl -D  D:\pg\JituanData -l C:\Users\Administrator\Desktop\postges集团主库 start
5、postgresql.auto.conf会产生一句连接主机命令,把命令中的这个application_name也改一下
application_name=standby_pg4  图片就不演示了都是一样的

验证测试

查看当前备库状态:
t :true,意味着处于recovery状态
f :false,意味着处于正常服务状态
select pg_is_in_recovery();  
查询当前主库用几个备库
select * from pg_stat_replication;

在这里插入图片描述

配置Windows看门狗流氓进程

1、安装AlwaysUp 安装过程我就不说明咯 直接开配
启动程序 D:\pg\bin\pg_ctl.exe
启动参数 -D D:\pg\JituanData -l D:\pg\log\postgres集团备库.log restart
启动目录 D:\pg\bin

在这里插入图片描述

2、除了这个外呢还要配一个自动登录执行程序
意思呢,就是我电脑重启了一般电脑都有用户名密码要先登录进去才能自启动程序
包括注销也不会销毁程序:详细可以去看官网

1.配置用户名密码 注意 Launch the application without admin rights 不要勾选
这个是不以管理员身份允许勾选了你就没有创建日志我就的权限了

2.最后一个可勾可不勾(不显示程序最小化托盘)
	当用户登录时,如果应用程序有托盘图标,不要显示应用程序的indos图标

在这里插入图片描述

异步与实时同步区别

1.上面的配置是异步同步,对于主库的性能影响是最小的,但是会丢数据,我们可以把复制配置成实时同步。

2.当设置同步复制时,尽量记住以下几点:
• 最小化延迟
• 确保您有冗余延迟
• 同步复制比异步复制代价更高
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
PostgreSQL 中的主从复制和归档是实现高可用性和数据备份的两种常见方式。以下是如何配置 PostgreSQL 主从复制和归档的简要说明: 1. 主从复制配置: 首先在主服务器上进行如下配置: - 修改 `postgresql.conf` 文件,启用 WAL 日志记录和复制,并指定要复制的 WAL 日志级别: ``` wal_level = replica max_wal_senders = 5 wal_keep_segments = 32 ``` - 修改 `pg_hba.conf` 文件,允许从服务器连接主服务器: ``` host replication replica 192.168.1.0/24 md5 ``` 然后在从服务器上进行如下配置: - 创建从服务器上用于复制主服务器上数据库的用户: ``` CREATE USER replica WITH REPLICATION LOGIN PASSWORD 'password'; ``` - 在 `recovery.conf` 文件中指定从服务器要连接的主服务器信息和要恢复的时间点: ``` standby_mode = on primary_conninfo = 'host=192.168.1.100 port=5432 user=replica password=password' recovery_target_timeline = 'latest' ``` 2. 归档配置: - 修改 `postgresql.conf` 文件,启用归档并指定归档目录: ``` archive_mode = on archive_command = 'cp %p /mnt/archive/%f' ``` 其中 `%p` 表示要归档的 WAL 日志路径,`%f` 表示要归档的文件名。 - 确认归档目录已经创建,并由 PostgreSQL 用户可以写入。 - 在从服务器上进行如下配置: ``` restore_command = 'cp /mnt/archive/%f %p' ``` 其中 `%p` 表示要恢复的 WAL 日志路径,`%f` 表示要恢复的文件名。 以上是 PostgreSQL 主从复制和归档的简要配置说明。需要注意的是,具体的配置可能会因为环境和需求的不同而有所不同,建议在实际应用中根据需要进行相应的调整。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值