tikv-importer的问题

【需求】:
目前在使用tikv集群作为kv存储,想通过做一个离线数据导入的功能;看资料说tikv可以通过tikv-importer实现sst文件的导入功能。BTW:目前使用的客户端是根据protobuf实现的C++客户端
【现有资料】
https://github.com/tikv/importer tikv-importer的工具
https://github.com/pingcap/kvproto importer-kv和sst-importer的protobuf定义
【问题】:
请问下如果使用tikv-importer做为数据导入的组件,需要怎么做?;

看了Lightning的资料很迷惑,如果Lightning工具和tikv集群不在同一台机器上是否可以?

如果使用tikv-importer是否可以实现以下的部署方式?

机器1 ------------------- 机器2 -------------------------------------- 机器3
importer-client ---------> tikv-importer Server ---------------> tikv集群

如果您想使用 tikv-importer 实现 SST 文件的导入功能,可以按照以下步骤进行操作:

  1. 部署 tikv-importer 组件,可以参考 tikv-importer 的官方文档 [1]

  2. 准备好 SST 文件,可以使用 TiDB Lightning 工具生成 SST 文件,也可以使用其他工具生成 SST 文件。

  3. 使用客户端向 tikv-importer 发送导入请求,请求中包含 SST 文件的路径和目标表的信息。具体的请求格式可以参考 kvproto 中的 importer-kv.proto 和 sst-importer.proto 文件 [2]

  4. tikv-importer 接收到导入请求后,会将 SST 文件中的数据导入到 tikv 集群中。

关于 Lightning 工具和 tikv-importer 的区别,Lightning 工具是 TiDB 官方提供的数据导入工具,支持从 MySQL、TiDB、TiKV 等数据源导入数据。而 tikv-importer 是一个独立的组件,专门用于将 SST 文件导入到 tikv 集群中,可以参考官方文档 [1]

关于 Lightning 工具和 tikv-importer 是否可以在不同的机器上部署,答案是可以的。Lightning 工具和 tikv-importer 都可以在任何一台机器上部署,只要它们可以访问到 TiDB 和 tikv 集群即可。

最后,关于您提到的部署方式,即客户端 → tikv-importer Server → tikv 集群,是可以实现的。客户端可以向 tikv-importer 发送导入请求,tikv-importer 接收到请求后将 SST 文件导入到 tikv 集群中。具体的实现方式可以参考 kvproto 中的 importer-kv.proto 和 sst-importer.proto 文件 [2]

请问下TiDB Lightning 工具如何生成sst 文件,这个官方文档有介绍吗?

TiDB Lightning 工具可以将 TiDB 中的数据导出为 SST 文件,具体操作步骤如下:

  1. 配置 TiDB Lightning 工具:

    配置文件示例:

    [lightning]
    # lightning 的日志文件路径
    log-file = "/path/to/lightning.log"
    # lightning 的进度文件路径
    progress-file = "/path/to/lightning.progress"
    # lightning 的配置文件路径
    config-file = "/path/to/lightning.toml"
    
    [tidb]
    # TiDB 的地址
    host = "127.0.0.1"
    # TiDB 的端口号
    port = 4000
    # TiDB 的用户名
    user = "root"
    # TiDB 的密码
    password = ""
    
    [mydumper]
    # mydumper 的导出文件路径
    data-source-dir = "/path/to/mydumper"
    # mydumper 的线程数
    threads = 16
    
    [myloader]
    # myloader 的导入文件路径
    data-source-dir = "/path/to/myloader"
    # myloader 的线程数
    threads = 16
    

    其中,[tidb] 部分是 TiDB 的连接信息,[mydumper] 部分是导出数据的配置,[myloader] 部分是导入数据的配置。

  2. 导出 TiDB 数据:

    使用 TiDB Lightning 工具导出 TiDB 数据,包括 SST 文件:

    tiup tidb-lightning \
        --config /path/to/lightning.toml \
        --tidb-host 127.0.0.1 \
        --tidb-port 4000 \
        --tidb-user root \
        --tidb-password "" \
        --backend local \
        --enable-checkpoint=false \
        --log-file /path/to/lightning.log \
        --progress-file /path/to/lightning.progress
    

    其中,--backend local 表示将数据导出到本地文件,--enable-checkpoint=false 表示不启用 checkpoint,--log-file--progress-file 分别指定日志文件和进度文件的路径。

    导出的 SST 文件会存储在 --mydumper-data-dir 参数指定的目录下。

好的 谢谢,一直以为lightning 只能导入数据到tidb 集群,不知道lightning 还可以导出tidb 的数据,太强大了,试验下 :+1:

一定是可以的。

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。