#单机主备部署

单机主备高可用部署基于一主一备的配置模式,用户可以初始配置一主多备、级联备,或者后续进行扩展配置。

以下部署指导基于在一个已运行的环境进行扩展配置的介绍:

  • 一主一备配置:在非HA环境中,扩展一台备库,变成HA环境。

  • 一主多备配置:在一主一备环境中,为主库扩展多个备库,变成一主多备环境。

  • 级联备配置:对一台备库增加下级备库,变成级联备环境。

以下部署指导基于在一个初装环境进行主备高可用配置的介绍:

# 常见问题

主备部署过程中出现问题时,可以通过查看V$REPLICATION_EVENT、V$DIAG_INCIDENT视图,以及run log定位原因。

# 主备连接异常

  • 出现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,详情请参考主备切换

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

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