在实际的生产应用中,如果数据库规模很大,并且对数据的实时性要求不是很严格,则可以配置多个异步备库用于分担统计报表等任务。
| 实例名 | 外部通信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 | 异步备库 |
关闭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/
/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
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;
在 DSC0、DSC1、DW01 上进行
TIMER_INI = 1
在异步备库上修改
INSTANCE_NAME = DW02
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI =1
ARCH_INI =1
所有实例的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
在 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
[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
在异步备库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 #指定备库重演日志的时间阈值,默认关闭
以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
之前在 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.
/opt/dmdbms/bin/DmWatcherServiceWatcher start
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
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.
文章
阅读量
获赞
