迁移后数据校验

最近更新时间:2024-09-24 18:00:12

我的收藏

步骤1:上传迁移工具



步骤2:检验任务配置

1. 执行 vim 命令,打开 es2ctsdb_count.json 文件。
vi es2ctsdb_count.json
{ "taskType": "count", "logLevel": -4, "parallel": 10, "taskSplitCondition": { "startTime": "2023-08-26 00:00:00", "endTime": "2023-09-16 00:00:00", "splitInterval": "1d", "timezone": "Asia/Shanghai", "tags": { "tags": ["ldap-25"] } }, "source": { "type": "elasticsearch", "params": { "endpoint": "http://127.0.0.1:9200", "username": "", "password": "", "index": "test", "timeKey": "timestamp", "timeType": 3 } }, "target": { "type": "influxdb", "params": { "endpoint": "http://127.0.0.1:10002", "username": "", "password": "", "database": "ctsdb4es", "table": "test", "timeKey": "time", } } }
配置类别
配置项
是否必须
类型
默认值
描述
基本配置
taskType
string
任务类型,目前只支持 count,即记录数校验。
logLevel
int
0
-4表示打印 Debug 级别及以上日志。
0表示打印 Info 级别及以上日志。
4表示打印 Warn 级别及以上日志。
8表示打印 Error 级别及以上日志。
parallel
int
1
任务并发数,默认1,可根据实际负载情况配置。
channelSize
int
2048
缓存长度,根据下面 splitInterval 范围的时间预估数据条数,比如1h有3600条数据,则配置大于3600即可。
startTime
string
校验数据的起始时间。
endTime
string
校验数据的结束时间。
timezone
string
"Asia/Sanghai"
时区。
splitInterval
string
校验工具会按照 splitInterval 来划分 task, 每 splitInterval 创建一个 task (格式1d,1h,1m,1s),请注意确保切分后的单个 count 查询不会超时。
tags
json
如果想在时间切分的基础上,再根据 tag 来进行切分,则需要配置用于切分 tag 的每个值。如果配置了多个tag,那么会对这些 tag 进行全排列,每一个排列生成一个任务。举例,假设有两类 tag,那么需要配置为 "tags": {"region": ["sh", "bj"], "device":["1", "2"]}。
Source 数据库配置(Elasticsearch)
type
string
数据库类型,填 elasticsearch。
username
string
用户名。
password
string
密码。
endpoint
string
访问地址。
index
string
校验的索引。
timeKey
string
数据表的时间列,必填,用于任务切分。
timeType
int
时间列类型,有如下四种。
第一种的格式(ISO-8601时间)是2024-09-03T11:53:44.120。
第二种的格式(秒级时间戳)是1725865926。
第三种的格式(毫秒时间戳)是1725865926000。
第四种的时间格式(年月日)是20240909。
Target 数据库配置(InfluxDB)

type
string
数据类型,填 influxdb。
endpoint
string
endpoint 中的 ip 和 port 从 腾讯云控制台 获取 CTSDB 3.0 实例的时序节点内网地址。
database
string
校验的表所在的数据库。
table
string
校验的数据表。
timeKey
string
数据表的时间列,必填,用于任务切分。
username
string
CTSDB 3.0 的实例名,ctsdbi- 开头。
password
string
实例访问密码。

步骤3:启动校验

1. 确认校验工具 dbverify 和校验配置在同一个文件夹下,如下所示。

2. 执行以下命令启动记录数目校验。
./dbverify -config es2ctsdb_count.json
启动后,会输出一些查询耗时信息和校验的进度条,如下所示。


步骤4:分析校验日志

1. 校验完成后,将在当前目录下生成一个 logs 目录,进入该目录,如下所示。每一个文件的作用,请参见下表,分别查看对应日志信息。

校验生成的文件名
说明
checkpoint.log
断点续传日志,中断后会从记录的点继续。
comparator.json
校验耗时统计。
influxdb.json
influxdb 耗时统计。
elasticsearch.json
elasticsearch 耗时统计。
mismatch.log
不匹配日志。
result.log
结果日志。
verify.log
校验日志。
2. 查看结果日志 result.log,如下所示。如果 Verification result 的值为 true 则表示校验通过; Verification result 的值为 false,则校验未通过。

3. 若校验未通过,将没有通过的任务记录到 mismatch.log 中,如下所示。