读写分离的部署需要进行以下 4 个步骤:

  1. OceanBase 集群的 LDC 配置。

  2. OBProy 的 LDC 配置。

  3. OBProxy 的集群配置。

  1. 在客户端中使用 root 用户登录集群的 sys 租户。

  2. 检查 OBServer 中 LDC 设置内容是否生效,查询语句如下所示,查看返回结果中对应 Zone 的 Region Zone Type 和 IDC 项的值是否符合您的设置值。

    1. obclient> SELECT * FROM __all_zone;

读写分离部署时,OBProxy仅需正确设置好 LDC 即可。OBProxy 的 LDC 配置有两种方式,其中 zue 为示例机房。

  1. OBProxy 进程启动时通过参数指定进行配置(推荐方式),示例语句如下所示。

  2. 在 OceanBase 支持的客户端工具中运行 ALTER语句修改 OBProxy 配置项,示例语句如下所示。

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

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

    1. obclient> SHOW PROXYINFO IDC;

在 OceanBase 支持的客户端中使用 root 用户登录到集群的业务租户,运行下述语句设置 Global 级别系统变量 为对应取值即可,默认取值为 readonly_zone_first

  1. obclient> SET @@global.ob_route_policy=readonly_zone_first;

读写分离部署同样仅针对弱一致性读的场景才会生效。应用配置弱一致性读有以下 3 种方法:

  • 在 SQL 中携带 HINT 来指定,示例语句如下所示。

  • 设置 Session 级别的系统变量来指定(仅对当前 Session 生效),示例语句如下所示。

    1. obclient> SET @@ob_read_consistency='weak'