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

  1. OceanBase 集群的 LDC 配置
  2. OBProxy 的集群配置
  1. 在客户端中使用 root 用户登录集群的 sys 租户。
  2. 执行以下示例语句配置 LDC,其中 通常设置为城市名(大小写敏感)。 idc 代表该 Zone 所处的机房信息,通常设置为机房名(小写), zone 为当前设置的 Zone 的名称。它们的关系是一个 OceanBase 集群中有若干个 Region,一个 Region 有若干个 Zone,一个 Zone 对应一个 Zone Type 和 IDC 属性:
  1. 检查 OBServer 中 LDC 设置内容是否生效,查询语句如下所示,查看返回结果中对应 Zone 的 Region Zone Type 和 IDC 项的值是否符合您的设置值:
  1. select * from __all_zone;

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

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

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

  1. show proxyinfo idc;

返回结果如下所示:

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

  1. set @@global.ob_route_policy=readonly_zone_first;

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

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