#常见问题

在高可用环境的主备运行过程中如出现问题,可以通过查看V$REPLICATION_EVENT、V$DIAG_INCIDENT视图,以及run log来定位原因。

主机业务卡住

可能原因为:

  • 归档磁盘满,无法切换日志。此时可执行SQL命令清理无用的归档文件,或者设置归档自动清理参数。
  • 最大保护模式下备机发生异常,事务redo无法同步到备机。此时可启动或修复备机,并等待备机同步redo。

主机执行业务报read only错误,V$DATABASE的status变为ABNORMAL

可能原因为:

  • 归档磁盘空间不足,导致归档失败。此时可执行SQL命令清理无用的归档文件,或者设置归档自动清理参数,然后执行alter database convert to normal。

  • 最大保护模式下备机发生异常,事务redo无法同步到备机。此时可启动或修复备机,确保备机状态正常,然后执行alter database convert to normal。

备机redo回放慢

可能原因为:

  • 主机并发高,备机没有设置并行回放参数。此时可设置备机并行回放参数,并重启备机。

备机NEED REPAIR

该项错误可从run log中查找更详细报错信息。

可能原因为:

  • 主备二进制版本不匹配,需更换版本。
  • 主备database_id不一样,一般是因为主机重新建过库,但备机没有重新build,导致数据库不匹配。
  • 主机清理了归档文件,但备机还没接收到该部分日志,出现无法修复的gap。此时需要重新build备机。
  • 主备日志不匹配,可能是因为发生过Failover,而新主机存在部分日志丢失。此时需要重新build备机。
  • 旧主机降为备机后发生脑裂。此时需要重新build旧主机。
  • MN组内多数派备机(n/2)的数据文件被清理,n为节点数量。此时需要将主MN的模式切换成最大可用模式,build损坏的备机,再将主MN切回最大保护模式。

YashanDB提供对出现NEED REPAIR状态时的修复手段,具体操作请查看备机异常修复

主机shutdown卡住

可能原因为:

  • shutdown模式为normal,并且有未退出的客户端连接。normal模式会等待客户端连接正常退出,需要用户手动退出客户端连接。
  • shutdown模式不是abort,并且主机业务卡住了,业务线程无法结束,参考主机业务卡住的章节。

shutdown abort报断连错误,进程退出

最大保护模式下,如果备机异常,脏页刷盘将阻塞,以防止未提交的数据落盘。 在执行shutdown abort的时候,如果有线程必须等待脏页刷盘,则无法结束该线程,因此会在1分钟超时时间后,强制退出yasdb进程,客户端会报断连错误。

可能的场景为:

  • data buffer满的情况下,执行shutdown abort,此时有一个线程需要申请页面,则需要data buffer淘汰一个页面,但是脏页刷盘已经阻塞,该线程无法申请页面。
  • 执行表空间相关操作,可能会触发全量checkpoint,但是脏页刷盘已经阻塞,该线程无法等待checkpoint完成。
  • redo日志追尾,需要触发全量checkpoint,释放redo空间,但是脏页刷盘已经阻塞,redo空间无法释放,所有等待redo空间释放的线程无法结束。

执行build或者并行build时卡住

当主备处于最大保护模式下,备机全部断连,主机事务无法提交,执行build或者并行build会偶现卡住问题。

解决方法:手动切换为最大可用模式,待build执行完成之后酌情修改其他模式。

下载文档
复制链接