配置异地应用双活数据层主要包括数据源、数据同步以及数据保护规则。各单元之间数据源的数据会通过数据同步组件进行复制,并按照指定的数据保护规则承担不同比例流量写入和读取,使各个单元的数据保持最终一致性。当某个单元出现异常或者不可用的情况时,可通过切流单迅速将数据库从主单元切换到正常单元,保证业务的可持续性和稳定性。
前提条件
配置MySQL数据层的前提条件:
在两个单元环境中分别已创建一个或多个同名MySQL。具体操作,请参见快速创建RDS MySQL实例。
已在对应源MySQL实例和目标MySQL实例之间建立好同步链路,且同步链路状态已达到同步中。具体操作,请参见配置同步任务(旧控制台)。
配置DRDS数据层的前提条件:
在两个单元环境中分别已创建一个或多个同名DRDS。具体操作,请参见创建DRDS实例。
已在对应源DRDS实例和目标DRDS实例之间建立好同步链路,且同步链路状态已达到同步中。具体操作,请参见配置同步任务(旧控制台)。
配置PolarDB Mysql或者PolarDB O数据层的前提条件:创建PolarDB数据库集群。
配置Redis数据层的前提条件:
在两个单元环境中分别已创建一个或多个同名Redis。具体操作,请参见创建Redis实例。
已在对应源Redis实例和目标Redis实例之间建立好同步链路,且同步链路状态已达到同步中。具体操作,请参见配置同步任务(旧控制台)。
配置PostgreSQL数据层的前提条件:
在两个单元环境中分别已创建一个或多个同名PostgreSQL。具体操作,请参见创建RDS PostgreSQL实例。
已在对应源PostgreSQL实例和目标PostgreSQL实例之间建立好同步链路,且同步链路状态已达到同步中。具体操作,请参见配置同步任务(旧控制台)。
配置MongoDB数据层的前提条件:
在两个单元环境中分别已创建一个或多个同名MongoDB。具体操作,请参见创建MongoDB实例。
已在对应源MongoDB实例和目标MongoDB实例之间建立好同步链路,且同步链路状态已达到同步中。具体操作,请参见配置同步任务(旧控制台)。
功能入口
- 登录AHAS控制台。
- 在控制台左侧导航栏中单击多活容灾。
在左侧导航栏选择多活实例,进入多活实例列表页。
在多活实例列表页选择需要配置数据层的多活实例,点击实例ID,进入实例概览页面。
在左侧导航栏选择数据层配置,进入数据层配置页。
步骤一:创建数据源
在数据层配置页面,单击管理数据源。
在数据源列表页面,单击添加数据源,并配置相关参数,然后单击提交。
参数
描述
示例
数据源名称
数据源名称是用户在使用MSHA的多活应用连接的数据库,具体到数据库维度。
杭州-商家交易库
数据源单元
选择需要使用的数据源单元,该单元对应的地域应为Redis所在的地域。
杭州中心单元
数据源类型
多活应用连接的数据库类型,支持的数据库类型包括PolarDB MySQL、DRDS、MySQL、PostgreSQL、PolarDB O、Redis、PolarDB-X 2.0和MongoDB。
Redis
实例类型
数据源类型不同可选的实例类型不同,选择不同的实例类型,所需的相关配置也不同,具体请根据控制台界面指引配置。
Redis云数据库
推送类型
在使用MSHA数据面的SDK或Agent时,为应用所使用的数据库建立的唯一标识。推送类型包括以下2种方式:
实例库配置声明:在业务代码的数据库链接配置中添加以下后缀。Redis与MongoDB数据源类型暂不支持配置该项。
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}
MongoDB类型的格式为:${primaryHost}.${port}.${database}
redis://${host_01}:${port},redis://${host_02}:${port}
说明MongoDB数据源需要填写鉴权库信息与部署架构(副本集或分片集群)。
创建数据源成功后,您可以在数据源列表页面查看到创建的数据源。
可选:您还可以在数据源列表页面进行以下操作:
查看数据源状态:数据源最近一次更新表数据的任务执行状态,创建数据源后会默认执行一次更新表数据任务。
数据源状态包括以下状态:
创建中:完成数据源创建,更新表数据任务前的状态。
正常:数据源最近一次更新表数据任务执行成功。
加载中:数据源最近一次更新表数据任务执行中。
加载失败:数据源最近一次更新表数据任务执行失败。加载失败后您可以在查看表中,查看失败详情信息。
查看数据源详情:单击操作列的详情,查看数据源的详细信息。
查看数据表:单击操作列的查看表,查看数据表信息、更新数据源、以及查看最近一次的更新情况。
更新数据源:单击操作列的更新,更新数据表的最新信息。
删除数据源:单击操作列的删除,然后在对话框中单击确认。
(可选)步骤二:添加同步任务
一个双向同步任务包含正向同步链路和反向同步链路;一个单向同步任务只包含正向同步链路。
在添加同步任务前,您需要以步骤一同样的方式再次添加一个名称为北京-商家交易库的数据源,作为目标数据源。
在数据层配置页面,单击管理同步链路。
在同步链路列表页面,单击添加同步任务,然后在弹出的页面中配置相关参数,并单击提交。
参数
描述
示例
同步任务名称
设置同步任务的名称。
test-rds-正向
源数据源类型
多活应用连接的数据库类型。包括:
DRDS
MySQL
Redis
PolarDB Mysql
PolarDB-X 2.0
PostgreSQL
PolarDB O
MongoDB
Redis
源数据源单元
选择需要使用的源数据源单元,对应源数据源的地域。
杭州中心单元
源数据源
选择步骤一中添加数据源名称。
杭州-商家交易库
目标数据源类型
多活应用连接的目标数据库类型。包括:
DRDS
MySQL
Redis
PolarDB Mysql
PolarDB-X 2.0
PostgreSQL
PolarDB O
MongoDB
Redis
目标数据源单元
选择需要同步的目标数据源单元。
北京单元
目标数据源
选择需要同步的目标数据源名称。
北京-商家交易库
同步任务类型
支持DTS(数据传输服务)。
DTS
同步架构
包括单向同步和双向同步:
单向同步:在单向同步的拓扑中,为保障同步数据的一致性,对目标实例中的同步对象只进行读操作,不进行写操作。
双向同步:目前DTS仅支持两个数据库之间的双向同步。
说明关于同步架构的更多信息,请参见数据同步拓扑介绍。
双向同步
同步任务单元
同步任务归属的单元,同步任务会默认创建在目标实例所在的地域。
杭州中心单元
创建同步任务方式
包括直接录入和手动创建的方式:
直接录入:如果您在数据传输控制台已经创建一个状态为同步中(双向同步的反向同步链路状态也为同步中)的同步任务,则可以直接选择该同步任务进行录入。
手动创建:如果您在数据传输控制台创建一个同步状态为未配置(双向同步的反向同步链路状态也为未配置)的同步任务,则可以录入该同步任务后,后续再在MSHA控制台进行配置操作。
说明在数据传输控制台的创建同步任务操作,请参见DTS数据同步方案概览。
说明MongoDB数据源同步链路使用限制:
副本集云实例:支持手动创建单向或双向同步任务,支持直接录入单向或双向同步任务。
副本集自建类型数据源:支持手动创建单向同步任务,支持直接录入单向同步任务。
分片集群:支持直接录入双向同步任务。
直接录入
同步链路
已录入的同步链路,通过已选中的数据源可直接匹配得到
redis-同步-正向
redis-同步-反向
创建同步链路成功后,您可以在同步链路列表页面查看到创建的同步链路。
可选:您还可以在同步链路列表页面进行以下操作:
查看同步链路信息:单击操作列的查看,查看同步链路的详细信息。
修改同步对象:单击操作列的修改同步对象,在弹出的页面修改同步对象。
释放任务:选择目标同步链路,单击左下角的释放同步任务,然后在弹出的对话框中单击确认,即可释放该同步任务。
说明同步任务为一组正向和反向的同步链路,且有数据保护规则正在进行时则无法释放任务。
若是双向同步链路,选择任一同步链路,会释放正向和反向同步链路。
暂停任务:选择目标同步链路,单击左下角的暂停同步任务,然后在弹出的对话框中单击确认,即可暂停该同步任务。
启动任务:选择目标同步链路,单击左下角的启动同步任务,然后在弹出的对话框中单击确认,即可启动该同步任务。
更新同步状态:异步更新当前同步链路列表页的同步状态。
步骤三:创建数据保护规则
在数据层配置页面,单击创建数据保护规则,然后在弹出的页面中配置相关参数,并单击提交。
参数 | 描述 | 示例 |
数据保护规则名称 | 设置保护规则的名称。 | redis保护规则 |
架构类型 | 异地应用双活架构下默认异地应用双活。 | 异地应用双活 |
同步延迟策略 | 同步延迟策略在执行切流时生效:
| 禁止写入 |
数据源信息 | 单击选择数据源,在弹出的对话框中选择需要保护的2条数据源且最多选择2条,并单击确认。 在选择数据源后,您可以单击列表中的查看全部灰度IP,输入应用所在的ECS的私网IP。多个IP请用半角逗号(,)分隔。 |
|
读写策略 | 必选,包括:
| 读写中心 |
附加写策略 | 可选,默认关闭。包括:
说明 仅Redis数据源类型支持配置该项。 | 同步写对端 |
附加读策略 | 可选,默认关闭。打开读失败后读对端开关后,如果在当前数据库未读取到数据,系统将自动读取对端的数据库。 说明 仅Redis数据源类型支持配置该项。 | 关闭 |
同步链路 | 单击匹配已有数据选择匹配的同步链路。 | 商家交易同步链路 |
创建数据保护规则成功后,您可以在数据层配置页面查看到创建的保护规则。
在读写策略列,将鼠标悬停在中心或者查看上,您可以查看该规则具体的读写策略和附加策略。
后续操作
您还可以在数据层配置页面进行以下操作:
查看基础数据
在基础数据概览区域,您可以分别查看数据源、同步链路和数据保护规则的总量、正常数量和异常数量。
数据类型 | 正常数量 | 异常数量 |
数据源 | 数据源状态为正常的数量。 | 数据源状态不为正常的数量。 |
同步链路 | 同步链路状态为同步中的数量。 | 同步链路状态不为同步中的数量。 |
数据保护规则 | 数据保护规则状态为生效的数量。 | 数据保护规则状态没生效的数量。 |
查看数据保护规则状态
在数据保护规则列表的生效状态列,您可以查看该规则的状态。
草稿:新建数据保护规则的状态,或者回滚灰度推送操作后的状态。
灰度生效:灰度推送操作成功后的状态。
生效:全量推送操作成功后的状态。
推送操作
推送灰度规则:选中目标规则,单击页面下方的推送灰度规则,数据保护规则的内容灰度生效到数据面的SDK和Agent。灰度的范围通过在创建数据保护规则上的灰度IP控制,灰度IP为用户应用所在的ECS的私网IP。
说明仅草稿状态下的目标规则才可以执行灰度推送。
推送全量规则:选中目标规则,单击页面下方的推送全量规则,数据保护规则的内容全量生效到数据面的SDK和Agent。
删除灰度规则:选中目标规则,单击页面下方的删除灰度规则,将正在灰度生效的数据保护规则取消生效。
删除全量规则:选中目标规则,单击页面下方的删除全量规则,将正在全量生效的数据保护规则取消生效。
降级:选中目标规则,单击页面下方的降级,将数据保护规则控制下的应用实例执行降级,绕过多活逻辑。
取消降级:单击页面下方的取消降级,将数据保护规则控制下的应用实例取消降级。
其他操作
在数据保护规则列表的操作列,您可以执行以下操作。
查看或编辑数据保护规则详情:单击操作列的规则详情,查看数据保护规则的详细信息,也可以编辑部分信息,然后单击提交。
推送历史:单击操作列的推送历史,在推送历史页面,单击操作列的查看,查看数据保护规则历史推送内容。
切换历史:单击操作列的切换历史,您可以查看数据保护规则的历史切换详情。
删除规则:单击操作列的删除,您可以删除该规则。