使用tidb官方工具:mydumper导出,loader导入工具,进行导入数据时,报错如下: **Error 9001: PD server timeout**

环境:tidb集群版本为:v3.0.1 3个tidb,3个pd,3个kv. image

使用tidb官方工具:mydumper导出,loader导入工具,进行导入数据时,报错如下: – loader导入数据报错:

2019/08/28 16:45:19 status.go:32: [info] [loader] finished_bytes = 3126016720, total_bytes = GetAllRestoringFiles3366163253, progress = 92.87 % 2019/08/28 16:45:24 status.go:32: [info] [loader] finished_bytes = 3126016720, total_bytes = GetAllRestoringFiles3366163253, progress = 92.87 % 2019/08/28 16:45:24 db.go:105: [warning] transaction execution costs 104.315016 seconds 2019/08/28 16:45:24 loader.go:124: [fatal] Error 9001: PD server timeout /home/jenkins/workspace/build_tidb_enterprise_tools_master/go/src/github.com/pingcap/tidb-enterprise-tools/loader/db.go:144: /home/jenkins/workspace/build_tidb_enterprise_tools_master/go/src/github.com/pingcap/tidb-enterprise-tools/loader/db.go:90:

使用pd-ctl工具命令行,查看pd状态正常: $ sh montidb.sh members ######### Get the information of pd member leader. ######### name: pd_TiPD1-1, member_id: 9714661433746586558, http://192.168.3.16:24801 http://192.168.3.16:24791

######### Get the information of pd member . ######### name: pd_TiPD1-1, member_id: 9714661433746586558, http://192.168.3.16:24801 http://192.168.3.16:24791 name: pd_TiPD1-1, member_id: 9714661433746586558, http://192.168.3.16:24801 http://192.168.3.16:24791 name: pd_TiPD1-1, member_id: 9714661433746586558, http://192.168.3.16:24801 http://192.168.3.16:24791 name: pd_TiPD2-1, member_id: 6690919350330193741, http://192.168.3.18:24801 http://192.168.3.18:24791 name: pd_TiPD3-1, member_id: 6627501151510773714, http://192.168.3.19:24801 http://192.168.3.19:24791

查询store存储就卡住一直不能返回结果: $ sh montidb.sh stores ######### Get the information of tikv stores . ######### ^C 登录到其中的一台kv节点服务器上,查看kv错误日志如下:

从日志报错来看,是kv和pd之间发送心跳包通讯,请求失败。但是,从kv服务器上telnet 192.168.3.16 24791服务端口是通的。

3.16上pd leader的日志有如下报错:

检查下 TiKV 日志有没有报错,从报错看可能有些 region 的 leader 节点有异常

image

prometheus监控显示,服务正常,但是,日志中有报错。

从内网的一台机器3.172服务器上,进行连接192.168.3.8的tidb发起连接,并进行查询:

此时,192.168.3.8的tidb实例的报错日志:

显示请求errors: loadRegion from PD failed, key失败。

新的pd leader上的日志如下:

3个kv节点的日志报错:

从以上日志来看,象是pd和kv之间的网络心跳不通。

但是,无论是从3个kv节点上去telnet3个pd的ip和端口,还是,从pd上telnet3个kv的ip和端口都是通的。

能提供一下 PD 的版本信息吗?另外如果有现场的话,可否抓个 goroutine?

./pd-server -V Release Version: v4.0.0-alpha-26-g96e25880 Git Commit Hash: 96e258805daee08029f6e5ba885c8861e33d9d73 Git Branch: master UTC Build Time: 2019-08-12 08:53:05

goroutine包,怎么抓取,请指教,谢谢!

看样子 PD 用的是 master 分支,可以把 PD 更新到最新的 master 版本吗?PD master 分支分别在 8.15 和 8.26 修复了两个会导致死锁的问题,对应的 PR 分别是 https://github.com/pingcap/pd/pull/1678,https://github.com/pingcap/pd/pull/1706

我是直接用的tidb-ansible-3.0.1的整个部署套件版本。 整个集群跑了一晚上后,tikv集群自动修复,以下日志为从其中的1个kv节点取得: 2338028 [2019/08/30 04:07:18.820 +08:00] [ERROR] [util.rs:287] [“request failed, retry”] [err=“Grpc(RpcFailure(RpcStatus { status: RpcStatusCode(4), details: Some(“Deadline Exceeded”) }))”] 2338029 [2019/08/30 04:07:18.820 +08:00] [ERROR] [client.rs:344] [“failed to send heartbeat”] [err=“Grpc(RpcFinished(Some(RpcStatu s { status: RpcStatusCode(14), details: Some(“keepalive watchdog timeout”) })))”] 2338030 [2019/08/30 04:07:18.820 +08:00] [ERROR] [util.rs:287] [“request failed, retry”] [err=“Grpc(RpcFinished(Some(RpcStatus { s tatus: RpcStatusCode(14), details: Some(“keepalive watchdog timeout”) })))”] 2338031 [2019/08/30 04:07:19.750 +08:00] [ERROR] [gc_worker.rs:786] [“failed to get safe point from pd”] [err=“Other(”[src/storag e/gc_worker.rs:66]: failed to get safe point from PD: Grpc(RpcFailure(RpcStatus { status: RpcStatusCode(4), details: Some( “Deadline Exceeded”) }))")"] 2338032 [2019/08/30 04:09:18.138 +08:00] [INFO] [raft.rs:2013] ["[term 18] received MsgTimeoutNow from 50082 and starts an electio n to get leadership."] [tag="[region 50081] 50083"] [from=50082] [term=18] [id=50083] 2338033 [2019/08/30 04:09:18.138 +08:00] [INFO] [raft.rs:1294] [“starting a new election”] [term=18] [tag="[region 50081] 50083"] [id=50083] 2338034 [2019/08/30 04:09:18.138 +08:00] [INFO] [raft.rs:886] [“became candidate at term 19”] [tag="[region 50081] 50083"] [term=1 9] [id=50083] 2338035 [2019/08/30 04:09:18.138 +08:00] [INFO] [raft.rs:1006] [“50083 received message from 50083”] [term=19] [msg=MsgRequestVote ] [from=50083] [id=50083] [id=50083] 2338036 [2019/08/30 04:09:18.138 +08:00] [INFO] [raft.rs:1032] ["[logterm: 18, index: 18] sent request to 50084"] [msg=MsgRequestV ote] [tag="[region 50081] 50083"] [term=19] [id=50084] [log_index=18] [log_term=18] [id=50083] 2338037 [2019/08/30 04:09:18.138 +08:00] [INFO] [raft.rs:1032] ["[logterm: 18, index: 18] sent request to 50082"] [msg=MsgRequestV ote] [tag="[region 50081] 50083"] [term=19] [id=50082] [log_index=18] [log_term=18] [id=50083]

tikv集群在遇到批量导入数据时,打散到kv的region数据通过raft一致性处理,没有达到最终一致后,会进入一种safe安全保护模式吗?从昨天的现象来看,是tikv和pd之间一直在尝试连接,却又连接失败

是不是替换过 tidb-ansible 里面的 binary,完全用 ansible 部署的话,不会串版本的

没有替换过,都是用的ansible工具下载的,各个组件如下:

经过查看3.19的pd的日志信息,发现在凌晨1点08分,2点08分,3点08分,数据均进行完成1次自动定期压缩,但是,消耗的时间有点长,长达1小时之久。

pd日志显示,在凌晨4点09分的时候,进行了自动重启,然后,就ok了。

看截图信息,版本有问题,不是 3.0.1 吧。

这个问题的根本原因,是tidb,tipd,tikv3者的版本不统一兼容的问题。后来,从官网下载3.0.1版本,重新部署,导入批量数据后,没有再产生pd server timeout的问题。