show tablet tablet_id 语句,然后执行后面的 show proc 语句,查看这个 tablet 对应的副本信息,检查副本是否完整。同时还可以通过 show proc "/cluster_balance" 信息来查询集群内副本调度和修复的进度。
关于数据副本管理相关的命令,可以参阅 数据副本管理。show tablet 27306172 语句,然后执行结果中的 show proc 语句,查看tablet各个副本的情况。结果中的 versionCount 即表示版本数量。如果发现某个副本的版本数量过多,则需要降低导入频率或停止导入,并观察版本数是否有下降。如果停止导入后,版本数依然没有下降,则需要查看对应 BE 节点的 be.INFO 日志,搜索 tablet id 以及 Compaction 关键词,检查 Compaction 是否正常运行。show tablet 110309738 语句,然后执行结果中的 show proc 语句,查看 tablet 各个副本的情况,进一步排查。show backends 命令,其中 MaxDiskUsedPct 展示的是对应 BE 上,使用率最高的那块磁盘的使用率,如果超过95%,则会报这个错误。您可选择手动删除部分数据释放空间,或者扩容云盘解决此问题。若磁盘使用率异常增高,可通过工单联系我们具体排查。failed to initialize storage reader. tablet=63416.1050661139.aa4d304e7a7aff9c-f0fa7579928c85a0, res=-214, backend=192.168.100.10
show tablet 63416 语句并执行结果中的 show proc xxx 语句来查看对应 tablet 的各个副本情况。通常我们需要关心 Version 这一列的数据。
正常情况下,一个 tablet 的多个副本的 Version 应该是相同的。并且和对应分区的 VisibleVersion 版本相同。show partitions from tblx 来查看对应的分区版本(tablet 对应的分区可以在 show tablet 语句中获取。)show proc 语句中的 CompactionStatus 列中的 URL(在浏览器打开即可)来查看更具体的版本信息,来检查具体丢失的是哪些版本。
如果长时间没有自动修复,则需要通过 show proc "/cluster_balance" 语句,查看当前系统正在执行的 tablet 修复和调度任务。可能是因为有大量的 tablet 在等待被调度,导致修复时间较长。可以关注 pending_tablets 和 running_tablets 中的记录。admin repair 语句来指定优先修复某个表或分区,具体可以参阅 help admin repair。admin set replica status 命令强制将有问题的副本下线。具体可参阅 help admin set replica status 中将副本状态置为 bad 的示例。(置为 bad 后,副本将不会再被访问。并且会后续自动修复。但在操作前,应先确保其他副本是正常的)。brpc_socket_max_unwritten_bytes:默认 1GB,如果未发送数据超过这个值,则会报错。可以适当修改这个值以避免 OVERCROWDED 错误。(但这个治标不治本,本质上还是有拥塞发生)。tablet_writer_ignore_eovercrowded:默认为 false。如果设为true,则会忽略导入过程中出现的 OVERCROWDED 错误。这个参数主要为了避免导入失败,以提高导入的稳定性。brpc_max_body_size:默认 3GB。文档反馈