故障处理与回退
由于NVMe Cache不支持段页式,主机端存在拦截,但是如果数据库之前已经存在段页式表,产生对应的段页式日志会发送到备机进行回放,如果此时打开NVMe Cache特性可能就会一直报错,导致数据库HANG。
场景模拟
开启NVMe Cache之前,在数据库中提前创建一个段页式表,对段页式表数据进行增删查改产生段页式日志。然后开启NVMe Cache特性,导入数据执行TPCC测试。
故障现象
异常表现为主机日志堆积、备机HANG状态异常,然后通过检查备机的最新gs_log日志,发现报错GAUSS_49199如下所示:
The segment table and NVMe cache are not supported when enabled together.
诊断流程
在开启NVMe Cache特性的情况下,如果出现日志堆积或者集群状态异常现象,则进一步查看gs_log是否有GAUSS_49199报错。如果存在GAUSS_49199报错,则可以判断当前环境是由于段页式日志的存在,导致备机HANG住。
恢复操作
需先停止数据库,关闭NVMe Cache特性,并关闭AntiCache。随后启动数据库,删除段页式表所在的仓。在主机上执行checkpoint。若备机能够建连,则同时在备机上执行checkpoint;若备机无法连接,则在主机执行checkpoint后,通过cm_ctl query -rv记录primary_flush_location,并持续查询该命令直至备机的last_replayed_end_location均大于所记录的primary_flush_location位置,表明段页式日志已被跳过。最后,重启数据库并重新打开NVMe Cache特性,再执行TPCC测试。