【需求】:
目前在使用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 文件的导入功能,可以按照以下步骤进行操作:
-
部署 tikv-importer 组件,可以参考 tikv-importer 的官方文档 [1]。
-
准备好 SST 文件,可以使用 TiDB Lightning 工具生成 SST 文件,也可以使用其他工具生成 SST 文件。
-
使用客户端向 tikv-importer 发送导入请求,请求中包含 SST 文件的路径和目标表的信息。具体的请求格式可以参考 kvproto 中的 importer-kv.proto 和 sst-importer.proto 文件 [2]。
-
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]。
胡杨树旁
3
请问下TiDB Lightning 工具如何生成sst 文件,这个官方文档有介绍吗?
TiDB Lightning 工具可以将 TiDB 中的数据导出为 SST 文件,具体操作步骤如下:
-
配置 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]
部分是导入数据的配置。
-
导出 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
参数指定的目录下。
胡杨树旁
5
好的 谢谢,一直以为lightning 只能导入数据到tidb 集群,不知道lightning 还可以导出tidb 的数据,太强大了,试验下
system
(system)
关闭
7
此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。