数据校验
数据校验项目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)
安装及操作步骤:
通过git命令下载源码。
git clone https://gitee.com/opengauss/openGauss-tools-datachecker-performance.git
通过maven命令构建check 和 extract jar包
mvn clean package -Dmvnen.test.skip=true
复制Jar包和confmvn clean package -Dmvnen.test.skip=trueig目录到指定部署目录下。
配置相关配置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用于校验的用户名称密码
启动服务。
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
启动抽取校验服务。
sh extract-endpoints.sh stat|restart|stop
sh check-endpoint.sh stat|restart|stop
执行如下命令进行全量校验。
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 ''
启动增量校验(通过修改源端配置文件启动)。
debezium-enable: true
并配置其他debezium-相关配置,启动服务即可开启增量校验服务。
工具二进制安装
通过如下链接下载压缩包并解压,并配置相关配置文件,通过shell脚本即可启动服务。具体配置信息和操作步骤可参考源码安装部分。
https://opengauss.obs.cn-south-1.myhuaweicloud.com/3.1.1/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及以上版本。