tiflash 同步一直无进度。

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:v4.0.0-rc
  • 【问题描述】: 对1000多万行的表开启 Tiflash以后,progress一直没有进展,好几个小时了,非常慢,如何能加快Tikv 数据ship 到Tiflash的速度呢?有参数可以调吗?

  1. 能否反馈下 tiup cluster display 的拓扑结构
  2. 麻烦反馈 tiflash 的日志,多谢
  3. 机器配置是否满足要求?
  4. replication.max-replicas 参数值是几?

这是一个单节点,40cpu,200多G内存,一块ssd的测试环境, 我们现在还在调研使用tidb, 开启Tiflash的表是一个1000多万行,60列左右的表。max-replicas 是3. 因为是局域网的服务器, 日志导出比较麻烦。 我们现在想知道有没有什么参数可以让整个环境全速进行Tiflash数据移动?因为是测试环境,我们没有任何其他读写load。 下图是部分Tiflashlog截图, Read 2 rows每次?

参考这个帖子,你们是不是只有一个 tikv? Tiflash 无法获取到数据v2

如果是, 设置参数 replication.max-replicas: 1试试

我们实际上是单节点三个tikv 实例(不同port)

将max-replicas设置为1了,也重启了机器。

但是看Tiflash的log, 似乎还是read 2 rows?

  1. 查看进度还是 0 吗?

  2. 能否上传完整的 tiflash.log , 多谢

  3. 尝试重启下集群,多谢 Tiflash 无法获取到数据

  4. 这个参数修改了吗?

一夜过去了,毫无进展

重启过集群了

完整的Tiflash.log 上传有点麻烦。

参数正确设置了,

另外我的测试数据库里面有一个别的表,它已经完成了Tiflash的复制(不记得花了多长时间了,但是肯定没有现在的这么慢)

想知道还有什么参数可以调的吗?

tiflash日志中仅有这些类似 “Read 2 rows” 的日志,其实说明 pd 没有把数据调度到tiflash节点。
建议先尝试把集群升级至 v4.0.0-rc.2,pd 修复了一些调度不生效相关的 bug。

我把之前的环境destroy了,然后重新搭建了一个 单节点,单实例 的环境 版本是v4.0.0-rc 然后升级到v4.0.0-rc.2, 也重启过集群了, 但是半小时多过去了,progress,还是0?

导入了一个60多万行的表

max-replicas 也设置为了1

你好,

执行下 config placement-rules show 上传下返回结果

Tiflash 目前的log

pd 目前的log

你好,

请看下私信,感谢

感谢各位的回复~

我最后又把上一次的环境destroy了, 然后重新搭建了一个 v4.0.0-rc.2的单实例,单节点环境。 然后开启了Tiflash之后, 马上就有progress了。 不容易啊~

我这次搭建直接在topo指定了max replicas为1(在第二次搭建的时候,我没有这样指定,而是搭建好以后用pd-ctl 改的)

回想这个过程,,我们在Tiflash log中,是否能打印一下,Tiflash开始复制的log,然后能否有调节Tiflash 复制数据的参数?我们的使用场景是少写多读, 我在写的时候,可以不读, 这样我就希望我写的时候,能够以最快的速度,全速进行数据复制到Tiflash?

你好, 可以通过以下 api 来修改 placement rules 的值。

curl -X POST -d '{
    "group_id": "pd",
    "id": "default",
    "start_key": "",
    "end_key": "",
    "role": "voter",
    "count": 2,
    "location_labels": [
      "host"
    ]
  }' http://172.16.5.169:22379/pd/api/v1/config/rule

或者用文档中的方式,先写成 rules 文件,在使用 pd-ctl 导入:

1赞

你好

在Tiflash log中,是否能打印一下,Tiflash开始复制的log

TiFlash 目前 是被动接受从 PD 的调度,从 TiKV 处接收数据的副本。 接收副本的时候会打印类似 Try to apply snapshot: [region <region_id>... 的日志,但暂时不发生同步的错误原因的确不太直观。

我就希望我写的时候,能够以最快的速度,全速进行数据复制到Tiflash?

对于先在 TiKV 写入好数据,再通过 DDL 同步到 TiFlash 的情况,目前可以按照 TiFlash 配置参数-PD 调度参数 调整 PD 参数,加快 snapshot 同步的速度。
不过调整完之后,因为生成 snapshot,传输到 TiFlash 也会消耗一部分 TiKV 的 CPU、磁盘 IO、网络 IO。如果对延迟抖动比较敏感,建议同步完之后调整回原值。
另外,对于已经同步完成的表,后面少量的写数据同步是通过 raft-log 进行,在读时即能通过 raft 的机制保证读到最新的数据,一般可以在ms~百ms内完成同步。

1赞

:clap:,这点我们会反馈下,这边也评估下。

一个小实验,

  1. 把count 改为2

  2. 打开一个表的Tiflash , 长时间无progress

  3. 把count改为1

  4. 把count改回到1 以后,很快Tiflash 完成复制

:clap:,感谢反馈,这也是已知问题,我们会优化下文档和配置,在体验上更好些。

再次感谢反馈:call_me_hand:

https://github.com/pingcap/docs-cn/pull/3169