注册
DSC+DW 实时同步集群添加一个异步备库
专栏/技术分享/ 文章详情 /

DSC+DW 实时同步集群添加一个异步备库

FoxZzz 2026/09/30 214 0 0
摘要

在实际的生产应用中,如果数据库规模很大,并且对数据的实时性要求不是很严格,则可以配置多个异步备库用于分担统计报表等任务。

实例名 外部通信IP 内部通信IP 端口 备注
DSC0 192.168.2.201 10.10.10.1 5236 DSC集群节点一
DSC1 192.168.2.202 10.10.10.2 5236 DSC集群节点二
DW01 192.168.2.203 10.10.10.3 5236 实时备库
DW02 192.168.2.205 10.10.10.5 5236 异步备库

1. DSC备份还原

1.1 脱机备份

关闭DSC节点后数据库服务后进行备份

[dmdba@~]# /opt/dmdbms/bin/dmrman  DCR_INI=/opt/dmdbms/dsc_config/DSC0/dmdcr.ini

RMAN> backup database '/opt/dmdbms/dsc_config/DSC0/dm.ini' full backupset '/dmbak/BACKUP_FILE_ASYNC';

##检查备份文件有效性
RMAN> check backupset '/dmbak/BACKUP_FILE_ASYNC' ;

##将备份文件发送到 dm5 机器
[dmdba@~]# scp -r /dmbak/BACKUP_FILE_ASYNC dmdba@192.168.2.205:/dmbak/

1.2 初始化异步备库

/opt/dmdbms/bin/dminit PATH=/dmdata  PORT_NUM=5236 PAGE_SIZE=32 EXTENT_SIZE=16 LOG_SIZE=2048 BLANK_PAD_MODE=1 SYSDBA_PWD='DMasync.2026' SYSAUDITOR_PWD='DMasync.2026' AUTO_OVERWRITE=1

1.2 还原异步备库

RMAN> check backupset '/dmbak/BACKUP_FILE' ;
RMAN>RESTORE DATABASE  '/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/dmbak/BACKUP_FILE_ASYNC';
RMAN>RECOVER DATABASE '/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/dmbak/BACKUP_FILE_ASYNC';
RMAN>RECOVER DATABASE '/dmdata/DAMENG/dm.ini' UPDATE DB_MAGIC;

2. 部署流程

2.1 配置dm.imi

在 DSC0、DSC1、DW01 上进行

TIMER_INI = 1

在异步备库上修改

INSTANCE_NAME = DW02
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI =1
ARCH_INI =1

2.2 配置dmmal.ini

所有实例的dmmal.ini配置都是一致的,所以需要在 DSC0、DSC1、DW01 中的dmmal.ini 添加

[MAL_INST3]
MAL_INST_NAME            = DW02
MAL_HOST                 = 10.10.10.5  #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT                 = 11246  #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST            = 192.168.2.205  #实例的对外服务 IP 地址
MAL_INST_PORT            = 5236  #实例对外服务端口,和 dm.ini 的 PORT_NUM 一致
MAL_DW_PORT              = 52141  #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT         = 5276  #实例监听守护进程 TCP 连接的端口

并将dmmal.ini同步至异步备库DW02

2.3 配置dmarch.ini

在 DSC0、DSC1、DW01 上添加

[ARCHIVE_ASYNC]
ARCH_TYPE=ASYNC #异步归档类型
ARCH_DEST=DW02 #异步归档目标实例名
ARCH_TIMER_NAME=RT_TIMER #定时器名称,和 dmtimer.ini 中的名称一致

异步备库DW02新建dmarch.ini

[ARCHIVE_LOCAL1] 
ARCH_TYPE = LOCAL #本地归档类型 
ARCH_DEST = /dmarch  #本地归档文件存放路径 
ARCH_FILE_SIZE = 2048  
ARCH_SPACE_LIMIT = 204800 #单位 Mb,0 表示无限制,范围 1024~4294967294M 

2.4 配置dmtimer.ini

[RT_TIMER] #和dmarch.ini中的 ARCH_TIMER_NAME 一致
TYPE=2 #2按日执行
FREQ_MONTH_WEEK_INTERVAL=1 #间隔月或周数
FREQ_SUB_INTERVAL=0 #间隔天数
FREQ_MINUTE_INTERVAL=1 #间隔分钟数
START_TIME=00:00:00 #开始时间
END_TIME=23:59:59 #结束时间
DURING_START_DATE=2026-09-28 12:00:00 #开始时间点
DURING_END_DATE=9999-12-31 23:59:59 #结束时间点
NO_END_DATE_FLAG=1 #是否结束标记
#DESCRIBE               = RT TIMER
IS_VALID                = 1  # V$DM_TIMER_INI.IS_VALID

2.5 配置dmwatcher.ini

在异步备库DW02创建即可

[GRP1] 
DW_TYPE = LOCAL #全局守护类型 
DW_MODE = MANUAL#手动切换模式 
DW_ERROR_TIME = 120 #远程守护进程故障认定时间 
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间 
INST_ERROR_TIME = 120 #本地实例故障认定时间 
INST_OGUID = 453331 #守护系统唯一 OGUID 值 
INST_INI = /dmdata/DAMENG/dm.ini #dm.ini 配置文件路径 
INST_AUTO_RESTART = 0 #设置实例不自动拉起
INST_STARTUP_CMD = /opt/dmdbms/bin/dmserver #命令行方式启动 
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭 

2.6 启动主备库

以mount模式启动主备库,这部分建议采用服务模式,先注册
DSC0

/opt/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /opt/dmdbms/dsc_config/DSC0/dm.ini -dcr_ini /opt/dmdbms/dsc_config/dmdcr.ini -y DmASMSvrServiceASM.service  -p DSC -m mount

DSC1

/opt/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /opt/dmdbms/dsc_config/DSC0/dm.ini -dcr_ini /opt/dmdbms/dsc_config/dmdcr.ini -y DmASMSvrServiceASM.service  -p DSC -m mount
/opt/dmdbms/script/root/dm_service_installer.sh -t dmserver -p DW2_01 -dm_ini /dmdata/DAMENG/dm.ini -m mount
/opt/dmdbms/bin/DmServiceDW2_01 start

2.7 设置OGUID与备库模式

之前在 DSC0 DSC1 DW01 上已执行,所以这一步骤在备库执行即可

SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
DMSQL executed successfully
used time: 109.727(ms). Execute id is 1.
SQL> sp_set_oguid(453331);
DMSQL executed successfully
used time: 38.091(ms). Execute id is 2.
SQL>  alter database standby;
executed successfully
used time: 35.789(ms). Execute id is 0.
SQL>  SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
DMSQL executed successfully
used time: 48.962(ms). Execute id is 3.

2.7 启动所有节点的watcher服务

/opt/dmdbms/bin/DmWatcherServiceWatcher start

2.8 监视器添加异步备库信息

MON_DW_IP         = 192.168.2.205:52141
[dmdba@dm3 ~]$ /opt/dmdbms/bin/dmmonitor /opt/dmdbms/bin/dmmonitor.ini
[monitor]         2026-09-29 02:37:38.950: DMMONITOR[4.0] V8
[monitor]         2026-09-29 02:37:38.965: DMMONITOR[4.0] IS READY.

[monitor]         2026-09-29 02:37:38.967: 
#-----------------------------------------------------------------------------------------------#
GET MONITOR CONNECT INFO FROM DMWATCHER(DW01), THE FIRST LINE IS SELF INFO.

DW_CONN_TIME         MON_CONFIRM    MID            MON_IP                MON_VERSION                                                     
2026-09-29 02:37:38  TRUE           1087254564     ::ffff:192.168.2.203  DMMONITOR[4.0] V8
                                              
#-----------------------------------------------------------------------------------------------#

[monitor]         2026-09-29 02:37:38.967: Received message from(DW01)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2026-09-29 02:37:38  OPEN           OK        DW01             OPEN        STANDBY   NULL     3        54818           54818           

[monitor]         2026-09-29 02:37:38.968: Received message from(DSC0)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2026-09-29 02:37:38  OPEN           OK        DSC0             OPEN        PRIMARY   VALID    3        54818           54818           

[monitor]         2026-09-29 02:37:38.968: Received message from(DW02)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2026-09-29 02:37:38  OPEN           OK        DW02             OPEN        STANDBY   INVALID  0        54790           54790           

[monitor]         2026-09-29 02:37:38.968: Received message from(DSC1)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2026-09-29 02:37:38  STARTUP        OK        DSC0             OPEN        PRIMARY   VALID    3        54818           54818

<<DATABASE GLOBAL INFO:>>
DW_IP          MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT       DETACHED    AUTO_MODE_CHANGE  
192.168.2.201  52141        2026-09-29 02:38:53  GLOBAL    VALID     OPEN           DSC0             OK        2     2     OPEN        PRIMARY   DSC_OPEN       REALTIME  VALID       FALSE       OFF               

DW_IP          MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT       DETACHED    AUTO_MODE_CHANGE  
192.168.2.203  52141        2026-09-29 02:38:53  GLOBAL    VALID     OPEN           DW01             OK        1     1     OPEN        STANDBY   DSC_OPEN       REALTIME  VALID       FALSE       OFF               


ASYNC SOURCE INSTANCE: DSC0
DW_IP          MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT       DETACHED    AUTO_MODE_CHANGE  
192.168.2.205  52141        2026-09-29 02:38:53  LOCAL     VALID     OPEN           DW02             OK        1     1     OPEN        STANDBY   DSC_OPEN       ASYNC     VALID       FALSE       OFF

2.9 测试同步情况

DSC集群节点DSC0

Server[LOCALHOST:5236]:mode is primary, state is open
login used time : 4.230(ms)
SQL> select * from company;

LINEID     ID          NAME   ADDRESS           
---------- ----------- ------ ------------------
1          2           华为 深圳市龙岗区
2          3           中兴 长沙市

used time: 0.420(ms). Execute id is 601.
SQL> INSERT INTO COMPANY (ID, NAME, ADDRESS) VALUES (4, '安克创新', '深圳市');
affect rows 1

used time: 3.676(ms). Execute id is 602.
SQL> commit;
executed successfully
used time: 3.655(ms). Execute id is 603.

实时备库DW01

Server[LOCALHOST:5236]:mode is standby, state is open
login used time : 7.108(ms)
SQL> select * from company;

LINEID     ID          NAME         ADDRESS           
---------- ----------- ------------ ------------------
1          2           华为       深圳市龙岗区
2          3           中兴       长沙市
3          4           安克创新 深圳市

used time: 2.652(ms). Execute id is 1.

异步备库DW02

Server[LOCALHOST:5236]:mode is standby, state is open
login used time : 3.200(ms)
SQL> select * from company;

LINEID     ID          NAME         ADDRESS           
---------- ----------- ------------ ------------------
1          2           华为       深圳市龙岗区
2          3           中兴       长沙市
3          4           安克创新 深圳市

used time: 3.058(ms). Execute id is 1.
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服