NFS 介质出现问题,日志备份已经停止,但是无法停止正在运行的备份,使用 ALTER SYSTEM CANCEL BACKUP 和 ALTER SYSTEM CANCEL ALL BACKUP FORCE; 也无法停止。
排查方法
看操作系统的报错日志。
cat /var/log/messages |grep nfs返回结果如下:
Jan 18 05:23:41 observer1 kernel: nfs: server xx.xx.xx.xx not responding, still trying Jan 18 05:23:41 observer1 kernel: nfs: server xx.xx.xx.xx not responding, still trying Jan 18 05:23:41 observer1 kernel: nfs: server xx.xx.xx.xx not responding, still trying查看 nfsiostat。
如果 op/s 很大,但是 kB/s 几乎为 0,则大概率 NFS hung 住了。具体命令如下:
nfsiostat 2返回结果如下:
XX.XX.XX.XX:/fs/nfs_pool/nfspool mounted on /obbackup: op/s rpc bklog 1137.50 0.00 read: ops/s kB/s kB/op retrans avg RTT (ms) avg exe (ms) 0.000 0.000 0.000 0 (0.0%) 0.000 0.000 write: ops/s kB/s kB/op retrans avg RTT (ms) avg exe (ms) 0.000 0.000 0.000 0 (0.0%) 0.000 0.000 XX.XX.XX.XX:/fs/nfs_pool/nfspool mounted on /obbackup: op/s rpc bklog 1062.00 0.00 read: ops/s kB/s kB/op retrans avg RTT (ms) avg exe (ms) 0.000 0.000 0.000 0 (0.0%) 0.000 0.000 write: ops/s kB/s kB/op retrans avg RTT (ms) avg exe (ms) 0.000 0.000 0.000 0 (0.0%) 0.000 0.000 XX.XX.XX.XX:/fs/nfs_pool/nfspool mounted on /obbackup: op/s rpc bklog 1119.00 0.00 read: ops/s kB/s kB/op retrans avg RTT (ms) avg exe (ms) 0.000 0.000 0.000 0 (0.0%) 0.000 0.000 write: ops/s kB/s kB/op retrans avg RTT (ms) avg exe (ms) 0.000 0.000 0.000 0 (0.0%) 0.000 0.000通过 pstack 来验证。
注意,在 pstack 之前,需要把 Leader 和 RS 给切走,如果 pstack 不出来,大概率是 NFS hung 住了。
通过执行 strace 命令。
如果 strace 到 nfs 挂在的目录上 hung 住了,很可能就是 NFS hung 住了,具体操作如下:
strace df —h 或者 strace ls backup_path
恢复的步骤
在进行以下操作时,需要先暂停备份和归档。
优先让 NFS 服务恢复正常,只要 NFS 服务能恢复正常,ObServer 会自动恢复,不需要运维操作。
- 先排查 NFS Server 端的问题,如果 NFS Server 有问题,麻烦先找 NFS 厂家运维支持。
- 再排查 ObServer 和 NFS Server 之间的网络是否有问题。
- 观察 ifconfig 里面网卡的 Error 或者 DROP 个数。
- 查看 tsar --live 中的 retran, 如果超过 0.2 一般认为网络有问题。
- 可以尝试访问备份的目录,或者跑一个 fio 测试下 NFS 的情况,观察 nfsiostat 2 的监控是否正常。
如果 NFS 服务无法恢复正常,那么只能考虑更换 NFS 服务,操作流程如下:
umount 所有 NFS client。
注意
不能用 umount -l (lazy)的方式,这个没有实际卸载。
重启 NFS Server 所在的物理机器。
重启 observer 物理机器(需要一台一台重启)。
适用版本
OceanBase 数据库 V2.2.x、V3.x 版本。