数据校验

数据校验项目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命令下载源码。

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

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

    4. 配置相关配置config。

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

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

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

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

      • zookeeper启动。

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

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

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

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

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

      全量校验环境清理:

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

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

工具二进制安装

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

https://opengauss.obs.cn-south-1.myhuaweicloud.com/latest/tools/openGauss-datachecker-performance-3.1.0.tar.gz
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及以上版本。