You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于YugabyteDB只读副本节点可通过YSQL创建表的疑问

关于YugabyteDB只读副本允许创建表的解惑

嘿,你遇到的这个情况其实是YugabyteDB的默认行为,我来给你拆解清楚:

首先明确你配置里的read_replicas是什么——这是YugabyteDB的异步只读副本,它们通过异步复制同步主集群(live_replicas)的数据,但默认情况下,这些节点的YSQL接口并没有被强制设为只读模式。

你在只读副本节点的ysqlsh里执行CREATE TABLE没有报错,核心原因是:当你连接到只读副本节点时,YugabyteDB会自动把写请求路由到主集群的leader节点执行,完成后再通过异步复制把新创建的表同步到只读副本上。所以看起来是在副本上操作,但实际写动作是在主集群完成的。

如果想要让只读副本节点真正拒绝所有写操作,你有两种实用方式:

  • 节点级强制只读:给只读副本节点添加GFlag配置ysql_enable_read_only=true,重启节点后,任何连接到该节点的会话都无法执行写操作,尝试写会直接报错。
  • 会话级只读:在ysqlsh里执行SET default_transaction_read_only = ON;,当前会话就只能执行读操作,写操作会被立刻拒绝。

另外小提一句,你的集群配置里read_replicas的部署zone和主集群完全一致,这种配置适合低延迟的只读查询场景;如果是为了灾备需求,通常会把只读副本放在不同的region或zone哦。

内容的提问来源于stack exchange,提问作者dh YB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.01 00:43:11