#逻辑备库配置
配置逻辑备库需要先创建备库/备集群(默认为物理备库/备集群),然后执行相关操作将其转换为逻辑备库备集群。
为统一称呼,在共享集群部署环境中主库指的是主集群,备库指的是备集群。
# 前提条件
# 操作步骤
# 步骤1:创建备库
创建备库/备集群,并记录需要转换为逻辑备库的目标节点相关信息备用,包括节点ID、连接信息等。
在单机部署中,请参考备库扩缩容为已有环境创建新备库或参考单机部署安装指引直接部署新的主备环境,初始时该备库默认为物理备库。
在共享集群部署中,请参考共享集群部署安装指引部署主备集群环境,初始时备集群默认为物理备集群。
# 步骤2:备库新增STANDBY LOG文件
STANDBY LOG文件是用于存储逻辑备库业务产生的redo日志,在构建逻辑备库前需要规划STANDBY LOG文件的空间占用、文件路径以及数量。
每个逻辑备库至少需要3个STANDBY LOG文件,如果当前环境中已经配置了STANDBY LOG文件则可跳过本操作。
以DBA用户连接并登录主库。
执行如下语句创建STANDBY LOG文件:
ALTER DATABASE ADD STANDBY LOGFILE 'REDO11' SIZE 128M;
ALTER DATABASE ADD STANDBY LOGFILE 'REDO12' SIZE 128M;
ALTER DATABASE ADD STANDBY LOGFILE 'REDO13' SIZE 128M;
# 步骤3:停止备库的物理回放(redo回放)
物理备库在转换为逻辑备库前,需停止物理备库上的redo回放,以免后续构建逻辑备库操作被物理回放。
登录备库/备集群主实例,执行如下语句停止redo回放:
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
# 步骤4:执行DBMS_LOGSTDBY.BUILD操作
以DBA用户连接并登录目标节点:
单机部署:主库
共享集群部署:主集群的主实例(即V$INSTANCE视图中INSTANCE_ROLE字段为MASTER_ROLE的实例)
执行DBMS_LOGSTDBY.BUILD操作:
执行DBMS_LOGSTDBY.BUILD需要等待所有活跃事务完成,在主库执行长时间运行的事务会影响该命令的执行效率。
执行DBMS_LOGSTDBY.BUILD后会自动开启主库的库级附加日志,附加日志的模式为PRIMARY KEY。
在共享集群部署中,需确保所有存活实例均处于OPEN状态(不能为NOMOUNT、MOUNT),BUILD期间会短暂阻塞实例加入集群。
EXECUTE DBMS_LOGSTDBY.BUILD;检查确认BUILD操作已同步到备库。
)在主库上查询当前的日志刷盘序列号(GV$ARCHIVE_DEST_STATUS视图的FLUSH_LFN字段)。
SELECT THREAD#, CONNECTION, STATUS, FLUSH_LFN FROM GV$ARCHIVE_DEST_STATUS ORDER BY THREAD#; THREAD# CONNECTION STATUS FLUSH_LFN ------- ----------------- ----------------- --------------------- 1 CONNECTED NORMAL 3026 2 CONNECTED NORMAL 32 3 CONNECTED NORMAL 30)在备库上查询当前的日志接收序列号(V$REPLICATION_STATUS视图的RECEIVED_LFN字段),若已超过主库的日志刷盘序列号则可视作日志同步完成。
SELECT THREAD#, CONNECTION, STATUS, RECEIVED_LFN FROM V$REPLICATION_STATUS ORDER BY THREAD#; THREAD# CONNECTION STATUS RECEIVED_LFN ------- ----------------- ----------------- --------------------- 1 CONNECTED NORMAL 3026 2 CONNECTED NORMAL 32 3 CONNECTED NORMAL 30
# 步骤5:转换备库类型
重启备库/备集群至MOUNT阶段,并执行相关语句将其转换为逻辑备库。
# 场景1:构建常规逻辑备库
备库的角色将变为LOGICAL STANDBY,数据库的DB_NAME和DBID也会发生变化。
仅适用于单机部署。
以安装用户登录备库所在服务器。
重启备库至MOUNT阶段。
# 指定备库的节点ID重启备库,例如1-3 $ yasboot node restart -c yashandb -n 1-3 -m mount以DBA用户连接并登录备库。
执行逻辑备库转换操作。
ALTER DATABASE RECOVER TO LOGICAL STANDBY new_db_name;启动数据库至OPEN。
ALTER DATABASE OPEN;
# 场景2:滚动升级
备库的角色将变为LOGICAL STANDBY,数据库的DB_NAME和DBID不会发生变化。
以安装用户登录备库所在服务器。
重启备库至MOUNT阶段。
# 指定备库的节点ID重启备库,例如1-3
$ yasboot node restart -c yashandb -n 1-3 -m mount
以DBA用户连接并登录备库。
执行逻辑备库转换操作。
ALTER DATABASE RECOVER TO LOGICAL STANDBY KEEP IDENTITY;
- 启动数据库至OPEN。
ALTER DATABASE OPEN;
# 步骤6:开启逻辑备库的逻辑回放(SQL Apply)
逻辑备库默认不启用逻辑回放功能,需在备库开启逻辑回放(即将redo数据应用到逻辑备库)。
以DBA用户连接并登录目标节点:
单机部署:备库
共享集群部署:备集群的主实例(即V$INSTANCE视图中INSTANCE_ROLE字段为MASTER_ROLE的实例)
开启逻辑回放:
ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;

