#扩缩容异常处理
# 扩缩容异常
若通过yasboot执行扩/缩容过程中现有节点出现故障、扩缩容失败等异常,可参考以下方法采取相应的应对措施。
# 扩缩容过程中现有节点故障
在扩/缩容DN组过程中,若MN组节点、CN节点或不涉及扩/缩容的其他DN组出现异常,会导致扩/缩容任务挂起,此时需要先手动恢复相应组的正常运行再继续扩/缩容DN组的相关操作。
如果待缩容DN组的备库异常且无法恢复,直接缩容可能会失败,可以通过组内删除节点功能删除该备库后再进行缩容。
# 扩缩容失败后处理
如果出现扩容失败,需要执行yasboot node/group remove --clean命令清理环境。无法通过yasboot对扩容失败的实例节点进行start/stop/restart操作。
以安装用户登录当前数据库集群中yasboot工具所在服务器。
执行如下命令,清理失败的组、备库或节点。
# 清理备库或节点 $ yasboot node remove --clean --force -c yashandb # 清理DN组 $ yasboot group remove -c yashandb --group-ids 3 --purge返回SUCCESS表示清理成功。
若无法成功清理对应备库/节点,可以尝试以下操作:
)强制停止扩/缩容失败的节点:
$ yasboot node stop -c yashandb -n {nodeid} --force)强制删除扩/缩容失败的节点:
$ yasboot node remove -c yashandb -n {nodeid} --force
# 扩缩容常见问题
扩缩容过程中出现问题时,通常可以通过查看GV$REPLICATION_EVENT/V$REPLICATION_EVENT、GV$DIAG_INCIDENT/V$DIAG_INCIDENT视图或运行日志辅助定位原因。
# 主备连接异常
出现errno 113:防火墙问题,需要在主备库(集群)的服务器上配置白名单,或关闭防火墙。
出现errno 111:对端数据库没有启动,或参数中的IP端口配置不正确。
# build或restore失败
若为单机主备部署,可以先检查local_fs目录,build前需先删除local_fs目录下的内容,否则build失败。
文件创建失败,路径不存在,可能是备库/备集群的文件夹没有创建完整,需要手动创建。
文件创建失败,文件已存在,可能是上次残留的文件未清理干净,build前需先清理所有ctrl、data、redo和归档文件;也可能是同一台服务器上部署主备,但备库/备集群的转换路径未配置导致主备文件路径重合,需设置正确的转换路径。
报错receive timeout,可能是网络带宽过低,也可能是主库/主集群开启了最大保护模式,但备库/备集群还没部署完成,主库/主集群事务将卡住,需先改为最大可用模式,待部署结束后再还原。
# 备库/备集群NEED REPAIR
主备日志不匹配
最大可用或最大性能模式下,原主库宕机前可能会有部分日志没有同步到备库,备库failover升主,原主库降备后,原主库的日志和新主库的日志会有分歧。需要用户决定是否回滚旧主库的这部分日志来消除日志分歧(一旦回滚,将无法恢复这部分日志),使备库正常同步新主库的日志。用户可以使用SQL语句ALTER SYSTEM IGNORE STANDBY MISMATCHED REDO快速修复。
归档日志丢失
主库归档清理参数配置错误,导致主库归档文件被数据库清理。
主库归档文件意外丢失或被误删。
文件内容存在损坏,无法同步
备库在线redo文件或归档日志文件存在坏块,导致备库无法正常同步。
主备数据不一致,出现脑裂
原主库宕机前可能会有部分日志没有同步到备库,备库failover升主,原主库降备后,原主库的日志和新主库的日志会有分歧,且分歧日志已提交,无法回滚,导致主备脑裂,造成主备数据不一致。
主备元数据信息不一致
主备二进制版本不匹配,需更换版本。
主备database_id不一样,通常是因为主库/主集群重新建过库,但备库/备集群未曾重新build,导致数据库不匹配。
SLICE文件丢失
主库参数配置错误,导致主库slice文件被数据库清理。这种情况需要重新构建备库。
数据库故障
备库发生FATAL错误,导致备库无法正常同步主库,会把备库置为need repair,让主库感知。常见有资源不足,文件操作失败等,可以查看运行日志明确FATAL错误的具体信息。这种情况需要DBA接入修复故障,并重启数据库。
Note:
前4种场景下的备库NEED REPAIR可以通过BUILD DATABASE REPAIR STANDBY尝试修复,具体操作请参考修复异常备库。
主备日志不匹配也是NEED REPAIR的一种场景,但备库的状态显示为REDO MISMATCH,详情请参考主备手动切换。
# 级联备连接不到上级备库
可能是链路参数设置不正确,或设置链路参数后未重启实例使其生效。

