数据存储错误

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:

【概述】 在k8s系统上部署 TiDB Docker 部署方案测试tidb性能

【应用框架及开发适配业务逻辑】

【背景】存储数据,数据处理

【现象】数据库执行DDL较慢

【问题】 试验后发现kv存储在了tidb挂载的硬盘,启用3个tikv节点中没有内容,存储数据发现数据只存在了tidb的挂载的硬盘里(路径是/tmp),这是集群没有启动成功吗?补充:tidb配置中唯一配过路径的是tmp-storage-path = ‘/tmp/tidb /data’
,但是kv存储的路径是/tmp/kv。

【TiDB 版本】 v5.0.1

1 个赞

建议参考一下官方方案或者楼下的方案。 但是一定要注意警告内容~

警告:

本文提供的 Docker 部署方案已停止维护。如果只是为了测试 TiDB,推荐参考TiDB 数据库快速上手指南进行部署。对于 生产环境 ,不要使用 Docker 进行部署,而应使用 TiUP 部署 TiDB 集群

https://docs.pingcap.com/zh/tidb/stable/test-deployment-using-docker#tidb-docker-部署方案

k8s 需要参考

https://docs.pingcap.com/zh/tidb-in-kubernetes/stable/tidb-operator-overview

关注配置要求这块需要参考:
https://docs.pingcap.com/zh/tidb-in-kubernetes/stable/prerequisites

1 个赞

使用tidb operator部署我也有尝试过,在启动集群时配置3个pd的持久化需要注意什么?我配置完先有3个配置容器都失败了。
这是pd部分的配置
pd:
baseImage: harbor.dcos.ncmp.unicom.local/isrsprod/pingcap/pd

config: |
  lease = 3
  enable-prevote = true
  data-dir = "/tmp/pd/data"
  log-dir = "/tmp/pd/data/log"
## The desired replicas
replicas: 3
storageClassName: tidb 

requests:
#   cpu: 1000m
#   memory: 1Gi
  storage: 50Gi
# limits:
#   cpu: 2000m
#   memory: 2Gi

mountClusterClientSecret: true

这是报错:pod has unbound immediate PersistentVolumeClaims (repeated 6 times)
AttachVolume.Attach failed for volume “pd2” : could not add PersistentVolume……
这是所有配置tidb-cluster.yaml (2.7 KB)

问题是我现在里面已经有数据了,不想把集群删了重新建立,想先排查一下问题,但是我从来没有用过不清楚怎么弄,也不确定是不是我配置出错了。tidb配置.txt (8.0 KB)

这个排查就太难了,你需要提供很多日志,才会有社区专家能够帮到你,不过也不一定会成功(环境太复杂了)

最简单的方案:
你能把数据导出来
然后重建环境后,再把数据导入到新环境,这样会靠谱点

好的谢谢,还有我想确认一下tidb的数据是应该存在tikv下吧,就是kv是不是应该在tikv的持久化卷里?

对,KV是存放数据的,你可以自己看看

现在有个奇怪的现象,我有1个tidb,3个pd,3个tikv,我把tikv删除发现数据库还是能访问,这是什么情况?

kv 是带多副本的,你删1个,当然可以跑阿

删2个就不一定了… region 会出现数据丢失的情况…

我的kv没有存在tikv里,存在了tidb里这是什么原因?

这是我tikv里存储的所有东西

你上面 图 ls /tmp 是在哪里执行的?pod 里?
建议你看看 你的 pv 是怎么创建的,tidb- cluster.yaml 里 tikv 使用的是哪个 pv

我是按照[TiDB Docker 部署方案 | PingCAP Docs https://docs.pingcap.com/zh/tidb/v3.0/test-deployment-using-docker#tidb-docker-部署方案],tikv和tidb绑定的pv不是同一个。这是我的配置文件配置文件.docx (97.5 KB)

我想问一下如果就集群启动失败就只有tidb容器在运行,那么tidb的数据会默认存在哪里?

@spc_monkey 继续帮忙看看~

tidb 不会存储数据

方便把你的创建步骤发一下不

上面的配置文件里就有了,您具体要什么创建步骤呢?我先创建pd三个容器,tidb1个容器,tikv3个容器,tidb1个容器然后按顺序在容器里启动服务。
./pd-server --config /config/pd.toml > /home/pd1.log &

./pd-server --config /config/pd.toml > /home/pd2.log &

./pd-server --config /config/pd.toml > /home/pd3.log &

./tikv-server --config /config/tikv.toml > /home/tikv1.log &

./tikv-server --config /config/tikv.toml > /home/tikv2.log &

./tikv-server --config /config/tikv.toml > /home/tikv3.log &

./tidb-server --config /config/tidb.toml > /home/tidb.log &