配置异地多活数据层主要包括数据源、数据同步以及数据保护规则。各单元之间数据源的数据会通过数据同步组件进行复制,并按照指定的数据保护规则承担不同比例流量写入和读取,使各个单元的数据保持最终一致性。当某个单元出现异常或者不可用的情况时,可通过异地多活的切流组件迅速将“问题”单元承担的流量切换至其他正常单元,保证业务的可持续性和稳定性。

前提条件

  • 配置MySQL数据层的前提条件:
    • 在两个单元环境中分别已创建一个或多个同名MySQL。具体操作,请参见创建RDS MySQL实例
    • 已在对应源MySQL实例和目标MySQL实例之间建立好同步链路,且同步链路状态已达到同步中。具体操作,请参见配置同步任务 (旧控制台)
  • 配置DRDS数据层的前提条件:
    • 在两个单元环境中分别已创建一个或多个同名DRDS。具体操作,请参见创建DRDS实例
    • 已在对应源DRDS实例和目标DRDS实例之间建立好同步链路,且同步链路状态已达到同步中。具体操作,请参见配置同步任务 (旧控制台)
  • 配置PolarDB数据层的前提条件:创建PolarDB数据库集群

背景信息

数据保护规则包括Copy、Unit和Mix三种类型:

  • Copy类型的数据保护规则对应强一致业务类型的数据源,建立单向同步链路同步数据。
  • Unit类型的数据保护规则对应最终一致业务类型的数据源,建立双向同步链路。
  • Mix类型对应同一数据源下既有强一致性类型又有最终一致性类型的业务以及非多活业务类型,可以通过表级别粒度控制数据保护规则的数据禁写范围。

功能入口

  1. 登录AHAS控制台
  2. 在控制台左侧导航栏中单击多活容灾
  3. 在左侧导航栏选择基础配置 > 命名空间,然后在顶部选择目标命名空间。
  4. 在左侧导航栏选择异地双活 > 数据层配置,进入数据层配置页面。

步骤一:创建数据源

  1. 数据层配置页面,单击管理数据源
  2. 数据源列表页面,单击添加数据源,配置相关参数,然后单击提交
    参数说明示例
    数据源名称数据源名称是用户在使用MSHA的多活应用连接的数据库,具体到数据库维度。杭州-商家交易库
    数据源单元选择需要使用的数据源单元,该单元对应的地域应为RDS所在的地域。杭州中心单元
    数据源类型多活应用连接的数据库类型,支持的数据库类型包括PolarDB、DRDS、MySQL。MySQL
    实例类型数据源类型不同可选的实例类型不同,选择不同的实例类型,所需的相关配置也不同,具体请根据控制台界面指引配置。RDS
    推送类型在使用MSHA数据面的SDK或Agent时,为应用所使用的数据库建立的唯一标识。推送类型包括以下2种方式:
    • 实例库配置声明:在业务代码的数据库链接配置中添加以下后缀。
      jdbc:mysql://host:port/dbName?mshaInstanceId=${实例id}&mshaDbName=${数据库名}
      说明${实例id}${数据库名}替换成管控面实际的实例ID和数据库名。
    • 实例库URL:业务代码无需修改。
      说明 数据源有多个JDBC-URL时以半角逗号(,)分隔。
    实例库URL
    推送标识当推送类型为实例URL时,需要填写推送标识。当数据保护规则推送ACM配置中心到数据面SDK或Agent生效时,该值会作为唯一标识来识别业务使用的不同数据源。
    jdbc:mysql://host_01:port/dbName,jdbc:mysql://host_02:port/dbName
    创建数据源成功后,您可以在数据源列表页面查看到创建的数据源。
  3. 可选:您还可以在数据源列表页面进行以下操作:
    • 查看数据源状态:数据源最近一次更新表数据的任务执行状态,创建数据源后会默认执行一次更新表数据任务。

      数据源状态包括以下状态:

      • 创建中:完成数据源创建,更新表数据任务前的状态。
      • 正常:数据源最近一次更新表数据任务执行成功。
      • 表数据加载中:数据源最近一次更新表数据任务执行中。
      • 加载失败:数据源最近一次更新表数据任务执行失败。
    • 查看数据源详情:单击操作列的详情,查看数据源的详细信息。
    • 查看数据表:单击操作列的查看表,查看数据表信息、更新数据源、以及查看最近一次的更新情况。
    • 更新数据源:单击操作列的更新,更新数据表的最新信息。
    • 删除数据源:单击操作列的删除,然后在对话框中单击确认

(可选)步骤二:添加同步任务

一个双向同步任务包含正向同步链路和反向同步链路;一个单向同步任务只包含正向同步链路。

在添加同步任务前,您需要以步骤一同样的方式再次添加一个名称为北京-商家交易库的数据源,作为目标数据源。

  1. 数据层配置页面,单击管理同步链路
  2. 同步链路列表页面,单击添加同步任务,然后在弹出的页面中配置相关参数,并单击提交
    参数说明示例
    同步任务名称设置同步任务的名称。test-rds-正向
    源数据源类型多活应用连接的数据库类型。包括:
    • DRDS
    • MySQL
    • OceanBase
    • PolarDB
    MySQL
    源数据源单元选择需要使用的源数据源单元,对应源数据源的地域。杭州中心单元
    源数据源选择步骤一中添加数据源名称。杭州-商家交易库
    目标数据源类型多活应用连接的目标数据库类型。包括:
    • DRDS
    • MySQL
    • OceanBase
    • PolarDB
    MySQL
    目标数据源单元选择需要同步的目标数据源单元。北京单元
    目标数据源选择需要同步的目标数据源名称。北京-商家交易库
    同步任务类型支持DTS(数据传输服务)、OMS(数据迁移和同步平台)同步任务类型。

    当前除了OceanBase目标数据源需要选择OMS同步,其他数据库都是使用DTS。这两个都是外部依赖产品,受限于它自身的产品能力。

    DTS
    同步架构包括单向同步和双向同步:
    • 单向同步:在单向同步的拓扑中,为保障同步数据的一致性,对目标实例中的同步对象只进行读操作,不进行写操作。
    • 双向同步:目前DTS仅支持两个MySQL数据库之间的双向同步。
    说明 关于同步架构的更多信息,请参见数据同步拓扑介绍
    双向同步
    同步任务单元同步任务归属的单元,同步任务会默认创建在目标实例所在的地域。杭州中心单元
    创建同步任务方式包括直接录入和手动创建的方式:
    • 直接录入:如果您在数据传输控制台已经创建一个状态为同步中(双向同步的反向同步链路状态也为同步中)的同步任务,则可以直接选择该同步任务进行录入。
    • 手动创建:如果您在数据传输控制台创建一个同步状态为未配置(双向同步的反向同步链路状态也为未配置)的同步任务,则可以录入该同步任务后,后续再在MSHA控制台进行配置操作。
    说明数据传输控制台的创建同步任务操作,请参见DTS数据同步方案概览
    直接录入
    同步任务同步任务ID(名称),选择DTS控制台已经创建的同步任务。dtsp6s12ghvv74xb7m(test-正向)
    创建同步链路成功后,您可以在同步链路列表页面查看到创建的同步链路。RDS2.png
  3. 可选:您还可以在同步链路列表页面进行以下操作:
    • 查看同步链路信息:单击操作列的查看,查看同步链路的详细信息。
    • 修改同步对象:单击操作列的修改同步对象,进入编辑同步链路页面,修改同步对象。
    • 释放任务:选择任一同步链路,单击左下角的释放同步任务,然后在弹出的对话框中单击确认,即可释放该同步任务。
      说明
      • 同步任务为一组正向和反向的同步链路,且有数据保护规则正在进行时则无法释放任务。
      • 若是双向同步链路,选择任一同步链路,会释放正向和反向同步链路,但不会释放在数据传输控制台的链路数据,如需释放该数据请至数据传输控制台上进行操作。
    • 暂停任务:选择目标同步链路,单击左下角的暂停同步任务,然后在弹出的对话框中单击确认,即可暂停该同步任务。
    • 启动任务:选择目标同步链路,单击左下角的启动同步任务,然后在弹出的对话框中单击确认,即可启动该同步任务。

步骤三:创建数据保护规则

数据层配置页面,单击创建数据保护规则,然后在弹出的页面中配置相关参数,并单击提交
参数说明示例
数据保护规则名称设置保护规则的名称。test-rds
架构类型异地双活架构下默认异地双活。异地双活
数据保护规则类型即同步实例的类型,包含以下三种:
  • COPY:强中心类型,只允许写中心单元。
  • UNIT:单元化类型,对错误路由标识流量禁写。
  • MIX:部分表强中心类型,部分表单元化类型。
COPY
同步延迟策略同步延迟策略在执行切流时生效:
  • 无:数据保护规则上的同步链路在切流时的同步位点时间没有追赶上切流配置生效时间,不禁止对该实例分组下的写操作SQL语句。
  • 禁止写入:数据保护规则上的同步链路在切流时的同步位点时间没有追赶上切流配置生效时间,禁止对该数据源的写操作SQL语句。
  • 禁止更新:数据保护规则上的同步链路在切流时的同步位点时间没有追赶上切流配置生效时间,禁止对该数据源的更新操作SQL语句。
禁止写入
数据保护规则表数据保护规则类型选择MIX时,需要配置该项。
数据保护规则表有以下几类:
  • 长尾表:表示数据层组件对所选表不进行禁写。
  • 中心表:表示数据层组件对所选表非中心的流量进行禁写。
  • 单元表:表示数据层组件对所选表错误路由标识流量进行禁写。
当前示例数据保护规则为COPY类型,则无需配置该项
数据源信息单击选择数据源,在弹出的对话框中选择需要保护的2条数据源且最多选择2条,并单击确认

在选择数据源后,您可以单击列表中的查看全部灰度IP,输入应用所在的ECS的私网IP。多个IP请用半角逗号(,)分隔。

  • 北京-商家交易库
  • 杭州-商家交易库
同步链路选择匹配的同步链路。商家交易同步链路
创建数据保护规则成功后,您可以在数据层配置页面查看到创建的保护规则。vr

后续操作

您还可以在数据层配置页面进行以下操作:

查看基础数据

基础数据概览区域,您可以分别查看数据源、同步链路和数据保护规则的总量、正常数量和异常数量。
数据类型正常数量异常数量
数据源数据源状态为正常的数量。数据源状态不为正常的数量。
同步链路同步链路状态为同步中的数量。同步链路状态不为同步中的数量。
数据保护规则数据保护规则状态为生效的数量。数据保护规则状态没生效的数量。

查看数据保护规则状态

在数据保护规则列表的生效状态列,您可以查看该规则的状态。
  • 草稿:新建数据保护规则的状态,或者回滚灰度推送操作后的状态。
  • 灰度生效:灰度推送操作成功后的状态。
  • 生效:全量推送操作成功后的状态。

推送操作

  • 推送灰度规则:选中目标规则,单击页面下方的推送灰度规则,数据保护规则的内容灰度生效到数据面的SDK和Agent。灰度的范围通过在创建数据保护规则上的灰度IP控制,灰度IP为用户应用所在的ECS的私网IP。
    说明 仅草稿状态下的目标规则才可以执行灰度推送。
  • 推送全量规则:选中目标规则,单击页面下方的推送全量规则,数据保护规则的内容全量生效到数据面的SDK和Agent。
  • 删除灰度规则:选中目标规则,单击页面下方的删除灰度规则,将正在灰度生效的数据保护规则取消生效。
  • 删除全量规则:选中目标规则,单击页面下方的删除全量规则,将正在全量生效的数据保护规则取消生效。
  • 降级:选中目标规则,单击页面下方的降级,将数据保护规则控制下的应用实例执行降级,绕过多活逻辑。
  • 取消降级:单击页面下方的取消降级,将数据保护规则控制下的应用实例取消降级。

其他操作

在数据保护规则列表的操作列,您可以执行以下操作。

  • 查看或编辑数据保护规则详情:单击操作列的详情,查看数据保护规则的详细信息,也可以编辑部分信息,然后单击提交
  • 推送历史:单击操作列的推送历史,在推送历史页面,单击操作列的查看,查看数据保护规则历史推送内容。
  • 删除规则:单击操作列的删除,您可以删除该规则。