在DMDSC(达梦数据守护集群)架构基础上增加一个DW(Data Watch,实时备库)的架构,结合了DMDSC的高可用性与DW的实时同步能力,能够显著提升数据库系统的整体性能、可用性和数据保护能力。
以下是该架构的主要优势分析:
| 主库1 | 主库2 | 备库 | 备注 | |
|---|---|---|---|---|
| DB_NAME | DSC | DSC | DW | 主备不要求一致 |
| INATANCE_NAME | DSC01 | DSC02 | DW | |
| 心跳IP | 10.10.10.31 | 10.10.10.32 | / | |
| 业务IP | 192.168.236.31 | 192.168.236.32 | 192.168.236.21 | |
| 数据库版本 | 8.1.4.170 | 8.1.4.170 | 8.1.4.170 | 版本不一致rman恢复会报错 |
| CHARSET | GB18030 | GB18030 | GB18030 |
参考DM8数据共享集群手册完成搭建并检验。搭建完成后,正常退出DMDSC集群的两个dmserver节点实例,不需要退出dmcss和dmasmsvr
在DMDSC集群生成有归档日志的情况下进行脱机备份,以便后续校验日志连续性时使用。
备注:dmrman的use_ap参数可以参考DM8备份与还原手册,当值=2时,采用无辅助进程方式,本次备份采用use_ap=2,由DMRMAN进程自身完成备份还原,不依赖DMAP服务;配置成2的情况下,不能执行第三方备份(即指定DEVICE TYPE为TAPE)
DSC01:(DSC01)
# 启动dmrman
./dmrman use_ap=2 dcr_ini=/dmdata/DSC/dmdcr.ini
# 脱机备份DMDSC集群
RMAN>BACKUP DATABASE '/dmdata/DSC/dsc01_config/dm.ini' FULL BACKUPSET '/dmbak/back251213';
# 检查备份文件有效性
RMAN> check backupset '/dmbak/back251213';
# 将备份文件发送到DW机器
[dmdba@~]# scp -r back251213/ 192.168.236.21:/dmbak
DW 机器将数据库安装在/dm8目录下,并初始化实例到/dm8/data目录,且初始化实例参数应与DSC集群初始化参数保持一致
vi dmini.ini PATH=/dm8/data DB_NAME = DW INSTANCE_NAME ROLL_SIZE = 128 LOG_SIZE = 256 EXTENT_SIZE = 32 CASE_SENSITIVE = Y SYSDBA_PWD = 'Dameng.com123' SYSAUDITOR_PWD = 'Dameng.com123' BLANK_PAD_MODE = 0 PAGE_SIZE = 16 CHARSET = 0 ./dminit control=/dm8/dmini.ini
##登录备机使用 rman 进行还原(注意:备机初始化参数要与主库一致)
./dmrman use_ap=2
RMAN> check backupset '/dmbak/back251213';
RMAN>RESTORE DATABASE '/dm8/data/DW/dm.ini' FROM BACKUPSET '/dmbak/back251213';
RMAN>RECOVER DATABASE '/dm8/data/DW/dm.ini' FROM BACKUPSET '/dmbak/back251213';
RMAN>RECOVER DATABASE '/dm8/data/DW/dm.ini' UPDATE DB_MAGIC;
DSC01和DSC02
vi dm.ini
# 修改部分
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息
DW
vi dm.ini
# 修改部分
INSTANCE_NAME = DW
PORT_NUM = 5238 #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息
DSC01:
vi /dmdata/DSC/dmdcr.ini
DMDCR_PATH = /dev/asmdisk/dmdcr01
DMDCR_MAL_PATH = /dmdata/DSC/dmasvrmal.ini
DMDCR_SEQNO = 0
DMDCR_ASM_RESTART_INTERVAL = 30
DMDCR_ASM_STARTUP_CMD = /dm8/bin/DmASMSvrServiceAsmsvr start
DMDCR_DB_RESTART_INTERVAL = 30
#改为启动到mount
DMDCR_DB_STARTUP_CMD = /dm8/bin/DmServiceDSC start mount
DMDCR_AUTO_OPEN_CHECK = 111
DMDCR_ASM_TRACE_LEVEL = 2
DSC02:
vi /dmdata/DSC/dmdcr.ini
DMDCR_PATH = /dev/asmdisk/dmdcr01
DMDCR_MAL_PATH = /dmdata/DSC/dmasvrmal.ini
DMDCR_SEQNO = 0
DMDCR_ASM_RESTART_INTERVAL = 30
DMDCR_ASM_STARTUP_CMD = /dm8/bin/DmASMSvrServiceAsmsvr start
DMDCR_DB_RESTART_INTERVAL = 30
#改为启动到mount
DMDCR_DB_STARTUP_CMD = /dm8/bin/DmServiceDSC start mount
DMDCR_AUTO_OPEN_CHECK = 111
DMDCR_ASM_TRACE_LEVEL = 2
DSC01、DSC02 和 DW 机器配置 dmmal.ini(dmmal.ini 和 dm.ini 放在同一路径下),三台机器的 dmmal.ini 文件内容必须一致。
MAL_CHECK_INTERVAL=30 MAL_CONN_FAIL_INTERVAL=10 MAL_SYS_BUF_SIZE=600 MAL_BUF_SIZE=300 MAL_VPOOL_SIZE=500 MAL_COMPRESS_LEVEL=0 [MAL_INST0] MAL_INST_NAME = DSC01 MAL_HOST = 10.10.10.31 MAL_PORT = 9461 MAL_INST_HOST = 192.168.236.31 MAL_INST_PORT = 5236 MAL_DW_PORT = 52141 MAL_INST_DW_PORT = 5276 MAL_LINK_MAGIC =1 #值一样,dmwatcher之间和dmserver之间的通信使用的是MAL_HOST,值不一致则用的是MAL_INST_HOST。 [MAL_INST1] MAL_INST_NAME = DSC02 MAL_HOST = 10.10.10.32 MAL_PORT = 9461 MAL_INST_HOST = 192.168.236.32 MAL_INST_PORT = 5236 MAL_DW_PORT = 52141 MAL_INST_DW_PORT = 5276 MAL_LINK_MAGIC =1 [MAL_INST2] MAL_INST_NAME = DW MAL_HOST = 192.168.236.21 MAL_PORT = 9461 MAL_INST_HOST = 192.168.236.21 MAL_INST_PORT = 5236 MAL_DW_PORT = 52141 MAL_INST_DW_PORT = 5276 MAL_LINK_MAGIC =2#值不一致则用的是MAL_INST_HOST。所以这样配置,DSC之间用心跳网络通信,DW之间用业务网络通信
DSC01配置
[ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = +DMDATA/DSC/DSC01/arch ARCH_FILE_SIZE = 128 ARCH_SPACE_LIMIT = 0 [ARCHIVE_REMOTE] ARCH_TYPE = REMOTE ARCH_DEST = DSC02 ARCH_INCOMING_PATH = +DMDATA/DSC/DSC02/arch [ARCHIVE_REALTIME] ARCH_TYPE = REALTIME ARCH_DEST = DW
DSC02配置
[ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = +DMDATA/DSC/DSC02/arch ARCH_FILE_SIZE = 128 ARCH_SPACE_LIMIT = 0 [ARCHIVE_REMOTE] ARCH_TYPE = REMOTE ARCH_DEST = DSC01 ARCH_INCOMING_PATH = +DMDATA/DSC/DSC01/arch [ARCHIVE_REALTIME] ARCH_TYPE = REALTIME ARCH_DEST = DW
DW配置
[ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /dmarch ARCH_FILE_SIZE = 128 ARCH_SPACE_LIMIT = 0 [ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME ARCH_DEST = DSC01/DSC02
DSC01
[GRP1] DW_TYPE = GLOBAL DW_MODE = MANUAL DW_ERROR_TIME = 120 INST_RECOVER_TIME = 60 INST_ERROR_TIME = 120 INST_OGUID = 453331 INST_INI = /dmdata/DSC/dsc01_config/dm.ini DCR_INI= /dmdata/DSC/dmdcr.ini INST_STARTUP_CMD = /dm8/bin/dmserver INST_AUTO_RESTART = 0 RLOG_SEND_THRESHOLD = 0 RLOG_APPLY_THRESHOLD = 0
DSC02
[GRP1] DW_TYPE = GLOBAL DW_MODE = MANUAL DW_ERROR_TIME = 120 INST_RECOVER_TIME = 60 INST_ERROR_TIME = 120 INST_OGUID = 453331 INST_INI = /dmdata/DSC/dsc02_config/dm.ini DCR_INI= /dmdata/DSC/dmdcr.ini INST_STARTUP_CMD = /dm8/bin/dmserver INST_AUTO_RESTART = 0 RLOG_SEND_THRESHOLD = 0 RLOG_APPLY_THRESHOLD = 0
DW
[GRP1] DW_TYPE = GLOBAL #全局守护类型 DW_MODE = MANUAL#手动切换模式 DW_ERROR_TIME = 120 #远程守护进程故障认定时间 INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间 INST_ERROR_TIME = 120 #本地实例故障认定时间 INST_OGUID = 453331 #守护系统唯一 OGUID 值 INST_INI = /dm8/data/DW/dm.ini #dm.ini 配置文件路径 INST_AUTO_RESTART = 0 #设置实例不自动拉起 INST_STARTUP_CMD = /dm8/bin/dmserver #命令行方式启动 RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭 RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
主库注册守护进程服务
su - root
cd /dm8/script/root
#DSC01:
./dm_service_installer.sh -t dmwatcher -watcher_ini /dmdata/DSC/dsc01_config/dmwatcher.ini -p DSC
#DSC02:
./dm_service_installer.sh -t dmwatcher -watcher_ini /dmdata/DSC/dsc02_config/dmwatcher.ini -p DSC
备库注册守护进程和数据库进程服务
su - root cd /dm8/script/root ./dm_service_installer.sh -t dmserver -dm_ini /dm8/data/DW/dm.ini -m mount -p DW ./dm_service_installer.sh -t dmwatcher -watcher_ini /dm8/data/DW/dmwatcher.ini -p DW
在DSC01编辑dmmonitor.ini
MON_DW_CONFIRM = 0 MON_LOG_PATH = /dm8/log MON_LOG_INTERVAL = 60 MON_LOG_FILE_SIZE = 60 MON_LOG_SPACE_LIMIT = 300 [GRP1] MON_INST_OGUID = 453331 MON_DW_IP = 192.168.236.31:52141/192.168.236.32:52141 MON_DW_IP = 192.168.236.21:52141
注意需要以mount方式启动
./dmserver dcr_ini=/dmdata/DSC/dmdcr.ini /dmdata/DSC/dsc01_config/dm.ini mount ./dmserver dcr_ini=/dmdata/DSC/dmdcr.ini /dmdata/DSC/dsc02_config/dm.ini mount ./dmserver /dm8/data/DW/dm.ini mount
启动disql链接DMDSC集群中的任意一个节点,设置DMDSC主库的OGUID值
./disql SYSDBA/'"Dmglydmm@2025"'@127.0.0.1:5236
SQL> sp_set_para_value(1,'ALTER_MODE_STATUS',1);
SQL> sp_set_oguid(453331);
SQL> alter database primary;
SQL> sp_set_para_value(1,'ALTER_MODE_STATUS',0);
disql连接单节点备库,设置备库OGUID
./disql SYSDBA/'"Dmglydmm@2025"'@127.0.0.1:5238
SQL> sp_set_para_value(1,'ALTER_MODE_STATUS',1);
SQL> sp_set_oguid(453331);
SQL> alter database standby;
SQL> sp_set_para_value(1,'ALTER_MODE_STATUS',0);
# 双节点执行
./dmcss DCR_INI=/home/dmdba/dsc_config/dmdcr.ini
# 双节点执行
./dmasmsvr DCR_INI=/home/dmdba/dsc_config/dmdcr.ini
# DSC01和DSC02分别启动数据库实例
./dmserver dcr_ini=/home/dmdba/dsc_config/dmdcr.ini /home/dmdba/dsc_config/DSC01_conf/dm.ini mount
./dmserver dcr_ini=/home/dmdba/dsc_config/dmdcr.ini /home/dmdba/dsc_config/DSC02_conf/dm.ini mount
# 节点3启动数据库实例
./dmserver /home/dmdba/data/EP01/DAMENG/dm.ini mount
再启动守护进程
./dmwatcher /home/dmdba/dsc_config/DSC01_conf/dmwatcher.ini
./dmwatcher /home/dmdba/dsc_config/DSC02_conf/dmwatcher.ini
./dmwatcher /home/dmdba/data/EP01/DAMENG/dmwatcher.ini
# DSC01启动监视器
./dmmonitor path=/home/dmdba/dsc_config/DSC01_conf/dmmonitor.ini
DW的守护进程会自动将实例open
先关闭各节点的守护进程,再关闭数据库
文章
阅读量
获赞
