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

前提条件

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

功能入口

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

步骤一:创建数据源

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

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

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

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

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

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

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

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

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

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

数据层配置页面,单击创建数据保护规则,然后在弹出的页面中配置相关参数,并单击提交
参数 描述 示例
数据保护规则名称 设置保护规则的名称。 redis保护规则
架构类型 异地应用双活架构下默认异地应用双活。 异地应用双活
同步延迟策略 同步延迟策略在执行切流时生效:
  • 无:数据保护规则上的同步链路在切流时的同步位点时间没有追赶上切流配置生效时间,不禁止对该实例分组下的写操作SQL语句。
  • 禁止写入:数据保护规则上的同步链路在切流时的同步位点时间没有追赶上切流配置生效时间,禁止对该数据源的写操作SQL语句。
  • 禁止更新:数据保护规则上的同步链路在切流时的同步位点时间没有追赶上切流配置生效时间,禁止对该数据源的更新操作SQL语句。
禁止写入
数据源信息 单击选择数据源,在弹出的对话框中选择需要保护的2条数据源且最多选择2条,并单击确认

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

  • 北京-商家交易库
  • 杭州-商家交易库
读写策略 必选,包括:
  • 读写中心:读写当前主数据库。
  • 读写分离:写当前主数据库,读本地数据库。
  • 双活:读写本地数据库。仅Redis数据源类型支持配置该项。
读写中心
附加写策略 可选,默认关闭。包括:
  • 异步写对端:当前数据库执行写入操作后,异步额外写入对端数据库。
  • 同步写对端:当前数据库执行写入操作后,同步额外写入对端数据库。
说明 仅Redis数据源类型支持配置该项。
同步写对端
附加读策略 可选,默认关闭。打开读失败后读对端开关后,如果在当前数据库未读取到数据,系统将自动读取对端的数据库。
说明 仅Redis数据源类型支持配置该项。
关闭
同步链路 单击匹配已有数据选择匹配的同步链路。 商家交易同步链路
创建数据保护规则成功后,您可以在数据层配置页面查看到创建的保护规则,此时主单元为杭州中心单元。rh

读写策略列,将鼠标悬停在中心或者查看上,您可以查看该规则具体的读写策略和附加策略。

步骤四:执行主备切换

当主单元数据出现异常或者不可用的情况时,您可以执行主备切换操作将数据迅速从主单元切换到备单元,具体操作如下。
警告 数据源主备切换过程中,在等待数据同步位点追平这一步骤时,会执行数据源禁写操作,会对业务造成影响,请谨慎操作。
  1. 在已创建的目标数据保护规则的操作列单击主备切换,进入预检查结果页面。
  2. 单击生成预览,确认主备切换策略无误后,单击执行预检查
  3. 确认各检查项状态正常后,单击确认执行,然后在弹出的对话框中单击确认,系统会跳转至主备切换详情页面自动执行切换流程。
    vr
    在主备切换详情页面,您可以查看切换进度和切换结果,当任务进度为100%,表示切换完成。主备切换完成后的结果如下图所示,可以看到此时主单元从杭州中心单元切换为北京单元。fm

后续操作

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

查看基础数据

基础数据概览区域,您可以分别查看数据源、同步链路和数据保护规则的总量、正常数量和异常数量。

数据类型 正常数量 异常数量
数据源 数据源状态为正常的数量。 数据源状态不为正常的数量。
同步链路 同步链路状态为同步中的数量。 同步链路状态不为同步中的数量。
数据保护规则 数据保护规则状态为生效的数量。 数据保护规则状态没生效的数量。

查看数据保护规则状态

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

推送操作

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

其他操作

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

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