#单机主备部署
单机主备高可用部署基于一主一备的配置模式,用户可以初始配置一主多备、级联备,或者后续进行扩展配置。
以下部署指导基于在一个已运行的环境进行扩展配置的介绍:
以下部署指导基于在一个初装环境进行主备高可用配置的介绍:
- 自动选主配置:部署一个一主多备且故障时可自动切换的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,详情请参考主备切换。
# 级联备连接不到上级备库
可能是链路参数设置不正确,或者设置链路参数后未重启实例使其生效。