文档首页/ 数据复制服务 DRS/ 实时灾备/ 任务管理/ 数据对比(对比灾备项)
更新时间:2024-09-24 GMT+08:00

数据对比(对比灾备项)

对比使用场景

对比灾备项可以对比业务数据库和灾备数据库的数据一致性,目前灾备对比功能支持以下几种对比方式:

  • 对象级对比:支持对数据库、索引、表、视图、存储过程和函数等对象进行对比。
  • 数据级对比分为行对比和内容对比。
    • 行对比:对比同步的表的行数是否一致,只查询表的行数,对比速度较快,建议优先使用。
    • 内容对比:对比同步的表内数据是否一致,需要查询每条数据进行对比,相较于行对比,内容对比较慢。

    为了确保对比结果具有可参考性,请通过“稍后启动”功能在业务低峰期或者无业务期进行数据对比,业务运行期间由于数据的持续变化,仅适合对一些业务的低频率修改的冷数据进行对比。

  • 用户对比:对源库和目标库的账号名称、权限进行对比。

在使用对比功能查看数据一致性时,建议优先使用行数对比,确定行数是否一致。如果出现行数不一致的情况,可以针对不一致的表,使用内容对比,来确定具体有哪些数据不一致。

表1 支持的对比方式

灾备方向

数据流向

对象级对比

行对比

内容对比

动态内容对比

用户对比

本云为备

MySQL->MySQL

支持

支持

支持

支持

支持

本云为主

MySQL->MySQL

支持

支持

支持

支持

支持

本云为备

MySQL->GaussDB(for MySQL)

支持

支持

支持

支持

支持

本云为备

DDM实例->DDM实例

支持

支持

不支持

不支持

不支持

本云为主

DDM实例->DDM实例

支持

支持

不支持

不支持

不支持

本云为备

GaussDB(for MySQL)->GaussDB(for MySQL)

支持

支持

支持

支持

支持

本云为主

GaussDB(for MySQL)->GaussDB(for MySQL)

支持

支持

支持

支持

支持

双主灾备

MySQL->MySQL

支持

支持

支持

不支持

支持

双主灾备

GaussDB(for MySQL)->GaussDB(for MySQL)

支持

支持

支持

不支持

支持

约束限制

  • 对比是大小写敏感的,如果业务数据库或灾备数据库一端为非大小写敏感,一端为大小写敏感,对比结果可能出现不一致的情况。
  • 如果在对比时业务数据库进行DDL操作,为保证对比结果的准确性,需重新进行内容对比。
  • 如果单独对灾备数据库进行数据修改操作,可能会导致对比结果不一致。
  • 如果业务数据库字符类型存在编码异常的情况,通过DRS灾备或对比时会因数据库驱动转码转换为异常码点,最终可能导致内容对比一致,实际字节不一致。
  • 内容对比功能目前只支持带有主键的表,对于不支持内容对比的表可以使用行数对比功能。所以数据级对比功能需要结合业务场景,选用行数对比或者内容对比。
  • DRS进行内容比对期间不能暂停DRS任务,否则可能导致比对任务失败。
  • 部分数据类型不支持内容对比,详情参考内容对比不支持哪些数据类型
  • 为避免占用资源,DRS对行对比的时长进行限制,超过限制时长,行对比任务自动停止。业务数据库是关系型数据库时,行对比限制时长为60分钟;业务数据库为非关系数据库,行对比限制时长为30分钟。
  • 为避免占用资源,DRS任务的对比结果限制保留60天,60天后自动清除。
  • 对于支持内容对比的灾备链路,如果创建任务时可以选择实例规格,那么仅支持大规格及以上规格进行内容对比。
  • MySQL、GaussDB(for MySQL)为源链路,源数据库中的虚拟列不支持内容对比,对比时会过滤虚拟列。

对数据库影响

  • 对象对比:会查询源库及目标库的系统表,占用10个左右的session的连接数,正常情况不会对数据库产生影响。但是如果对象数量巨大(比如几十万张表),可能会对数据库产生一定的查询压力。
  • 行数对比:会查询源库及目标库的表行数,占用10个左右的session的连接数,正常的select count语句基本不会对数据库产生影响。但是如果表数据量巨大(亿级)会对数据库产生一定的查询压力,返回查询结果会比较慢。
  • 内容对比:会查询源库及目标库的全部数据,涉及每个字段都会对比,所以会对数据库产生一定的查询压力,主要体现在IO上,查询速度受限于源库和目标库的IO和网络带宽。占用1-2个CPU,占用10个左右的session的连接数。
  • 用户对比:会查询源库及目标库的账户和权限,基本不会对数据库产生影响。

对比耗时预估

  • 对象对比:根据源库查询性能,一般会在几分钟内返回结果,如果对象数据量特别巨大,对比时长可能达到几十分钟。
  • 行数对比:使用select count方式,查询速度跟数据库性能相关。
  • 内容对比:在数据库没有压力并且网络正常的情况下,对比速度大概是5M/s。
  • 用户对比:与对象对比同时返回结果,如果对象不多的情况下,基本会在几分钟就会返回结果。

前提条件

  • 已登录数据复制服务控制台。
  • 已启动灾备任务。

操作步骤

  1. “实时灾备管理”界面,选中指定灾备任务,单击任务名称,进入“基本信息”页签。
  2. 单击“灾备对比”页签,进入“灾备对比”信息页面,对业务数据库和灾备数据库的数据进行对比分析。

    1. 首先进行数据库对象完整性检查。
      在“对象级对比”页签,单击“开始对比”后稍等一段时间再单击,查看各个对比项的对比结果。
      图1 对象级对比

      若需要查看对比项的对比结果详情,可单击指定对比项操作列的“详情”。

    2. 数据库对象检查完成后,进行灾备数据行数和内容对比。

      在“数据级对比”页签,单击“创建对比任务”页面,选择“对比类型”、“对比方式”、“对比时间”和“对象选择”,单击“确定”,提交对比任务。

      图2 创建对比任务
      • 对比类型:分为行数对比和内容对比。
      • 对比方式:分为静态对比和动态对比两种。
        • 静态对比:对源数据库和目标数据库进行一次全量内容对比,内容对比完成后对比任务结束,适用于无数据变化的非业务时间。
        • 动态对比:先对源数据库和目标数据库进行一次全量内容对比,对比任务完成后进入增量对比阶段,实时比对源数据库和目标数据库的增量数据,适用于有数据变化的业务时间。
        • 目前仅MySQL和GaussDB(for MySQL)引擎支持对比方式选择。
        • 动态对比过程中不支持在业务数据库创建新表。如需创建,请先取消动态对比,待新表创建并灾备完成后,再重新启动动态对比。
      • 对比时间:可设置为“立即启动”“稍后启动”。由于同步具有轻微的时差,在数据持续操作过程中进行对比任务,可能会出现符合实际情况的少量数据不一致对比结果,推荐结合对比定时功能,选择在业务低峰期进行对比,得到更为具有参考性的对比结果。
      • 进行数据过滤:开启后,可根据配置的过滤条件进行对象比对。

        目前实时灾备仅支持MySQL->MySQL设置数据过滤对比。

        选择开启数据过滤后,需要为选择对比的表对象添加过滤条件。

        在过滤条件区域,填写过滤条件后,单击“校验规则”
        • 过滤表达式不支持使用某种数据库引擎特有的package、函数、变量、常量等写法,须使用通用SQL标准。
        • 请直接输入SQL语句中WHERE之后的部分(不包含WHERE和分号,例如:sid > 3 and sname like "G %")。
        • 过滤条件不支持使用隐式转换规则,请填写正确的数据类型条件。例如Oracle的c列是字符类型varchar2,过滤条件应该设置为 c > '10',而不是c > 10。
        • 不支持对LOB字段设置过滤条件,如CLOB、BLOB、BYTEA等大字段类型。
        • 建议不要对非精确类型字段设置过滤条件,如FLOAT、DECIMAL、DOUBLE等。
        • 建议不要对带有特殊字符的字段设置过滤条件。
        • 暂不支持对库名、shema名、表名大小写混用的对象进行过滤比对。
        • 暂不支持单库超过5万张表情况下进行条件过滤。

        校验通过后,单击“生成加工规则”,即可在加工规则表格中看到该规则。

        检查无误后,单击“确定”,创建对比任务。

      • 对象选择:可根据具体的业务场景选择需要进行对比的对象。
      • 初始化中的任务无法进行数据级对比。
    3. 对比任务提交成功后,返回“数据级对比”页签,单击刷新列表,可以查看到所选对比类型的对比结果。
      图3 数据级对比结果
    4. 若需要查看对比类型详情,可单击指定对比类型操作列的“查看对比报表”,然后选择需要进行对比的数据库,单击操作列的“查看详情”,查看指定业务数据库和灾备数据库的对比结果详情。
      图4 行数对比详情
      图5 内容对比详情
      • 已取消的对比任务也支持查看对比报表。
      • 行对比结果可按照“源库表行数”或“目标库表行数”,对当前页面显示的结果进行升序或者降序排列,方便进行筛选。
      • 行对比差异显示为负数时,代表目标库表行数比源库表行数多;显示为正数时,代表源库表行数比目标库表行数多。
    5. 查看数据库账号和权限对比。单击“用户对比”页签,可查看数据库账号及权限的对比结果。
      图6 用户对比
      • 初始化阶段的任务无法进行用户对比。