数据校验

数据校验项目openGauss-tools-datachecker-performance,分为check服务和extract服务。check服务用于数据校验,extract服务用于数据抽取和规整。

原理介绍

全量校验:

在全量数据迁移完成后,由extract服务对MySQL源端和openGauss目标端数据抽取然后规整,并将数据推送到kafka中。最后由check服务提取kafka中的数据,并进行校验且输出校验结果。

增量校验:

由debezium服务侦听源端MySQL数据库的增量数据,到指定topic。再由源端extract服务处理该topic增量数据,触发check增量校验。

环境准备

ARM+openEuler 20.03 或 X86+CentOS 5.7

工具源码安装

  • 安装软件依赖:

    jdk11 、git 、maven 、kafka、debezium(增量校验-源端connect)

  • 安装及操作步骤:

    1. 通过git命令下载源码。

      1. git clone https://gitee.com/opengauss/openGauss-tools-datachecker-performance.git
    2. 通过maven命令构建check 和 extract jar包

      1. mvn clean package -Dmvnen.test.skip=true
    3. 复制Jar包和confmvn clean package -Dmvnen.test.skip=trueig目录到指定部署目录下。

    4. 配置相关配置config。

      • 校验端配置文件application.yml:

        1. server:
        2. port: 9000
        3. spring:
        4. kafka:
        5. bootstrap-servers: 192.168.0.114:9092 # kafka 集群地址
        6. data:
        7. check:
        8. data-path: D:\code\tool # 配置数据校验结果输出本地路径
        9. bucket-expect-capacity: 10 # 桶容量范围最小值为1
        10. source-uri: http://127.0.0.1:9002 # 配置源端服务地址和服务端口server.port
        11. sink-uri: http://127.0.0.1:9001 # 配置源端服务地址和服务端口server.port
      • 抽取端-源端配置 application-source.yml:

        1. server:
        2. port: 9002
        3. spring:
        4. check:
        5. server-uri: http://127.0.0.1:9000 # 数据校验服务地址
        6. extract:
        7. schema: test # 源端数据实例
        8. databaseType: MS # 源端数据库类型 MS mysql
        9. debezium-enable: false #是否开启增量debezium配置 默认不开启
        10. debezium-topic:topic # debezium监听表增量数据,使用单一topic进行增量数据管理
        11. debezium-groupId: debezium-extract-group # d debezium增量迁移topic ,groupId消费Group设置
        12. debezium-topic-partitions: 1 # debezium监听topic 分区数量配置
        13. debezium-tables: # debezium-tables配置debezium监听的表名称列表; 该配置只在源端服务配置并生效
        14. table1,
        15. table2
        16. debezium-time-period: 1 # debezium增量迁移校验 时间周期 24*60 单位分钟
        17. debezium-num-period: 1000 #debezium增量迁移校验 统计增量变更记录数量阀值,默认值1000 阀值应大于100
        18. datasource:
        19. druid:
        20. dataSourceOne:
        21. driver-class-name: com.mysql.cj.jdbc.Driver
        22. url: jdbc:mysql://127.0.0.1:3306/test?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&allowPublicKeyRetrieval=true
        23. username: jack # 源端mysql用于校验的用户名称
        24. password: test@123 # 源端mysql用于校验的用户名称密码
      • 抽取端-目标端配置 application-sink.yml:

        1. server:
        2. port: 9001
        3. spring:
        4. check:
        5. server-uri: http://127.0.0.1:9000 # 数据校验服务地址
        6. extract:
        7. schema: test # 宿端opengauss 用于校验数据schema
        8. databaseType: OG # 宿端数据库类型 OG opengauss
        9. datasource:
        10. druid:
        11. dataSourceOne:
        12. driver-class-name: org.opengauss.Driver
        13. # 宿端opengauss用于校验数据库链接地址
        14. url: jdbc:opengauss://127.0.0.1:15432/test?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&batchMode=OFF
        15. username: jack # 宿端opengauss用于校验的用户名称
        16. password: test@123 # 宿端opengauss用于校验的用户名称密码
    5. 启动服务。

      • zookeeper启动。

        1. cd /data/kafka/confluent-7.2.0
        2. bin/zookeeper-server-start -daemon etc/kafka/zookeeper.properties
      • kafka启动。

        1. bin/kafka-server-start.sh -daemon etc/kafka/server.properties
      • connect debezium连接器启动(增量校验要求启动),mysql-conect.properties为配置debezium连接器配置文件。

        1. bin/connect-standalone -daemon etc/kafka/connect-standalone.properties etc/kafka/mysql-conect.properties
    6. 启动抽取校验服务。

      1. sh extract-endpoints.sh stat|restart|stop
      2. sh check-endpoint.sh stat|restart|stop
    7. 执行如下命令进行全量校验。

      1. curl -X 'POST' 'http://localhost:9000/start/check?checkMode=FULL' -H 'accept: */*' -d ''

      全量校验环境清理:

      1. curl -X 'POST' 'http://localhost:9000/stop/clean/check' -H 'accept: */*' -d ''
    8. 启动增量校验(通过修改源端配置文件启动)。

      1. debezium-enable: true
      2. 并配置其他debezium-相关配置,启动服务即可开启增量校验服务。

工具二进制安装

通过如下链接下载压缩包并解压,并配置相关配置文件,通过shell脚本即可启动服务。具体配置信息和操作步骤可参考源码安装部分。

  1. https://opengauss.obs.cn-south-1.myhuaweicloud.com/3.1.1/tools/openGauss-datachecker-performance-3.1.0.tar.gz
  2. tar -zxvf openGauss-datachecker-performance-3.1.0.tar.gz

解压目录包含:

  • datachecker-check-0.0.1.jar:校验服务Jar
  • datachecker-extract-0.0.1.jar:抽取服务Jar

config目录包含:

  • application.yml:校验端配置文件
  • application-source.yml:源端配置文件
  • application-sink.yml:目标端配置文件
  • check-endpoint.sh:校验服务启动脚本
  • extract-endpoints.sh:源端和目的端数据抽取服务启动脚本

卸载工具

删除对应JAR包,及相关配置文件即可。

注意事项

  • JDK版本应为11+。
  • 当前版本仅支持源端MySQL与目标端openGauss之间数据校验。
  • 当前版本只支持数据校验,不支持表对象校验。
  • 当前版本不支持地理位置数据校验。
  • MySQL需要5.7及以上版本。