vietsDeng
(Viets Deng)
2020 年5 月 13 日 06:25
1
为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【TiDB 版本】:v3.0.5
【问题描述】:importer和tidb-lightning的镜像都是pingcap/tidb-lightning:v3.0.1。使用官方helm chart在k8s上部署的TiDB集群,然后利用mydumper从mysql导出数据,再利用tidb-lightning进行导入。其中有一个表较大,数据加索引约为7G(其他表正常导入)。曾多次出现不同问题,最近一次为checksum mismatched remote vs local(实际"checkpoint":{"enable":false),日志如下:
logs-from-tidb-lightning-in-cloud-lightning-tidb-lightning-6cx84.txt (58.0 KB)
另:曾出现过内存不足,导致importer被oom杀死的问题,但是import已设置write-buffer-size = “1GB”(机器为16GB,importer占用为10+%左右,但是bugg/cache占用了10G,打开lightning后逐步上升),这个又可以如何限制呢?
yilong
(yi888long)
2020 年5 月 13 日 07:06
2
vietsDeng
(Viets Deng)
2020 年5 月 13 日 07:12
3
tidb-lightning-ctl --config conf/tidb-lightning.toml --checkpoint-error-destroy=all
已经执行过了,但是提示需要设置tidb.port和tidb.addr,默认tidb-lightning.toml里面没有这些配置,我已经修改添加了配置,然后还是一样提示。实际上应该改哪个配置文件呢?
另:曾出现过内存不足,导致importer被oom杀死的问题,但是import已设置write-buffer-size = “1GB”(机器为16GB,importer占用为10+%左右,但是bugg/cache占用了10G,打开lightning后逐步上升),这个又可以如何限制呢?
谢谢~
yilong
(yi888long)
2020 年5 月 13 日 09:47
4
tidb-lightning-ctl --config conf/tidb-lightning.toml --checkpoint-error-destroy=all 执行时具体报错是什么?
参考此文档,可以尝试调小这些参数,降低内存使用
https://pingcap.com/docs-cn/v3.0/reference/tools/tidb-lightning/config/#tidb-lightning-任务配置
vietsDeng
(Viets Deng)
2020 年5 月 17 日 01:31
5
我这边调整配置后:
tikv-importer的配置
[metric]
job = "tikv-importer"
interval = "15s"
address = "localhost:9091"
[rocksdb.defaultcf]
# 数据在刷新到硬盘前能存于内存的容量上限。
write-buffer-size = "300MB"
# 内存中写缓冲器的最大数量。
max-write-buffer-number = 4
[import]
# 存储引擎文件的文件夹路径
# import-dir = "/mnt/ssd/data.import/"
# 处理 RPC 请求的线程数
num-threads = 6
# 导入 job 的并发数。
num-import-jobs = 6
# 同时打开引擎文档的最大数量。
max-open-engines = 6
tidb-lightning的配置
[lightning]
level = "info"
index-concurrency = 2
table-concurrency = 4
导入6G多数据观察,tidb-importer自身占用内存不多,在10%以内,但是buff/cache一直增加到12G+(机器16G),导致kswapd0被拉起,然后cpu也爆了,之后tikv-importer被杀死了:
/var/log/messages:May 17 08:46:37 k8s-node3 kernel: Killed process 21807 (tikv-importer), UID 0, total-vm:64302516kB, anon-rss:1229264kB, file-rss:0kB, shmem-rss:0kB
然后基于lightning的三次重连机制,重新连上tike-importer(importer被重启了),然后lightning接着处理数据,却发现数据不一致了(因为importer被重启,前面的数据已被清空?):
error="checksum mismatched remote vs local => (checksum: 4170902639172750923 vs 13751442013468909453) (total_kvs: 5930807 vs 71169684) (total_bytes:7023389858 vs 10333979527)"]
然后就总是导入不进去了。。小白我这边准备看看是否可以设置linux内存使用和释放限制,或者请问有其他好方法么?或者importer有相关参数可以设置?
vietsDeng
(Viets Deng)
2020 年5 月 17 日 05:23
6
我这边解决问题了,原因是我使用本地存储(local-storage-provisoner)时,创建pv的命令是
mkdir -p /data/k8s/test-tidb-tikv && mount -t tmpfs test-tidb-tikv /data/k8s/test-tidb-tikv/
(当初在网上看的)只有这样才能把目录挂成一个设备,现在才懂tmpfs是挂到内存上去了,导致一导入大数据就把内存爆了
现在我换回手动创建pv了,数据是放到硬盘上,能正常导入数据了~~
ps:主要是k8s的存储种类使用不熟悉,导致问题出现。
system
(system)
关闭
2022 年10 月 31 日 19:06
8
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。