Postgresql - Streaming Replication - 主备SR级别

在Oracle DG中,有三种保护级别,分别为最大保护,最高可用,最高性能。

最大保护:重做日志在至少一个物理从库数据库后,主库的事务才能够提交。如果从库关闭(down了),主库会自动关闭,防止无保护的数据出现。

最高可用:类似于最大保护重做日志在至少一个物理从库数据库后,主库的事务才能够提交。但是当主库找不到合适的从库写入时,主库不会关闭,而是临时降低到“最大性能模式”模式,直到问题得到处理。

最大性能:保证主库运行过程中不受从库的影响,主库事务正常提交,不因从库的任何问题影响到主库的运行。

 

在PG中,同样有多个级别。

通过synchronous_commit参数控制。搭配着synchronous_standby_names参数使用。

on, remote_apply, remote_write, local, and off.

先说synchronous_commit = off,意思是成功提交与真正保证事务安全以防服务器崩溃之间可能存在延迟。(最大延迟是WaldWrror延迟的三倍)。将此参数设置为off不会造成数据库不一致的任何风险:操作系统或数据库崩溃可能导致一些最近被指控提交的事务丢失,但是数据库状态将和那些事务被完全中止时一样。

当synchronous_standby_names为空的时候。设置为on, remote_apply, remote_write, local 几种模式都是相同的,代表事务提交仅等待刷到本地磁盘。(transaction commits only wait for local flush to disk)。

 

下面我们说当设置 synchronous_standby_names为不为空,remote_apply, remote_write, local值得意思

remote_apply:保护级别最高,WAL要写入并应用到synchronous_standby_names 中 remote的数据库中,返回成功,本地才能成功。当关闭从库,本地事务等待,不会关闭,但不再执行其他命令。

remote_write:保护级别中等,WAL要写入到synchronous_standby_names 中 remote的系统中,但不应用,返回成功,本地才会提交。

local:使提交等待本地刷新到磁盘,但不等待复制。

 

 

所以当数据要求很高的保护模式情况下,至少使用remote_write模式,至少保证了WAL已经写入到远端的机器上。如果更高的保护模式,那么使用remote_apply是更好的选择。当然,性能会受一定的影响。但是跟数据的完整性上比,性能又算什么呢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值