校验任务配置
对比使用场景
对比实时校验项可以清晰反馈出源数据库和目标数据库的数据是否存在差异。为了尽可能减少业务的影响和业务中断时间,校验场景提供了以下几种对比方式:
- 对象级对比:支持对数据库、表、索引等进行对比。
- 数据级对比-行对比:对比选择的表的行数是否一致,只查询表的行数,对比速度较快,建议优先使用。
- 数据级比对-内容比对-静态比对:比对选择的表的内容是否一致,对比速度取决于表的数据量。
内容对比和行数对比不能同时运行。
内容对比和对象级对比不能同时运行。
前提条件
- 已启动校验任务。
对比链路说明
| 同步方向 | 数据流向 | 对象级对比 | 行对比 | 用户对比 | 静态内容对比 |
|---|---|---|---|---|---|
| 入云 | MySQL->MySQL | 支持 | 支持 | 不支持 | 支持 |
| 入云 | MySQL->PostgreSQL | 支持 | 支持 | 不支持 | 不支持 |
| 入云 | MySQL->GaussDB分布式版 | 支持 | 支持 | 不支持 | 支持 |
| 入云 | MySQL->GaussDB集中式版 | 支持 | 支持 | 不支持 | 支持 |
| 入云 | MySQL->TaurusDB | 支持 | 支持 | 不支持 | 支持 |
| 入云 | PostgreSQL->PostgreSQL | 支持 | 支持 | 支持 | 支持 |
| 入云 | PostgreSQL->GaussDB 集中式版 | 支持 | 支持 | 不支持 | 支持 |
| 入云 | PostgreSQL->GaussDB分布式版 | 支持 | 支持 | 不支持 | 支持 |
| 入云 | DDM->MySQL | 支持 | 支持 | 不支持 | 不支持 |
| 入云 | DDM->DDM | 支持 | 支持 | 不支持 | 不支持 |
| 入云 | Oracle->MySQL | 支持 | 支持 | 不支持 | 支持 |
| 入云 | Oracle->TaurusDB | 支持 | 支持 | 不支持 | 支持 |
| 入云 | Oracle->GaussDB集中式版 | 支持 | 支持 | 不支持 | 支持 |
| 入云 | Oracle->GaussDB分布式版 | 支持 | 支持 | 不支持 | 支持 |
| 入云 | Oracle->DDM | 支持 | 支持 | 不支持 | 不支持 |
| 入云 | Oracle->PostgreSQL | 支持 | 支持 | 不支持 | 不支持 |
| 入云 | DB2 for LUW->GaussDB集中式版 | 支持 | 支持 | 不支持 | 支持 |
| 入云 | DB2 for LUW->GaussDB分布式版 | 支持 | 支持 | 不支持 | 支持 |
| 入云 | TiDB->TaurusDB | 支持 | 支持 | 不支持 | 不支持 |
| 入云 | Microsoft SQL Server->GaussDB集中式版 | 支持 | 支持 | 不支持 | 支持 |
| 入云 | Microsoft SQL Server->GaussDB分布式版 | 支持 | 支持 | 不支持 | 支持 |
| 入云 | Microsoft SQL Server->Microsoft SQL Server | 支持 | 支持 | 不支持 | 不支持 |
| 入云 | MongoDB->DDS | 支持 | 支持 | 不支持 | 支持 |
| 入云 | MariaDB->MariaDB | 支持 | 支持 | 不支持 | 支持 |
| 入云 | MariaDB->MySQL | 支持 | 支持 | 不支持 | 支持 |
| 入云 | MariaDB->TaurusDB | 支持 | 支持 | 不支持 | 支持 |
| 入云 | TaurusDB->TaurusDB | 支持 | 支持 | 不支持 | 支持 |
| 入云 | DynamoDB->GeminiDB兼容DynamoDB接口 | 支持 | 不支持 | 不支持 | 不支持 |
| 出云 | MySQL->MySQL | 支持 | 支持 | 不支持 | 支持 |
| 出云 | DDM->MySQL | 支持 | 支持 | 不支持 | 不支持 |
| 出云 | DDM->Oracle | 支持 | 支持 | 不支持 | 不支持 |
| 出云 | DDS->MongoDB | 支持 | 支持 | 不支持 | 支持 |
| 出云 | PostgreSQL->PostgreSQL | 支持 | 支持 | 不支持 | 支持 |
| 出云 | GaussDB集中式版->MySQL | 支持 | 支持 | 不支持 | 不支持 |
| 出云 | GaussDB集中式版->Oracle | 支持 | 支持 | 不支持 | 支持 |
| 出云 | GaussDB集中式版->GaussDB分布式版 | 支持 | 支持 | 不支持 | 支持 |
| 出云 | GaussDB集中式版->GaussDB集中式版 | 支持 | 支持 | 不支持 | 支持 |
| 出云 | GaussDB集中式版->PostgreSQL | 支持 | 支持 | 不支持 | 支持 |
| 出云 | GaussDB分布式版->MySQL | 支持 | 支持 | 不支持 | 不支持 |
| 出云 | GaussDB分布式版->Oracle | 支持 | 支持 | 不支持 | 支持 |
| 出云 | GaussDB分布式版->GaussDB分布式版 | 支持 | 支持 | 不支持 | 不支持 |
| 出云 | GaussDB分布式版->GaussDB集中式版 | 支持 | 支持 | 不支持 | 不支持 |
| 出云 | TaurusDB->MySQL | 支持 | 支持 | 不支持 | 支持 |
| 出云 | TaurusDB->Oracle | 支持 | 支持 | 不支持 | 不支持 |
| 出云 | MariaDB->MariaDB | 支持 | 支持 | 不支持 | 支持 |
| 自建-自建 | Oracle->GaussDB集中式版 | 支持 | 支持 | 不支持 | 支持 |
| 自建-自建 | Oracle->GaussDB分布式版 | 支持 | 支持 | 不支持 | 支持 |
| 自建-自建 | MySQL->GaussDB集中式版 | 支持 | 支持 | 不支持 | 不支持 |
| 自建-自建 | GaussDB集中式版->Oracle | 支持 | 支持 | 不支持 | 支持 |
| 自建-自建 | GaussDB集中式版->GaussDB集中式版 | 支持 | 支持 | 不支持 | 不支持 |
| 自建-自建 | GaussDB分布式版->Oracle | 支持 | 支持 | 不支持 | 支持 |
| 自建-自建 | GaussDB分布式版->GaussDB分布式版 | 支持 | 支持 | 不支持 | 不支持 |
| 自建-自建 | DB2 for LUW->GaussDB集中式版 | 支持 | 支持 | 不支持 | 支持 |
| 自建-自建 | DB2 for LUW->GaussDB分布式版 | 支持 | 支持 | 不支持 | 支持 |
DRS提供的数据比对功能可以清晰反馈出源数据库和目标数据库的数据是否存在差异,目前对于以下数据类型,DRS不支持内容对比,进行内容对比时会自动跳过。
| 源数据库类型 | 数据类型 |
|---|---|
| MySQL | TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT |
| GaussDB | TEXT、CLOB、BLOB、BYTEA、INTERVAL DAY TO SECOND、INTERVAL |
| Oracle | BLOB、NCLOB、CLOB、LONG RAW、LONG、INTERVAL DAY TO SECOND、INTERVAL YEAR TO MONTH、UROWID、BFILE、XMLTYPE、SDO_GEOMETRY |
| Microsoft SQL Server | TEXT、NTEXT、IMAGE、BINARY、VARBINARY、HIERARCHYID、XML、TIMESTAMP |
| DB2 for LUW | CLOB、DBCLOB、BLOB、BINARY、VARBINARY、TEXT |
| PostgreSQL | lob、text、byte、interval |
对于以下数据类型作为主键,DRS也不支持内容对比,进行内容对比时会归到无法比对的表中。
| 源数据库类型 | 数据类型 |
|---|---|
| MySQL | TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT、FLOAT、TIMESTAMP、DATE、DATETIME |
| GaussDB | TEXT、CLOB、BLOB、BYTEA、INTERVAL DAY TO SECOND、INTERVAL、REAL、DOUBLE PRECISION、BOOL、TIME、TIMETZ、TIMESTAMP、TIMESTAMPTZ、DATE |
| Oracle | BLOB、NCLOB、CLOB、LONG RAW、LONG、INTERVAL DAY TO SECOND、INTERVAL YEAR TO MONTH、UROWID、BFILE、XMLTYPE、SDO_GEOMETRY、BINARY_FLOAT、BINARY_DOUBLE、FLOAT、RAW、TIMESTAMP、TIMESTAMP WITH TIME ZONE、TIMESTAMP WITH LOCAL TIME ZONE、DATE |
| Microsoft SQL Server | FLOAT、REAL、DATE、DATETIME、DATETIME2、DATETIMEOFFSET、TIME、TIMESTAMP、TEXT、NTEXT、IMAGE、BINARY、VARBINARY |
| DB2 for LUW | CLOB、DBCLOB、BLOB、BINARY、VARBINARY、TEXT |
创建对比任务
- 在“校验任务管理”界面,选择指定的校验任务,单击任务名称。
- 页面跳转至“基本信息”,切换到“校验任务”页签,进入“对比”信息页面。
- 选择对比的内容。
- 创建对象级对比:选择“对象级对比”页签,单击“开始对比”后稍等一段时间再单击
,观察源数据库和目标数据库的各个对比项结果是否一致。若需要查看结果详情,可单击指定对比项操作列的“详情”按钮。 图1 对象对比
- 创建数据级对比:选择“数据级对比”页签,单击“创建对比任务”,选择“对比类型”和“对象选择”,单击“确定”提交对比任务。 图2 创建数据对比任务
- 创建数据过滤对比:选择“数据级对比”页签,单击“创建对比任务”,选择“对比类型”、“对比方式”勾选“进行数据过滤”选项。 图3 创建数据过滤对比任务
选择具体的对象,单击“下一步”,选择需要校验的表,输入过滤条件,单击“校验规则”。
图4 选择对象
校验完成后,单击“生成过滤规则”,然后单击“是”完成对比任务的创建。
图5 过滤规则
- 创建对象级对比:选择“对象级对比”页签,单击“开始对比”后稍等一段时间再单击
- 对比任务提交成功后,在“数据级对比”页签,单击
刷新列表,可以查看到所选对比类型的对比结果。 图6 数据对比
- 若需要查看行数对比或者内容对比详情,可单击指定对比类型操作列的“查看对比报表”,页面将跳转至新的窗口,可观察对比结果的详细情况。 图7 数据级对比详情
- 单击“导出报告”,可导出对比报告。
- 导出的报告,可以单击“下载报告”,将报告下载至本地。
- 已取消的对比任务也支持查看对比报表。
- 导出的报告保留24小时,请尽快下载至本地。
- 若需要查看行数对比或者内容对比详情,可单击指定对比类型操作列的“查看对比报表”,页面将跳转至新的窗口,可观察对比结果的详细情况。
周期性对比
周期性对比是DRS定时对源数据库与目标数据库表的行数或对象进行对比,并展示结果。
- MySQL->MySQL
- MySQL->TaurusDB
- MySQL->GaussDB集中式版
- TaurusDB->TaurusDB
- TaurusDB->MySQL
- PostgreSQL->GaussDB分布式版
- PostgreSQL->GaussDB集中式版
- Oracle->GaussDB集中式版
- Oracle->GaussDB分布式版
- GaussDB分布式版->GaussDB分布式版
- GaussDB分布式版->GaussDB集中式版
- GaussDB分布式版->Oracle
- GaussDB集中式版->GaussDB集中式版
- GaussDB集中式版->GaussDB分布式版
- GaussDB集中式版->Oracle
- GaussDB集中式版->MySQL
- DB2 for LUW->GaussDB集中式版
- DB2 for LUW->GaussDB分布式版
- Microsoft SQL Server->GaussDB集中式版
- Microsoft SQL Server->GaussDB分布式版
周期性对比步骤如下:
- 在“校验任务管理”界面,选中指定校验任务,单击任务名称,进入“基本信息”页签。
- 单击“校验任务”页签,进入“校验任务”信息页面。
- 选择“周期性对比”页签,单击“修改对比策略”。
- 在“修改对比策略”对话框中,开启周期性对比并设置对比频率、时间等策略,单击“是”完成设置。
- 开启后,DRS会按照设置的定时策略进行行数、内容或对象对比,对比结果需要在对应的数据级对比、内容对比或对象级对比页签中查看。
- 关闭周期性对比后,下一次的周期性对比将不会再进行,历史对比结果仍可正常查看。
- 修改检查设置不会影响当前在进行的周期性对比任务,修改后的设置下次生效。
- 周期性对比会在源和目标端执行一定的读取操作,请选择无业务期时间点进行对比。
- 当对比频率选择每周对比但是勾选全部对比时间(即周一到周日全部勾选)时,任务会根据设置将任务的对比频率自动转换为每天对比。
图8 修改对比策略
对比键设置
数据级对比场景,可进行对比键设置。
- 当前支持对比键设置同步任务类型的链路:
- MySQL->MySQL
- MySQL->TaurusDB
- MySQL->GaussDB集中式版
- TaurusDB->TaurusDB
- TaurusDB->MySQL
- PostgreSQL->GaussDB分布式版
- PostgreSQL->GaussDB集中式版
- Oracle->GaussDB集中式版
- Oracle->GaussDB分布式版
- GaussDB分布式版->GaussDB分布式版
- GaussDB分布式版->GaussDB集中式版
- GaussDB分布式版->Oracle
- GaussDB集中式版->GaussDB集中式版
- GaussDB集中式版->GaussDB分布式版
- GaussDB集中式版->Oracle
- GaussDB集中式版->MySQL
- DB2 for LUW->GaussDB集中式版
- DB2 for LUW->GaussDB分布式版
- Microsoft SQL Server->GaussDB集中式版
- Microsoft SQL Server->GaussDB分布式版
- 对比键设置注意事项:
- 当内容对比的源库表或目标库表为无主键表,但是存在非空唯一索引时,可以手动将需要对比无主键表的非空唯一索引的列配置为对比键后,启动内容对比功能。配置对比键后,DRS数据一致性对比将使用对比键配置的列名作为表记录的唯一标识进行数据对比。
- 对比键:由一列或多列组成,可作为表记录的唯一标识,且值必须非空(当同一张表需要设置多列时,每一列都不能为NULL)。
- 对比键设置需要满足以下条件:
- 设置对比键的列必须为源库表和目标库表都存在的列;
- 设置对比键的列时,库表列大小写需要与源库的大小写一致;
- 设置对比键的列必须为源库主键/唯一索引中的全列,若设置的对比键不符合该项,通过业务可确保对比键能够标识表记录的唯一性。
- 设置对比键的列类型必须为DRS数据一致性内容对比支持的主键类型,可参考 不支持内容对比的主键类型。
- 对比键设置进行内容级对比的约束:
- 若配置的对比键的列为NULL,则将过滤掉该条对比键的列为NULL的记录不进行对比。
- 如设置table的对比键为C1,C2,C3,若存在4条记录分别为Record1(NULL, '1', '1'),Record2('2', NULL, '2'),Record3('3', '3', NULL),Record4('4', '4' , '4')。进行内容对比时,将会过滤Record1,Record2和Record3,只对比Record4记录。
- 设置对比键的表若需要进行动态对比,Oracle数据库为源需要对应的表开启ALL级别补充日志,GaussDB数据库为源需要对应的表开启FULL级别补充日志。