OB从zone1插入数据,zone2、zone3只读,

【 使用环境 】测试环境
【 OB or 其他组件 】OB
【 使用版本 】4.3.1
【问题描述】只负责写zone1,zone2、zone3只负责读,zone1在一个机房,zone2一个机房、zone3一个机房,zone1插入数据,副本到zone2、zone3,应用 在zone2和zone3进行统计分析,设置只读模式,数据导入导出等,这种如何实现

您好,您说的这个其实本身就是ob基础的功能的
1 设置primaryzone 为zone1;zone2,zone3 就可以达到zone1写入,zone2,zone3是followe形式
2 如果您想在zone2和zone3专门做只读分析使用的话我知道的方法可以设置成弱读
弱读设置

通过 Hint 设置

OceanBase 数据库的 SQL 提供了弱读 Hint(/*+READ_CONSISTENCY(WEAK)*/),在 SQL 语句中添加该 Hint 即可开启弱读功能。示例如下:

select /*+READ_CONSISTENCY(WEAK)*/ * from t1;

通过配置项设置

通过 Hint 的方式设置弱读需要修改 SQL,有时修改 SQL 会比较麻烦,此时可以通过修改配置项 obproxy_read_consistency 的值设置弱读。方法如下。

  1. 使用 ODP 管理员账号(root@proxysys)登录到数据库。
  2. 执行如下命令修改配置项。
alter proxyconfig set obproxy_read_consistency = 1;

该配置项取值为 0 和 1。默认为 0,表示强读(读请求需要读到最新的数据);取值为 1 表示弱读(读请求不要求读到最新的数据)。

修改路由策略

ODP 通过配置项 proxy_route_policy 修改路由策略,通过设置配置项值为 follower_firstfollower_only 控制弱读请求的路由。这两个值的含义如下,您需根据具体业务场景选择对应策略。

  • follower_first:弱读请求优先路由到备副本,如果备副本都不可用,弱读请求路由到主副本。
  • follower_only:弱读请求路由到备副本,如果备副本都不可用,断开和客户端的连接。

参考https://www.oceanbase.com/docs/common-odp-doc-cn-1000000000755435

3 个赞

很专业,不过倒是有一个问题,就是弱读虽然可以实现zone2和zone3读取,但是如何确保zone2和zone3的弱读一致性问题,比如zone2是南中心、zone3是北中心。两个中心要各自计算自己的模型,可能涉及一些交叉业务比对

您好,如果业务选择的是弱读那么个人理解的隐藏前提是,这个业务对延迟并不是特别敏感。官方要求机房之间延迟不要高于2ms,所以其实容灾的最关键的基础架构就是机房之间的带宽延迟要达到要求并且稳定,如果您的业务对于2-10ms可以忽略那就可以走弱读计算。否则还是走主副本读比较好。

参考官方文档
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001050137
OceanBase 社区nll7vj_gaOTM0Mjk3NjgyLjE3MTk1NDgxMjQ._ga_T35KTM57DZ*MTcyMjMwMjE0Ni45Ni4xLjE3MjIzMDY5NTMuNDEuMC4w

主要是做统计分析,源端为kafka,将数据消费至ob,在从ob进行一些实时分析推送kafka等、或批处理推送到其他mpp架构数据库,目前看好ob的多中心架构,zone1和zone2在南中心广东,两个完全独立的机房,属于两个城市、zone3北中心在北京;南北带宽预计800M,北中心一套数据仓库用于服务全国分公司,南中心用于服务总部统计分析和业务等。
现在的问题就是源端kafka也在南中心,数据仓库涉及南北中心数据ODS一致性问题,否则最终模型计算会有偏差。
所以想在有限带宽的前提下,如何保证ODS南北中心数据一致性问题

您好,根据您的描述我个人理解如下
源端kafka在南中心假设就和zone1机房在一起,数据从kafka写入到ob zone1,写入之后数据副本通过ob 同步到zone2 (南区2),zone3(北区)。机房之间带宽800MB,延迟2ms
其实最关键的还是延迟和带宽如果都在这个有限指标下其实是没问题的。(一般业务也不会占用这么高的带宽的,除非特别生猛的插入)
不过个人建议您还是先测试一下机房指标,800MB甚至更高带宽下的数据传输下延迟怎么样
如果都没问题,那么你的业务统计如果相差10ms(10ms是预留最大冗余哈)内可以接受那么我觉得理论上可行的。
测试没问题后,个人强烈建议搭建个测试环境在验证一下,防止没有考虑的因素。

非常感谢,日增量大约在2-3TB左右,白天可能数据量大,晚上应该数据量较小,如果稳定800M带宽,延迟在10ms内应该都还好。
现在头疼的是批处理计算问题,如何保证增量计算的时候数据一致性问题,目前想采用分区策略,计算一个分区的增量数据,最终合并到目标表。
但是kafka推送到ob是有延迟的,一般在30分钟内容延迟,暂时无法解决。
分区range是每天0点分区。
如何让分区变成每天凌晨一点分区,这样就能覆盖到当天全部增量。
或者有什么替代方案吗?
最终目的就是保证南北统计分析数据的时候,处理的数据是一致的。而且必须覆盖到当天的增量。

15940987897

个人联系方式记得后续删掉喔

1 个赞

要不您帮我推荐一下,我现在就删除

你删除吧

1 个赞