步骤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 | 无 | |
| 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 中,如下所示。
