介绍数据库中的wal技术_探究WAL日志的Logical级别

487762b5b408b499a894439f274e9441.png

在使用PostgreSQL的逻辑复制时,需要将wal级别设置为logical,所以logical级别的wal日志一定时比replicate的wal日志多了一些数据来支持逻辑复制功能。我想很多用户或者DBA不清楚logical和replicate级别有何不同之处,这篇博客记录了logical级别相对于replicate级别多写入的wal数据,读者可以据此评估或分析改为logical级别后对wal日志膨胀的影响。

1. 逻辑复制的原理—Logical的使命

在这篇博客里详细介绍了逻辑复制的原理,这里再简单阐述一下,逻辑复制就是读取DML语句产生的wal日志,并将其解析为tuple的形式并发送到订阅端,订阅端接受到tuple之后将tuple做相应的更新处理。

比如说解析一条UPDATE语句产生的wal记录,会产生一个tuple-old和一个tuple-new,订阅端在目标表中查找与tuple-old相同的行,并把它更新为tuple-new。当然对于insert来说只有tuple-new,对于DELETE来说只有tuple-old.

所以逻辑复制的关键就是能不能从wal中解析出tuple-old和tuple-new,这也是logical级别的使命。

2. 不同Wal级别记录DML语句的方式

2.1 tuple-new的记录

FPI相关

INSERT,UPDATE或COPY语句会在数据页上插入新行。这个新行的数据一般会直接记录在这个语

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
opengauss是一种高性能且全功能的开源关系数据库,具有强大的增量同步功能。wal_level是opengauss一个参数,用于控制写入事务日志的详细程度,并决定了增量同步的级别。 在opengausswal_level参数有三个可选的值: 1. Minimal:最低级别日志写入级别,只会记录必要的信息,无法支持增量同步。该级别下不会记录SQL语句和数据修改细节,只保留一些必要的元数据和日志。这对于不需要增量同步的应用场景是够用的,但不能实现数据库的热备份和容灾。 2. Replica:在这个级别下,opengauss将会记录更多的信息,包括SQL语句和数据修改细节。这样就能够支持流复制,即将主数据库的所有修改操作同步到从数据库,实现数据库的备份与容灾。在这个级别下,增量同步的粒度较粗,可以保证数据的一致性。 3. Logical:这是最高级别日志写入级别,也是opengauss的默认级别。在这个级别下,opengauss会详细记录所有的数据修改操作,包括DDL和DML语句。这样可以实现更细粒度的增量同步,即只同步指定表或特定SQL操作。这对于一些高级别的应用场景非常有用,但增量同步的性能较低。 总的来说,opengauss的wal_level参数可以控制增量同步的级别,从而实现数据库的备份与容灾。根据需求的不同,可以选择合适的级别来平衡数据的一致性和性能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值