1.测试建表和插入数据,2个节点都可以查询到数据
在节点1的终端上以disql进入:
./disql SYSDBA/Dameng123@192.168.100.115:5236 -- 创建表空间(存储在+DMDATA共享磁盘组,文档“十六、初始化数据库实例”步骤类似) CREATE TABLESPACE TEST_TBS DATAFILE '+DMDATA/test_tbs01.dbf' SIZE 128; -- 创建测试表(指定表空间为共享表空间) CREATE TABLE TEST_DSC (ID INT, NAME VARCHAR(50)) TABLESPACE TEST_TBS; -- 插入测试数据 INSERT INTO TEST_DSC VALUES (1, 'DSC集群测试数据'); COMMIT; # 关键:提交事务,确保数据同步到共享存储复制

在节点2上:
./disql SYSDBA/Dameng123@192.168.100.116:5236 select * from TEST_DSC;复制

2.测试故障一个节点后,集群和持续提供服务
可以是数据库服务关闭或者是禁用网卡或者是关闭节点1的主机来模拟节点故障。
我这里是关闭节点1的主机来模拟。
在dmdcr_cfg.ini这里有配置到要多久没有更新就判定为故障,
所以在监视器这里我们可以看到集群在计时
超过60秒(设置的规则)后没有更新,就判定为故障节点,接着切换节点2来接管。
如果是主节点实例挂了,监视器显示:
如果是主节点的ASM服务挂了,监视器显示:
在节点2的css日志这里,也可以看到,提示节点1的css和asm和实例服务都报错
到节点2这里以disql进入,测试读写是否正常
./disql SYSDBA/Dameng123@192.168.100.116:5236 --读 select * from TEST_DSC; --写 INSERT INTO TEST_DSC VALUES (2, 'DSC集群主节点故障模拟'); COMMIT;复制

主节点恢复后,重新加入集群,恢复配置
用disql进去看得到节点2插入的数据
流程:
3.基于已部署完成的DSC集群添加一个实时备机
1.先在新的主机上安装达梦数据库,初始化数据库服务,创建实例。
2.把DSC集群看成一个整体,就是一个主库,添加的备库机时单独的数据库,就是一个备库。
3.1安装数据库软件

3.2初始化数据库
su - dmdba cd /home/dmdba/dmdbms/bin --初始化 ./dminit path=/dmdata/data DB_NAME=DAMENGTEST1 INSTANCE_NAME=DMSERVER1 PORT_NUM=5236 SYSDBA_PWD=Dameng123 SYSAUDITOR_PWD=Dameng123复制
3.3创建数据库服务
su - root cd /home/dmdba/dmdbms/script/root/ ./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/DAMENGTEST1/dm.ini -p DAMENGTEST1 su - dmdba cd /home/dmdba/dmdbms/bin --启动数据库 ./DmServiceDAMENGTEST1 start --关闭数据库 ./DmServiceDAMENGTEST1 stop复制
3.4登录到css监视器,停止dsc集群组
我的是118这台,这一步的操作只是关掉DSC的实例而已,css和ASM服务都没有关闭,否则会报错。
su - dmdba cd /home/dmdba/dmdbms/bin ./dmcssm ini_path=/home/dmdba/dmdbms/dmcssm.ini # 执行命令停止dsc集群组,停止所有实例 ep stop GRP_DSC复制

3.5备份dsc集群数据,到备库还原
在主节点这里进行备份,前面提到的css和ASM服务不能关闭,否则进入不了dmrman。
#在dmdba用户下执行 su - dmdba cd /home/dmdba/dmdbms/bin #启动dmrman工具 ./dmrman dcr_ini=/home/dmdba/config/dmdcr.ini #执行 backup 全库 backup database '/home/dmdba/config/dsc0_config/dm.ini' full backupset '/home/dmdba/bakfull'; #校验备份 check backupset '/home/dmdba/bakfull'; #退出 RMAN> exit;复制

主节点这里检查对应目录看到备份已经存在后,发送到实时备库机这里
scp -r /home/dmdba/bakfull dmdba@192.168.155.111:/home/dmdba/复制

在实时备库机这里还原数据库
在备库主机上
一定要确保备库的数据库服务是停止状态,开着的就到bin目录下关闭
./DmServiceDAMENGTEST1 stop 使用 dmrman 工具还原备库,dmdba 用户执行: ./dmrman 进入dmrman工具交互界面 校验备份集 check backupset '/home/dmdba/bakfull'; 执行恢复: restore database '/dmdata/data/DAMENGTEST1/dm.ini' from backupset '/home/dmdba/bakfull'; #执行 restore :日志恢复 recover recover database '/dmdata/data/DAMENGTEST1/dm.ini' from backupset '/home/dmdba/bakfull'; # recover update db_magic:标识更新 update db_magic recover database '/dmdata/data/DAMENGTEST1/dm.ini' update db_magic;复制

3.6修改dm.ini配置文件
到主节点这里修改
su dmdba vi /home/dmdba/config/dsc0_config/dm.ini # 修改内容如下 INSTANCE_NAME = DSC0 #不用改动 PORT_NUM = 5236 #数据库实例监听端口 ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间 MAL_INI = 1 #打开 MAL 系统 ARCH_INI = 1 #打开归档配置 #验证 cat /home/dmdba/config/dsc0_config/dm.ini|grep -E "INSTANCE_NAME|PORT_NUM|ALTER_MODE_STATUS|ENABLE_OFFLINE_TS|MAL_INI|ARCH_INI"|grep -v _PORT_NUM 节点2: su dmdba vi /home/dmdba/config/dsc1_config/dm.ini # 修改内容如下 INSTANCE_NAME = DSC1 #不用改动 PORT_NUM = 5236 #数据库实例监听端口 ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间 MAL_INI = 1 #打开 MAL 系统 ARCH_INI = 1 #打开归档配置 #验证 cat /home/dmdba/config/dsc0_config/dm.ini|grep -E "INSTANCE_NAME|PORT_NUM|ALTER_MODE_STATUS|ENABLE_OFFLINE_TS|MAL_INI|ARCH_INI"|grep -v _PORT_NUM 实时备库机(111): su dmdba vi /dmdata/data/DAMENGTEST1/dm.ini # 修改内容如下 INSTANCE_NAME = DAMENGTEST1 #不用改动 PORT_NUM = 5236 #数据库实例监听端口 ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间 MAL_INI = 1 #打开 MAL 系统 ARCH_INI = 1 #打开归档配置 #验证 cat /dmdata/data/DAMENGTEST1/dm.ini|grep -E "INSTANCE_NAME|PORT_NUM|ALTER_MODE_STATUS|ENABLE_OFFLINE_TS|MAL_INI|ARCH_INI"|grep -v _PORT_NUM复制
3.7配置dmmal.ini
三台机器都要一样,可能前面会已经有了,要重写
su dmdba vi /home/dmdba/config/dsc0_config/dmmal.ini # 修改内容如下 MAL_CHECK_INTERVAL=87 MAL_CONN_FAIL_INTERVAL=180 MAL_SYS_BUF_SIZE=600 MAL_BUF_SIZE=300 MAL_VPOOL_SIZE=500 MAL_COMPRESS_LEVEL=0 [MAL_INST0] MAL_INST_NAME = DSC0 MAL_HOST = 192.168.100.115 MAL_PORT = 11246 MAL_INST_HOST = 192.168.100.115 MAL_INST_PORT = 5236 MAL_DW_PORT = 52141 MAL_INST_DW_PORT = 5276 [MAL_INST1] MAL_INST_NAME = DSC1 MAL_HOST = 192.168.100.116 MAL_PORT = 11246 MAL_INST_HOST = 192.168.100.116 MAL_INST_PORT = 5236 MAL_DW_PORT = 52141 MAL_INST_DW_PORT = 5276 [MAL_INST2] MAL_INST_NAME = DMSERVER1 MAL_HOST = 192.168.100.111 MAL_PORT = 11246 MAL_INST_HOST = 192.168.100.111 MAL_INST_PORT = 5236 MAL_DW_PORT = 52141 MAL_INST_DW_PORT = 5276 接着发送给另外两台 备库机 scp /home/dmdba/config/dsc0_config/dmmal.ini dmdba@192.168.155.111:/dmdata/data/DAMENGTEST1 节点2 scp /home/dmdba/config/dsc0_config/dmmal.ini dmdba@192.168.155.116:/home/dmdba/config/dsc1_config复制
3.8配置dmarch.ini
主节点:
su dmdba vi /home/dmdba/config/dsc0_config/dmarch.ini # 修改内容如下 ARCH_WAIT_APPLY = 0 ARCH_LOCAL_SHARE = 1 ARCH_LOCAL_SHARE_CHECK=0 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = +DMDATA/dmarch/arch_dsc0 ARCH_FILE_SIZE = 256 ARCH_SPACE_LIMIT = 1024 [ARCHIVE_LOCAL2] ARCH_TYPE = LOCAL ARCH_DEST = /dmdata/arch ARCH_FILE_SIZE = 256 ARCH_SPACE_LIMIT = 1024 [ARCHIVE_REMOTE1] ARCH_TYPE = REMOTE ARCH_DEST = DSC1 ARCH_INCOMING_PATH =+DMDATA/dmarch/arch_dsc1 ARCH_FILE_SIZE = 256 ARCH_SPACE_LIMIT = 1024 [ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME ARCH_DEST = DMSERVER1 节点2: su dmdba vi /home/dmdba/config/dsc1_config/dmarch.ini # 修改内容如下 ARCH_WAIT_APPLY = 0 ARCH_LOCAL_SHARE = 1 ARCH_LOCAL_SHARE_CHECK=0 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = +DMDATA/dmarch/arch_dsc1 ARCH_FILE_SIZE = 256 ARCH_SPACE_LIMIT = 1024 [ARCHIVE_LOCAL2] ARCH_TYPE = LOCAL ARCH_DEST = /dmdata/arch ARCH_FILE_SIZE = 256 ARCH_SPACE_LIMIT = 1024 [ARCHIVE_REMOTE1] ARCH_TYPE = REMOTE ARCH_DEST = DSC0 ARCH_INCOMING_PATH =+DMDATA/dmarch/arch_dsc0 ARCH_FILE_SIZE = 256 ARCH_SPACE_LIMIT = 1024 [ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME ARCH_DEST = DMSERVER1 备库: su dmdba vi /dmdata/data/DAMENGTEST1/dmarch.ini # 修改内容如下 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /dmdata/arch ARCH_FILE_SIZE = 256 ARCH_SPACE_LIMIT = 1024 [ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME ARCH_DEST = DSC0/DSC1复制
3.9配置dmwatcher.ini
主节点:
vi /home/dmdba/config/dsc0_config/dmwatcher.ini # 修改内容如下 [GRP1] #集群组名 DW_TYPE = GLOBAL DW_MODE = MANUAL DW_ERROR_TIME = 120 INST_RECOVER_TIME = 60 INST_ERROR_TIME = 120 INST_OGUID = 453331 INST_INI = /home/dmdba/config/dsc0_config/dm.ini DCR_INI=/home/dmdba/config/dmdcr.ini INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/DmServiceDSC0 start INST_AUTO_RESTART = 0 RLOG_SEND_THRESHOLD = 0 RLOG_APPLY_THRESHOLD = 0 节点2: su dmdba vi /home/dmdba/config/dsc1_config/dmwatcher.ini # 修改内容如下 [GRP1] DW_TYPE = GLOBAL DW_MODE = MANUAL DW_ERROR_TIME = 120 INST_RECOVER_TIME = 60 INST_ERROR_TIME = 120 INST_OGUID = 453331 INST_INI = /home/dmdba/config/dsc1_config/dm.ini DCR_INI=/home/dmdba/config/dmdcr.ini INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/DmServiceDSC1 start INST_AUTO_RESTART = 0 RLOG_SEND_THRESHOLD = 0 RLOG_APPLY_THRESHOLD = 0 备库: su dmdba vi /dmdata/data/DAMENGTEST1/dmwatcher.ini # 修改内容如下 [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/data/DAMENGTEST1/dm.ini INST_AUTO_RESTART = 0 INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/DmServiceDAMENGTEST1 start RLOG_SEND_THRESHOLD = 0 RLOG_APPLY_THRESHOLD = 0复制
3.10所有实例修改成mount启动方式(dmdba用户操作)
su dmdba cd /home/dmdba/dmdbms/bin vim DmServiceDSC0 vim DmServiceDSC1 vim DmServiceDAMENGTEST1 START_MODE=open 修改成 START_MODE=mount复制
3.11启动dsc集群实例和备库(dmdba用户操作)
先启动dsc集群的实例,再启动备库的实例
su dmdba cd /home/dmdba/dmdbms/bin ./DmServiceDSC0 start ./DmServiceDSC1 start ./DmServiceDAMENGTEST1 start复制
3.12修改节点的oguid和模式(dmdba用户操作)
所有的实例都处于mount状态!
节点1: cd /home/dmdba/dmdbms/bin ./disql SYSDBA/Dameng123@192.168.100.115:5236 SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); sp_set_oguid(453331); alter database primary; SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); exit 节点2: cd /home/dmdba/dmdbms/bin ./disql SYSDBA/Dameng123@192.168.100.116:5236 SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); sp_set_oguid(453331); alter database primary; SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); exit 备库 cd /home/dmdba/dmdbms/bin ./disql SYSDBA/Dameng123 SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); sp_set_oguid(453331); alter database standby; SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); exit复制
3.13注册数据守护服务并启动守护进程(dmdba用户操作)
节点1: su root cd /home/dmdba/dmdbms/script/root/ ./dm_service_installer.sh -t dmwatcher -p DSC0 -watcher_ini /home/dmdba/config/dsc0_config/dmwatcher.ini --开启守护进程 su dmdba ./DmWatcherServiceDSC0 start 节点2: su root cd /home/dmdba/dmdbms/script/root/ ./dm_service_installer.sh -t dmwatcher -p DSC1 -watcher_ini /home/dmdba/config/dsc1_config/dmwatcher.ini --开启守护进程 su dmdba ./DmWatcherServiceDSC1 start 备库: su root cd /home/dmdba/dmdbms/script/root/ ./dm_service_installer.sh -t dmwatcher -p DMSERVER1 -watcher_ini /dmdata/data/DAMENGTEST1/dmwatcher.ini --开启守护进程 su dmdba ./DmWatcherServiceDMSERVER1 start复制
3.14配置监视器
用一台新的,装有达梦数据库软件的主机,配置
用dmdba用户新建确认监视器配置文件 dmmonitor.ini(dmmonitor.ini 存放目录没有限制,一般和 dm.ini 存放在同一个目录),执行以下命令
su dmdba vi /dmdata/data/dmdb/dmmonitor.ini #内容为 MON_DW_CONFIRM = 0 #0为普通监视器,要手动切换主备,1为确认监视器可自动切换主备 MON_LOG_PATH =/home/dmdba/dmdbms/log #根据实际环境修改路径 MON_LOG_INTERVAL = 0 #每隔 0s 定时记录系统信息到日志文件 MON_LOG_FILE_SIZE = 32 #单个日志大小,单位 MB MON_LOG_SPACE_LIMIT = 0 #日志上限,单位 MB [GRP1] #组名 MON_INST_OGUID = 453331 #组 GRP1 的唯一 OGUID 值 MON_DW_IP = 192.168.52.50:52141/192.168.52.51:52141 #DSC的MAL_HOST: MAL_DW_PORT MON_DW_IP = 192.168.52.53:52141 #备库机的复制
当守护进程拉起来以后,实例状态变成了open
启动监视器
#启动监视器 ./dmmonitor /dmdata/data/dmdb/dmmonitor.ini复制
同时在监视器上我们还能看到DSC集群当前的控制节点是DSC0,管理全局事务和锁,RTYPE=REALTIME表明备库类型为实时备库(数据秒级同步),主备的LSN相同,说明数据库归档同步。
4.基于已部署完成的DSC集群添加一个异步备机
要求已经做好DSC集群,且备库机已经完成了初始化!DSC集群所有节点看成一个整体,就是一整个主库。
4.1备份DSC集群,到备库恢复
关闭DSC集群的实例服务,只是关掉DSC的实例而已,css和ASM服务都没有关闭,否则会报错。
#查看是否开启map服务 ps -ef | grep dmdbms #进入dmrman界面 cd /home/dmdba/dmdbms/bin ./dmrman use_ap=2 dcr_ini=/home/dmdba/config/dmdcr.ini #备份 backup database '/home/dmdba/config/dsc0_config/dm.ini' full backupset '/home/dmdba/bakfull'; #校验备份 check backupset '/home/dmdba/bakfull'; #退出 RMAN> exit;复制
主节点这里检查对应目录看到备份已经存在后,发送到实时备库机这里
scp -r /home/dmdba/bakfull dmdba@192.168.155.111:/home/dmdba/
在实时备库机这里还原数据库
在备库主机上
一定要确保备库的数据库服务是停止状态,开着的就到bin目录下关闭
./DmServiceDAMENGTEST1 stop #查看是否开启map服务 ps -ef | grep dmdbms复制
使用 dmrman 工具还原备库,dmdba 用户执行:
./dmrman 进入dmrman工具交互界面 校验备份集 check backupset '/home/dmdba/bakfull'; 执行恢复: restore database '/dmdata/data/DAMENGTEST1/dm.ini' from backupset '/home/dmdba/bakfull'; #执行 restore :日志恢复 recover recover database '/dmdata/data/DAMENGTEST1/dm.ini' from backupset '/home/dmdba/bakfull'; # recover update db_magic:标识更新 update db_magic recover database '/dmdata/data/DAMENGTEST1/dm.ini' update db_magic;复制
4.2配置dm.ini
到主节点这里修改
su dmdba vi /home/dmdba/config/dsc0_config/dm.ini # 修改内容如下 INSTANCE_NAME = DSC0 PORT_NUM = 5236 #数据库实例监听端口 DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间 ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态 ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间 MAL_INI = 1 #打开 MAL 系统 ARCH_INI = 1 #打开归档配置 RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息 TIMER_INI = 1 #这是关键,触发异步归档任务 #验证 cat /home/dmdba/config/dsc0_config/dm.ini|grep -E "INSTANCE_NAME|PORT_NUM|ALTER_MODE_STATUS|ENABLE_OFFLINE_TS|MAL_INI|ARCH_INI|TIMER_INI"|grep -v _PORT_NUM 节点2: su dmdba vi /home/dmdba/config/dsc1_config/dm.ini # 修改内容如下 INSTANCE_NAME = DSC1 #不用改动 PORT_NUM = 5236 #数据库实例监听端口 ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间 MAL_INI = 1 #打开 MAL 系统 ARCH_INI = 1 #打开归档配置 RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息 TIMER_INI = 1 #验证 cat /home/dmdba/config/dsc1_config/dm.ini|grep -E "INSTANCE_NAME|PORT_NUM|ALTER_MODE_STATUS|ENABLE_OFFLINE_TS|MAL_INI|ARCH_INI|TIMER_INI"|grep -v _PORT_NUM 实时备库机(111): su dmdba vi /dmdata/data/DAMENGTEST1/dm.ini # 修改内容如下 INSTANCE_NAME = DAMENGTEST1 #不用改动 PORT_NUM = 5236 #数据库实例监听端口 ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间 MAL_INI = 1 #打开 MAL 系统 ARCH_INI = 1 #打开归档配置 RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息 TIMER_INI = 1 #验证 cat /dmdata/data/DAMENGTEST1/dm.ini|grep -E "INSTANCE_NAME|PORT_NUM|ALTER_MODE_STATUS|ENABLE_OFFLINE_TS|MAL_INI|ARCH_INI|TIMER_INI"|grep -v _PORT_NUM复制
4.3配置dmmal.ini
三台机器都要一样,可能前面会已经有了,要重写
vi /home/dmdba/config/dsc0_config/dmmal.ini # 修改内容如下 MAL_CHECK_INTERVAL=87 MAL_CONN_FAIL_INTERVAL=180 MAL_SYS_BUF_SIZE=600 MAL_BUF_SIZE=300 MAL_VPOOL_SIZE=500 MAL_COMPRESS_LEVEL=0 [MAL_INST0] MAL_INST_NAME = DSC0 MAL_HOST = 192.168.100.115 MAL_PORT = 11246 MAL_INST_HOST = 192.168.100.115 MAL_INST_PORT = 5236 MAL_DW_PORT = 52141 MAL_INST_DW_PORT = 5276 [MAL_INST1] MAL_INST_NAME = DSC1 MAL_HOST = 192.168.100.116 MAL_PORT = 11246 MAL_INST_HOST = 192.168.100.116 MAL_INST_PORT = 5236 MAL_DW_PORT = 52141 MAL_INST_DW_PORT = 5276 [MAL_INST2] MAL_INST_NAME = DMSERVER1 MAL_HOST = 192.168.100.111 MAL_PORT = 11246 MAL_INST_HOST = 192.168.100.111 MAL_INST_PORT = 5236 MAL_DW_PORT = 52141 MAL_INST_DW_PORT = 5276 接着发送给另外两台 备库机 scp /home/dmdba/config/dsc0_config/dmmal.ini dmdba@192.168.155.111:/dmdata/data/DAMENGTEST1 节点2 scp /home/dmdba/config/dsc0_config/dmmal.ini dmdba@192.168.155.116:/home/dmdba/config/dsc1_config复制
4.4配置dmarch.ini
主节点: su dmdba vi /home/dmdba/config/dsc0_config/dmarch.ini # 修改内容如下 ARCH_WAIT_APPLY = 0 ARCH_LOCAL_SHARE = 1 ARCH_LOCAL_SHARE_CHECK=0 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = +DMDATA/dmarch/arch_dsc0 ARCH_FILE_SIZE = 256 ARCH_SPACE_LIMIT = 1024 [ARCHIVE_LOCAL2] ARCH_TYPE = LOCAL ARCH_DEST = /dmdata/arch ARCH_FILE_SIZE = 256 ARCH_SPACE_LIMIT = 1024 [ARCHIVE_REMOTE1] ARCH_TYPE = REMOTE ARCH_DEST = DSC1 ARCH_INCOMING_PATH =+DMDATA/dmarch/arch_dsc1 ARCH_FILE_SIZE = 256 ARCH_SPACE_LIMIT = 1024 [ARCHIVE_ASYNC] #异步归档配置,关键 ARCH_TYPE = ASYNC #归档类型为异步 ARCH_DEST = DMSERVER1 ARCH_TIMER_NAME = RT_TIMER #定时器名称 节点2: su dmdba vi /home/dmdba/config/dsc1_config/dmarch.ini # 修改内容如下 ARCH_WAIT_APPLY = 0 ARCH_LOCAL_SHARE = 1 ARCH_LOCAL_SHARE_CHECK=0 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = +DMDATA/dmarch/arch_dsc1 ARCH_FILE_SIZE = 256 ARCH_SPACE_LIMIT = 1024 [ARCHIVE_LOCAL2] ARCH_TYPE = LOCAL ARCH_DEST = /dmdata/arch ARCH_FILE_SIZE = 256 ARCH_SPACE_LIMIT = 1024 [ARCHIVE_REMOTE1] ARCH_TYPE = REMOTE ARCH_DEST = DSC0 ARCH_INCOMING_PATH =+DMDATA/dmarch/arch_dsc0 ARCH_FILE_SIZE = 256 ARCH_SPACE_LIMIT = 1024 [ARCHIVE_ASYNC] #异步归档配置,关键 ARCH_TYPE = ASYNC ARCH_DEST = DMSERVER1 ARCH_TIMER_NAME = RT_TIMER 备库: su dmdba vi /dmdata/data/DAMENGTEST1/dmarch.ini # 修改内容如下 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /dmdata/arch ARCH_FILE_SIZE = 256 ARCH_SPACE_LIMIT = 1024复制
4.5配置dmtimer.ini
只配置DSC集群节点即可,两节点配置一样
主节点: su dmdba vi /home/dmdba/config/dsc0_config/dmtimer.ini # 修改内容如下 定时器配置为每天每5分钟触发主库发送归档日志到异步备库,可以根据实际情况再做调整 [RT_TIMER] #和dmarch.ini 中的ARCH_TIMER_NAME 一致 TYPE = 2 #2 按日执行 FREQ_MONTH_WEEK_INTERVAL = 1 #间隔月或周数 FREQ_SUB_INTERVAL = 0 #间隔天数 FREQ_MINUTE_INTERVAL = 5 #间隔分钟数 START_TIME = 00:00:00 #开始时间 END_TIME = 00:00:00 #结束时间(分钟等级可以不要) DURING_START_DATE = 2021-5-15 12:00:00 #开始时间点 DURING_END_DATE = 9999-12-31 23:59:59 #结束时间点 NO_END_DATE_FLAG = 1 #是否结束标记 DESCRIBE = RT_TIMER #定时器描述 IS_VALID = 1 #0:表示关闭定时器,1:表示启用定时器 TYPE: 异步归档的最小触发间隔是1 分钟,定时器调度类型: 1:执行一次 2:按日执行 3:按周执行 4:按月执行的第几天 5:按月执行的第一周 6:按月执行的第二周 7:按月执行的第三周 8:按月执行的第四周 9:按月执行的最后一周 节点2: su dmdba vi /home/dmdba/config/dsc1_config/dmtimer.ini # 修改内容如下 [RT_TIMER] TYPE = 2 FREQ_MONTH_WEEK_INTERVAL = 1 FREQ_SUB_INTERVAL = 0 FREQ_MINUTE_INTERVAL = 1 START_TIME = 15:00:00 END_TIME = 15:00:10 DURING_START_DATE = 2021-5-15 12:00:00 DURING_END_DATE = 9999-12-31 23:59:59 NO_END_DATE_FLAG = 1 DESCRIBE = RT_TIMER IS_VALID = 1复制
4.6配置dmwatcher.ini
异步备库仅需本地守护(无自动切换功能),备库不参与主备集群的故障切换,仅接收数据,DW_TYPE = local
主节点: su dmdba vi /home/dmdba/config/dsc0_config/dmwatcher.ini # 修改内容如下 [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 = /home/dmdba/config/dsc0_config/dm.ini DCR_INI=/home/dmdba/config/dmdcr.ini INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/DmServiceDSC0 start INST_AUTO_RESTART = 0 ##打开实例的自动启动功能 RLOG_SEND_THRESHOLD = 0 RLOG_APPLY_THRESHOLD = 0 节点2: su dmdba vi /home/dmdba/config/dsc1_config/dmwatcher.ini # 修改内容如下 [GRP1] DW_TYPE = LOCAL DW_MODE = MANUAL DW_ERROR_TIME = 120 INST_RECOVER_TIME = 60 INST_ERROR_TIME = 120 INST_OGUID = 453331 INST_INI = /home/dmdba/config/dsc1_config/dm.ini DCR_INI=/home/dmdba/config/dmdcr.ini INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/DmServiceDSC1 start INST_AUTO_RESTART = 0 RLOG_SEND_THRESHOLD = 0 RLOG_APPLY_THRESHOLD = 0 备库: su dmdba vi /dmdata/data/DAMENGTEST1/dmwatcher.ini # 修改内容如下 [GRP1] DW_TYPE = LOCAL DW_MODE = MANUAL DW_ERROR_TIME = 120 INST_RECOVER_TIME = 60 INST_ERROR_TIME = 120 INST_OGUID = 453331 INST_INI = /dmdata/data/DAMENGTEST1/dm.ini INST_AUTO_RESTART = 0 INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/DmServiceDAMENGTEST1 start RLOG_SEND_THRESHOLD = 0 RLOG_APPLY_THRESHOLD = 0复制
4.7以mount状态启动实例
--修改启动脚本的启动状态都为mount su dmdba cd /home/dmdba/dmdbms/bin vim DmServiceDSC0 vim DmServiceDSC1 vim DmServiceDAMENGTEST1 START_MODE=open 修改成 START_MODE=mount --先启动DSC集群的实例(尽量同步),再启动备库的实例 su dmdba cd /home/dmdba/dmdbms/bin ./DmServiceDSC0 start ./DmServiceDSC1 start ./DmServiceDAMENGTEST1 start复制
这里配置了启动脚本打开的状态是mount,只要没有开启守护进程,就不会变成open状态。
用disql登录进去实例,就可以看到是不是mount状态了
4.8修改节点的oguid和模式(dmdba用户操作)
所有的实例都处于mount状态!
DSC集群任意节点设置就可以了,因为是同一个数据库。
DSC节点: cd /home/dmdba/dmdbms/bin ./disql SYSDBA/Dameng123 SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); sp_set_oguid(453331); alter database primary; SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); exit 备库 cd /home/dmdba/dmdbms/bin ./disql SYSDBA/Dameng123 SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); sp_set_oguid(453331); alter database standby; SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); exit复制
4.9注册数据守护服务并启动守护进程(dmdba用户操作)
节点1: su root cd /home/dmdba/dmdbms/script/root/ ./dm_service_installer.sh -t dmwatcher -p DSC0 -watcher_ini /home/dmdba/config/dsc0_config/dmwatcher.ini --开启守护进程 su dmdba ./DmWatcherServiceDSC0 start 节点2: su root cd /home/dmdba/dmdbms/script/root/ ./dm_service_installer.sh -t dmwatcher -p DSC1 -watcher_ini /home/dmdba/config/dsc1_config/dmwatcher.ini --开启守护进程 su dmdba ./DmWatcherServiceDSC1 start 备库: su root cd /home/dmdba/dmdbms/script/root/ ./dm_service_installer.sh -t dmwatcher -p DMSERVER1 -watcher_ini /dmdata/data/DAMENGTEST1/dmwatcher.ini --开启守护进程 su dmdba ./DmWatcherServiceDMSERVER1 start 启动后确认数据库的状态,守护进程会将数据库实例服务全部拉起为open状态。 用disql查看 节点1: cd /home/dmdba/dmdbms/bin ./disql SYSDBA/Dameng123@192.168.100.115:5236 exit 节点2: cd /home/dmdba/dmdbms/bin ./disql SYSDBA/Dameng123@192.168.100.116:5236 exit 备库 cd /home/dmdba/dmdbms/bin ./disql SYSDBA/Dameng123 exit复制
4.10配置监视器
用一台新的,装有达梦数据库软件的主机配置
用dmdba用户新建确认监视器配置文件 dmmonitor.ini(dmmonitor.ini 存放目录没有限制,一般和 dm.ini 存放在同一个目录),执行以下命令
su dmdba vi /home/dmdba/dmdbms/dmmonitor.ini #内容为 MON_DW_CONFIRM = 0 #0为普通监视器,要手动切换主备,1为确认监视器可自动切换主备 MON_LOG_PATH =/home/dmdba/dmdbms/log #根据实际环境修改路径 MON_LOG_INTERVAL = 0 #每隔 0s 定时记录系统信息到日志文件 MON_LOG_FILE_SIZE = 32 #单个日志大小,单位 MB MON_LOG_SPACE_LIMIT = 0 #日志上限,单位 MB [GRP1] #组名 MON_INST_OGUID = 453331 #组 GRP1 的唯一 OGUID 值 MON_DW_IP = 192.168.52.50:52141/192.168.52.51:52141 #DSC的MAL_HOST: MAL_DW_PORT MON_DW_IP = 192.168.52.53:52141 #备库机的 #启动监视器 ./dmmonitor /dmdata/data/dmdb/dmmonitor.ini 可以看到DSC集群和异步备库都是正常状态,WTYPE=LOCAL守护进程类型为LOCAL,不能自动切换主备,复制
4.11验证
DSC节点下执行:
./disql SYSDBA/Dameng123 --读 select * from TEST_DSC; --写 INSERT INTO TEST_DSC VALUES (4, 'DSC集群+异步备份'); COMMIT;复制
在异步备库上看不到实时的数据:
根据定时器设置的间隔时间,我这里设置的是每隔五分钟推送
五分钟后在备库这里就能看到DSC集群新增的数据了。
5.DSC+DW集群主备切换
在监视器输入命令查看当前集群可以切换的备机:
choose switchover复制
因为我这里只加装了一台备库,所以只显示一台:
组名就是dmwatcher.ini设置的组名
switchover GRP1.DMSERVER1复制

在备库机用disql进去就变成了主库
在备库机这里插入数据
./disql SYSDBA/Dameng123 --读 select * from TEST_DSC; --写 INSERT INTO TEST_DSC VALUES (3, 'DSC+DW切换主备'); COMMIT;复制

到DSC集群去查看
节点1: switchover GRP1.DSC0 cd /home/dmdba/dmdbms/bin ./disql SYSDBA/Dameng123@192.168.100.115:5236 --读 select * from TEST_DSC; exit 节点2: cd /home/dmdba/dmdbms/bin ./disql SYSDBA/Dameng123@192.168.100.116:5236 --读 select * from TEST_DSC; exit复制

6.关于DSC集群+DW集群启动关闭顺序
6.1关闭顺序

6.2开启顺序

配置dmcss自动拉起功能(启动了dmcss后,自动拉起ASM和DB服务,不需要手动启动):
修改DSC集群各个节点的dmdcr.ini文件
#定义ASM服务(DMASMSVR)故障后自动拉起的等待时间(秒)
#10秒后尝试拉起ASM服务
DMDCR_ASM_RESTART_INTERVAL = 10 #这里为0表示不自动拉起
#定义数据库实例(DMSERVER)故障后自动拉起的等待时间(秒)
#10秒后尝试拉起DB服务
DMDCR_DB_RESTART_INTERVAL = 10 #这里为0表示不自动拉起
#上面设置的时间实际上可能会更长,因为启动要时间
#ASM/DB服务需以系统服务形式注册(如 DmServiceDMSERVER),确保DMCSS可通过系统命令拉起服务
#启动 ASM 服务命令
DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/DmASMSvrService_DSC0 start
#启动数据库实例命令
DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/DmService_DSC0 start
DMCSS会持续监控ASM/DB服务的活动状态。若服务异常停止且超时(达到配置的等待时间),DMCSS会自动重新启动服务



