Tidb.yml 配置 enable-table-lock 未生效是怎么回事

按照上图修改配置文件后,运行命令滚动升级

ansible-playbook rolling_update.yml

但是未生效,是为什么?

1 个赞

你指的的端口不生效?还是 enable-table-lock?

2个都没有生效。 我这里主要在意的是 enable-table-lock 配置项。我的 tidb_version 是 v3.0.2,查了下源码好像不支持 enable-table-lock,这是否意味着无法使用 Spark connector 去写数据。我查看了注释是说 tispark will send lock table command to TiDB via JDBC。不知道是不是这个意思?

请参考文档 https://github.com/pingcap/tispark/blob/master/docs/datasource_api_userguide.md#tidb-version-and-configuration-for-write

如果是tidb-3.0.2的话,是不支持table lock的,但也可以通过tispark写入,只要开启这个配置spark.tispark.write.without_lock_table,缺点是不支持ACID

ACID支持需要tidb-4.0

1 个赞

谢谢。我想问一下 4.0 可以使用 Ansible 在生产环境中部署吗?如果可以的话,需要修改哪个配置文件?或者给个文档

4.0还没发布,目前只能用master branch作测试,还不能部署到生产环境

我配置了 spark.tispark.write.without_lock_table 选项,跑了一个任务写了50万条数据后。然后数据表一直无法访问,已经持续了半个小时。这是什么原因?

请问50万条数据的任务已经成功执行结束了吗?表无法访问是指运行什么语句报什么错?

任务已经成功结束了。执行下面的 sql

SELECT * FROM target_cases LIMIT 10

一直在挂起的状态。虽然第一次执行返回数据了。但是第二次查询就被挂起了,只有 Ctrl + C 强行退出才可以再次进入,不过第二次查询还是会挂起。

请问一下tidb和tispark的版本?

tidb版本是 3.0.2, 用的 tispark-assembly 2.2.0。 这是代码,https://paste.ubuntu.com/p/Sdd7Sc4mCz/ 。main 函数的传递的参数为 2, 500000

然后发现现在可以自由访问了。大概 2小时20分钟是处于被挂起的状态。

请问数据有成功写入吗?

数据有写入。count(*) 查询还是挂起中,不知道有没有全部写入…

怀疑可能之前有写数据失败的任务,导致有数据prewrite成功,但是没有commit,GC会在1小时后清理这些数据,但是在此之前这些数据将无法访问。

这是tispark写入目前的问题,将会在tidb-4.0支持大事务后解决。

如果是线上业务的话,建议先用jdbc写入。

好的。谢谢。如果我 truncate 表后再插入,这个会导致你说的无法访问的问题吗?

有可能的

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