导入50GBmysql数据库导致tikv组件进程终止

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

  • 【TiDB 版本】:v3.0.9
  • 【问题描述】:导入50GBmysql数据库导致tikv组件进程终止

tikv异常退出: lient_posix.cc",“file_line”:207,“os_error”:“Connection refused”,“syscall”:“connect”,“target_address”:“ipv4:172.16.56.44:20162”}"] [2020/01/19 15:04:59.352 +08:00] [INFO] [] [“Subchannel 0x7f130f96da00: Retry in 999 milliseconds”] [2020/01/19 15:04:59.352 +08:00] [WARN] [raft_client.rs:116] [“batch_raft RPC finished fail”] [err=“RpcFinished(Some(RpcStatus { status: RpcStatusCode(14), details: Some(“Connect Failed”) }))”] [2020/01/19 15:04:59.352 +08:00] [WARN] [raft_client.rs:130] [“batch_raft/raft RPC finally fail”] [err=“RpcFinished(Some(RpcStatus { status: RpcStatusCode(14), details: Some(“Connect Failed”) }))”] [to_addr=172.16.56.44:20162] [2020/01/19 15:04:59.472 +08:00] [FATAL] [lib.rs:503] [“index 1329865020 out of range for slice of length 65527”]

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

  1. 麻烦上传一下完整的 tikv.log 以及 tikv_stderr.log 日志文件
  2. 导入数据是通过什么方式导入的?loader 还是 lighting?

使用mysql客户端导入数据的,tikv基于容器,日志我想个法子上传

tikv_stderr.log 日志文件有内容吗,如果有内容麻烦也一起上传一下

客户端导入数据终止,报了什么错误? tidb 的日志麻烦也上传一下

百度网盘日志未见异常,麻烦表象报错,逐步分析问题。提供以下信息:

  1. 使用 mysql 客户端导入数据具体操作方式方法步骤提供,包括导入操作 SQL 样例;
  2. 提供 mysql 客户端导入过程中返回报错;
  3. 提供 mysql 客户端连接到 TiDB Server 的日志报错;

tikv 容器会在数据导入过程挂掉,再次启动后报错:[2020/01/20 11:45:16.225 +08:00] [ERROR] [transport.rs:163] ["send raft msg err"] [err="Other(\"[src/server/raft_client.rs:214]: RaftClient send fail\")"] [2020/01/20 11:45:16.225 +08:00] [WARN] [raft_client.rs:205] ["send to 172.16.56.44:20161 fail, the gRPC connection could be broken"] [2020/01/20 11:45:16.225 +08:00] [ERROR] [transport.rs:163] ["send raft msg err"] [err="Other(\"[src/server/raft_client.rs:214]: RaftClient send fail\")"] [2020/01/20 11:45:16.257 +08:00] [INFO] [raft.rs:1294] ["starting a new election"] [term=15] [tag="[region 1176] 1179"] [id=1179] [2020/01/20 11:45:16.258 +08:00] [INFO] [raft.rs:913] ["became pre-candidate at term 15"] [tag="[region 1176] 1179"] [term=15] [id=1179] [2020/01/20 11:45:16.258 +08:00] [INFO] [raft.rs:1006] ["1179 received message from 1179"] [term=15] [msg=MsgRequestPreVote] [from=1179] [id=1179] [id=1179] [2020/01/20 11:45:16.258 +08:00] [INFO] [raft.rs:1032] ["[logterm: 15, index: 17] sent request to 1177"] [msg=MsgRequestPreVote] [tag="[region 1176] 1179"] [term=15] [id=1177] [log_index=17] [log_term=15] [id=1179] [2020/01/20 11:45:16.258 +08:00] [INFO] [raft.rs:1032] ["[logterm: 15, index: 17] sent request to 1178"] [msg=MsgRequestPreVote] [tag="[region 1176] 1179"] [term=15] [id=1178] [log_index=17] [log_term=15] [id=1179] [2020/01/20 11:45:16.258 +08:00] [INFO] [transport.rs:144] ["resolve store address ok"] [addr=172.16.56.44:20160] [store_id=1] [2020/01/20 11:45:16.258 +08:00] [INFO] [raft_client.rs:48] ["server: new connection with tikv endpoint"] [addr=172.16.56.44:20160] [2020/01/20 11:45:16.258 +08:00] [INFO] [transport.rs:144] ["resolve store address ok"] [addr=172.16.56.44:20161] [store_id=4] [2020/01/20 11:45:16.259 +08:00] [INFO] [raft_client.rs:48] ["server: new connection with tikv endpoint"] [addr=172.16.56.44:20161] [2020/01/20 11:45:16.259 +08:00] [INFO] [<unknown>] ["Connect failed: {\"created\":\"@1579491916.258671029\",\"description\":\"Failed to connect to remote host: OS Error\",\"errno\":111,\"file\":\"/rust/registry/src/github.com-1ecc6299db9ec823/grpcio-sys-0.5.0-alpha.5/grpc/src/core/lib/iomgr/tcp_client_posix.cc\",\"file_line\":207,\"os_error\":\"Connection refused\",\"syscall\":\"connect\",\"target_address\":\"ipv4:172.16.56.44:20160\"}"] 稍后给出mysql导入命令和报错,但我觉得参考意义不大因为只是提示导入超时

报错日志只能看到结果,需要看一下 TiKV 服务对应的 systemd 的日志和 Linux message 日志。

[root@dev-tidb database]# mysql -h 127.0.0.1 -P 4000 -u root <mysql-backup-2020-01-17-000001.sql

ERROR 9005 (HY000) at line 57: Region is unavailable

是的,这个只能说明当时 region 存在异常。

ERROR 9005 (HY000) : Region is unavailable

访问的 Region 不可用,某个 Raft Group 不可用,如副本数目不足,出现在** TiKV 比较繁忙**或者是 TiKV 节点停机 的时候,请检查 TiKV Server 状态/监控/日志

因为目前您已经确认了具体的 tikv server,现在要从 tikv server 服务来分区当时 tikv 服务的主机资源负载和 服务是否存在异常,这个可以看一下 Linux demsg 日志,里面对于 TiKV 服务的启动和退出会有相关的日志。可以通过日志排除 tikv server 是否因为 oom 或者其他的原因导致的 tikv server 被 kill 掉或者其他的原因。