PostgreSQL配置延迟备库

1、 延迟备库

延迟备库是指可以配置备库和主库的延迟时间,这样备库始终和主库保持指定时间的延迟,例如设置备库和主库之间的延迟时间为1小时 ,理论上备库和主库的延时始终保持在一小时左右;

1.1 延迟备库的意义

PostgreSQL流复制环境下,如果主库不是很忙并且备库硬件资源充分,通常备库和主库的延时能在毫秒级别。如果主库上由于误操作删除了表数据或删除表时,从库上的这些数据也瞬间被删除了,这时,即使对数据库做了备份,要恢复到删除前的状态也是有难度的,比如,如果使用pg_ dump 做了逻辑备份,通常是按天、按周、按月进行逻辑备份等,也只能恢复到最近逻辑备份时刻的数据,除非是做了基准备份并且开了归档,这时可以利用全量备份和归档恢复到删除前的状态,从而找回被删除的数据,当然这种方法维护成本较高。在这一场景下,延迟的备库在一定程度上缓解了这一问题,因为在设置的延迟时间范围内,备库上的数据还没被删除,可以在备库上找回这些数据,这节将详细介绍延迟备库的配置和使用,当然,如果超过了已设置的主备延迟时间才发现主库上的数据被删除了,这些数据在备库也找不回来了。

1.2 延迟备库部署

只需要配置recovery_min_apply_delay参数,此参数位于postgresql.auto.conf文件

此参数单位默认为毫秒,目前支持的时间单位如下:

ms(毫秒,默认单位)

s(秒)

min(分钟)

h(小时)

d(天)

大家知道流复制主库提交事务后,主库会将此事务的WAL日志流发送给备库,备库接收WAL日志流后进行重做,这个操作通常瞬间完成,延迟的备库实际上是设置备库延迟重做WAL的时间,而备库依然及时接收主库发送的WAL日志流,只是不是一接收到WAL后就立即重做,而是等待设置的时间再重做,假如设置此参数为一分钟,流复制备库接收到主库发送WAL日志流后需等待一分钟才重做。

注意:recovery_ min_ apply_ delay 参数设置值过大会使备库的pg_ wal日志因保留过多的WAL日志文件而占用较大硬盘空间,因此设置此参数时需要考虑pg _wal目录可用空间大小,当然,如果设置得太小,留给恢复的时间窗口太短可能起不到数据恢复的用途。

1.3 recovery_min_apply_delay 参数对同步复制的影响

同步复制 synchronous_commit 参数需配置成 on 或 remote_apply,on 选项意思是主库上提交的事务会等待备库接收WAL日志流并写入WAL日志文件后在向客户端返回成功,remote_apply 更近一步,主库上提交事务后会等待备库接收WAL日志流并写入WAL日志文件同时应用完成WAL日志流后在向客户端返回成功;

对于延迟备库场景,synchronous_ commit 配置为on时和异步流复制一致,synchronous. commit配置为 remote_ apply 时,主库上所有的写操作将被阻塞一定时间,被阻塞的时间正好是同步备库recovery_ min_ apply_ delay参数配置值,因此synchronous_commit参数配置为remote_apply的同步流复制环境应避免使用延迟备库。

recovery_min_apply_delay

主:

 

备:

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: FlinkCDC 是 Apache Flink 的一个模块,用于实时将数据从数据库的主库复制到 Flink 程序中进行处理。它目前支持 MySQL 和 Oracle 数据库,对于 PostgreSQL 数据库不支持。 ### 回答2: Flink CDC(Change Data Capture)是一种用于实时数据流处理的开源技术,用于捕获数据源的变化并以事件流的形式传递给消费者。关于Flink CDC是否支持PostgreSQL备库的问题,需要分两个方面来看。 首先,Flink CDC本质上是针对数据库的变化进行捕获和处理的工具,主要支持的是主动推送模式,即从数据库主库直接获取变化数据并传递给下游应用。它的核心实现原理是基于数据库的Binlog(二进制日志)的解析,而PostgreSQL并没有像MySQL或者Oracle那样的Binlog功能,因此,Flink CDC在原生状态下并不直接支持PostgreSQL备库。 不过,如果你希望实现基于Flink CDC的实时数据流处理,并且数据源是PostgreSQL数据库,仍然可以通过一些额外的配置和技术手段来实现。比如,可以使用PostgreSQL的逻辑复制功能,定期把主库的数据同步到备库,然后在备库上安装Flink CDC并配置相应的数据捕获和处理逻辑,来实现实时数据流处理。这种方式虽然需要额外的工作和配置,但可以在一定程度上满足需求。 综上所述,Flink CDC原生状态下并不直接支持PostgreSQL备库,但可以借助额外的配置和技术手段来实现基于Flink CDC的实时数据流处理。使用Flink CDC处理PostgreSQL备库需要根据具体需求进行具体分析和实施。 ### 回答3: Flink CDC(Change Data Capture)是Flink的一个功能模块,可以将源数据库中的数据更改(增删改)操作通过日志方式捕获,并以数据流的形式输出给其他系统进行实时处理。 关于Flink CDC是否支持postgresql备库,目前还没有直接的官方支持。Flink CDC官方目前只提供了对MySQL和Oracle数据库的支持。 不过,可以通过一些间接的方式来实现对postgresql备库的支持。例如,可以采用自定义开发的方式,编写Flink的Source Function,通过订阅postgresql备库的事务日志,以监听的方式将数据更改操作捕获到,并发送至Flink进行处理。 具体来说,你可以编写一个自定义的Source Function,在该函数中使用类似pg_replication_slot、pg_logical_slot等postgres的逻辑复制机制,来获取postgresql备库的变更操作日志,再将这些变更操作日志解析为Flink能够处理的数据流并发送至Flink进行处理。 这样一来,虽然Flink CDC并没有直接提供对postgresql备库的支持,但可以通过自定义开发来实现postgresql备库和Flink之间的联系,以实现数据的实时处理。 总之,虽然Flink CDC目前官方没有提供对postgresql备库的支持,但可以通过自定义开发来实现对postgresql备库的支持,使得Flink能够进行实时处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值