逻辑数据中心(Logical Data Center,LDC)路由正是为了解决这一问题而设计的,通过给 OceanBase 集群的每个 Zone 设置 Region 属性和 IDC 属性,并给 OBProxy 指定 IDC 名称配置项后,当数据请求发到 OBProxy 时,OBProxy 将按如下优先级顺序进行路由转发:

  1. 选取本机房不在合并的副本。
  2. 选取同地域机房不在合并的副本。
  3. 选取本机房在合并的副本。
  4. 选取同地域机房在合并的副本。
  5. 随机选取非本地域机房在合并的副本。

LDC 路由的设置需要进行以下 3 个步骤:

  1. OBProxy 的 LDC 配置
  1. 在 OceanBase 数据库支持的客户端工具中使用 root 用户登录集群的 sys 租户。
  2. 登录后,执行以下示例语句配置 LDC,其中参数 通常设置为城市名(大小写敏感)。参数 idc 代表该 Zone 所处的机房信息,通常设置为机房名(小写)。参数 为当前设置的 Zone 的名称。它们的关系是一个 OceanBase 集群中有若干个 Region,一个 Region 有若干个 Zone,一个 Zone 对应一个 IDC 属性:
  1. SELECT* FROM __all_zone;

OBProxy 的 LDC 配置有两种方式,其中 zue 为示例机房:

  1. OBProxy 进程启动时通过参数指定进行配置(推荐方式),示例语句如下所示:
  1. 在OceanBase 数据库支持的客户端工具中运行 语句修改 OBProxy 配置项,示例语句如下所示:
  1. ALTER proxyconfig SET proxy_idc_name='zue';

以上述示例中的 zue 机房为例,为 OBProxy 配置 LDC 后,如果应用部署在上海 zue 机房,当应用逻辑发起弱一致性读时,请求都是优先发往上海机房。

为 OBProxy 配置 LDC 后可通过下述语句检查配置是否生效:

LDC 路由仅针对弱一致性读的场景才会生效。应用配置弱一致性读有以下 3 种方法:

1. 在 SQL 中携带 HINT 来指定,示例语句如下所示:

  1. 设置 Session 级别的系统变量来指定(仅对当前 Session 生效),示例语句如下所示:
  1. set @@global.ob_read_consistency='weak'