#扩缩容异常处理

# 扩缩容异常

若通过yasboot执行扩/缩容过程中现有节点出现故障、扩缩容失败等异常,可参考以下方法采取相应的应对措施。

# 扩缩容过程中现有节点故障

  • 在扩/缩容DN组过程中,若MN组节点、CN节点或不涉及扩/缩容的其他DN组出现异常,会导致扩/缩容任务挂起,此时需要先手动恢复相应组的正常运行再继续扩/缩容DN组的相关操作。

  • 如果待缩容DN组的备库异常且无法恢复,直接缩容可能会失败,可以通过组内删除节点功能删除该备库后再进行缩容。

# 扩缩容失败后处理

如果出现扩容失败,需要执行yasboot node/group remove --clean命令清理环境。无法通过yasboot对扩容失败的实例节点进行start/stop/restart操作。

  1. 以安装用户登录当前数据库集群中yasboot工具所在服务器。

  2. 执行如下命令,清理失败的组、备库或节点。

    # 清理备库或节点
    $ yasboot node remove --clean --force -c yashandb
    
    # 清理DN组
    $ yasboot group remove -c yashandb --group-ids 3 --purge
    

    返回SUCCESS表示清理成功。

  3. 若无法成功清理对应备库/节点,可以尝试以下操作:

    1. )强制停止扩/缩容失败的节点:

      $ yasboot node stop -c yashandb -n {nodeid} --force
      
    2. )强制删除扩/缩容失败的节点:

      $ 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,详情请参考主备手动切换

# 级联备连接不到上级备库

可能是链路参数设置不正确,或设置链路参数后未重启实例使其生效。

edit-icon
反馈
coperate-icon
coperate
合作
communication-icon
communicate
交流