操作Cassandra(6)-变更数据捕获(CDC)

变更数据捕获

概述

变更数据捕获(CDC)提供了一种机制来标记特定的表用于存档,一旦数据量达到配置的刷新和未刷新的CDC日志的大小之和,就拒绝对这些表的写入。然后将任何包含启用表(启用CDC)数据的CommitLogSegments移动到cassandra.yaml中指定的目录丢弃。在yaml中指定允许的总磁盘空间的阈值,此时新分配的CommitLogSegments将不允许写入CDC数据,直到消费者解析并从目标存档目录中删除数据。

Configuration

启用或禁用CDC

CDC通过表的cdc属性启用或禁用,例如:

CREATE TABLE foo (a int, b text, PRIMARY KEY(a)) WITH cdc=true;

ALTER TABLE foo WITH cdc=true;

ALTER TABLE foo WITH cdc=false;

assandra.yaml参数

以下cassandra.yaml中的参数可用于CDC:

cdc_enabled (默认: false)
在节点范围内启用或禁用CDC操作。
cdc_raw_directory (默认: $CASSANDRA_HOME/data/cdc_raw)
刷新所有相应的memtables后被移动的CommitLogSegments的目标地址。
cdc_free_space_in_mb: (默认: 4096和1/8卷空间两者中较小的知)
计算被允许的CDC和cdc_raw_directory目录中所有刷新的CDC中的所有活动的CommitLogSegments的总和。
cdc_free_space_check_interval_ms (默认: 250)
限制重新计算cdc_raw_directory所占空间的频率,避免不必要地烧写CPU周期。默认值是每秒检查4次。

阅读CommitLogSegments

这个实现包括一个CommitLogReplayer的重构到CommitLogReader.java.Usage中,使用各种签名是相当简单的。为了处理从磁盘读取的突变,实现CommitLogReadHandler。

警告

如果没有某种消费过程,请不要启用CDC。

变更数据捕获的初始实现不包括解析器(请参阅上面的读取CommitLogSegments),因此,如果在节点上启用CDC,然后在表上启用CDC,则cdc_free_space_in_mb将填满,然后写入启用了CDC的表将被拒绝,除非某些消费过程到位。

深入阅读

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值