#逻辑备库配置

配置逻辑备库需要先创建备库/备集群(默认为物理备库/备集群),然后执行相关操作将其转换为逻辑备库备集群。

为统一称呼,在共享集群部署环境中主库指的是主集群,备库指的是备集群。

# 前提条件

# 操作步骤

# 步骤1:创建备库

创建备库/备集群,并记录需要转换为逻辑备库的目标节点相关信息备用,包括节点ID、连接信息等。

# 步骤2:备库新增STANDBY LOG文件

STANDBY LOG文件是用于存储逻辑备库业务产生的redo日志,在构建逻辑备库前需要规划STANDBY LOG文件的空间占用、文件路径以及数量。

每个逻辑备库至少需要3个STANDBY LOG文件,如果当前环境中已经配置了STANDBY LOG文件则可跳过本操作。

  1. 以DBA用户连接并登录主库。

  2. 执行如下语句创建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操作

  1. 以DBA用户连接并登录目标节点:

    • 单机部署:主库

    • 共享集群部署:主集群的主实例(即V$INSTANCE视图中INSTANCE_ROLE字段为MASTER_ROLE的实例)

  2. 执行DBMS_LOGSTDBY.BUILD操作:

    • 执行DBMS_LOGSTDBY.BUILD需要等待所有活跃事务完成,在主库执行长时间运行的事务会影响该命令的执行效率。

    • 执行DBMS_LOGSTDBY.BUILD后会自动开启主库的库级附加日志,附加日志的模式为PRIMARY KEY。

    • 在共享集群部署中,需确保所有存活实例均处于OPEN状态(不能为NOMOUNT、MOUNT),BUILD期间会短暂阻塞实例加入集群。

    EXECUTE DBMS_LOGSTDBY.BUILD;
    
  3. 检查确认BUILD操作已同步到备库。

    1. )在主库上查询当前的日志刷盘序列号(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
      
    2. )在备库上查询当前的日志接收序列号(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也会发生变化。

仅适用于单机部署。

  1. 以安装用户登录备库所在服务器。

  2. 重启备库至MOUNT阶段。

    # 指定备库的节点ID重启备库,例如1-3
    $ yasboot node restart -c yashandb -n 1-3 -m mount
    
  3. 以DBA用户连接并登录备库。

  4. 执行逻辑备库转换操作。

    ALTER DATABASE RECOVER TO LOGICAL STANDBY new_db_name;
    
  5. 启动数据库至OPEN。

    ALTER DATABASE OPEN;
    

# 场景2:滚动升级

备库的角色将变为LOGICAL STANDBY,数据库的DB_NAME和DBID不会发生变化。

  1. 以安装用户登录备库所在服务器。

  2. 重启备库至MOUNT阶段。

# 指定备库的节点ID重启备库,例如1-3
$ yasboot node restart -c yashandb -n 1-3 -m mount
  1. 以DBA用户连接并登录备库。

  2. 执行逻辑备库转换操作。

ALTER DATABASE RECOVER TO LOGICAL STANDBY KEEP IDENTITY;
  1. 启动数据库至OPEN。
ALTER DATABASE OPEN;

# 步骤6:开启逻辑备库的逻辑回放(SQL Apply)

逻辑备库默认不启用逻辑回放功能,需在备库开启逻辑回放(即将redo数据应用到逻辑备库)。

  1. 以DBA用户连接并登录目标节点:

    • 单机部署:备库

    • 共享集群部署:备集群的主实例(即V$INSTANCE视图中INSTANCE_ROLE字段为MASTER_ROLE的实例)

  2. 开启逻辑回放:

    ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;
    
edit-icon
反馈
coperate-icon
coperate
合作
communication-icon
communicate
交流