tidb在k8s里的两个问题

我有两个tidb集群,集群A是在虚拟机环境下,tidb版本4.0。集群B是新建的,部署在k8s下,使用operator v1.1.11部署,k8s版本是1.18。两个集群部署在不同的虚拟化的物理机下,两台物理机配置基本相同。
然后我开始从A集群往B集群倒库。用的是navicat。有两个问题:
1、k8s集群导入速度慢。同样的数据库,我对比了一下,虚拟机tidb集群导入到k8s tidb集群的速度是虚拟机tidb集群导入到自身集群(就是复制一个数据库)的两倍。
2、导入其中一个几百兆小库时。从虚拟机tidb集群导入到k8s tidb集群,会报错,报错信息是:[ERR] 8004 - Transaction is too large, size: 104857600。而同样的库在虚拟机tidb集群复制时是不会报错的。

  1. 虚拟化也不一定和k8s都一样吧,你看看你们的网络配置是不是直通之类的。
  2. k8s 是直接在物理机创建的,还是在物理机上的虚拟机创建的?
  3. transaction 的报错,看看配置,应该没有开启大事务吧。

在value.yaml文件增加了
tidb:
config: |
[performance]
txn-total-size-limit = 10737418240
导数报错倒是解决了。
速度还是慢,而且不是慢2倍,是慢4倍…
k8s在同一台物理机的虚拟机上…

自问自答。我配置了tikv的 raftstore.sync-log属性。
raftstore.sync-log: false
速度差不多了。

  1. 修改这个参数可以提高性能,但是不安全,所以一般不建议修改。 对于你说的在虚拟机上再建立 k8s,那这些虚拟机满足生产或者测试的要求吗?
  2. 比如你的虚拟机是8c 16g 的配置直接安装tidb。如果是在相同配置的虚拟机上使用k8s, 那么pod 里的配置是多少呢? 或者说,pod里的配置和虚拟机的配置相同这样比较可能比较合理。