在节点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;
可以是数据库服务关闭或者是禁用网卡或者是关闭节点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插入的数据
流程:
1.先在新的主机上安装达梦数据库,初始化数据库服务,创建实例。
2.把DSC集群看成一个整体,就是一个主库,添加的备库机时单独的数据库,就是一个备库。
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
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
我的是118这台,这一步的操作只是关掉DSC的实例而已,css和ASM服务都没有关闭,否则会报错。
su - dmdba
cd /home/dmdba/dmdbms/bin
./dmcssm ini_path=/home/dmdba/dmdbms/dmcssm.ini
# 执行命令停止dsc集群组,停止所有实例
ep stop GRP_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;
到主节点这里修改
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
三台机器都要一样,可能前面会已经有了,要重写
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
主节点:
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
主节点:
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
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状态!
节点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
节点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
用一台新的,装有达梦数据库软件的主机,配置
用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相同,说明数据库归档同步。
要求已经做好DSC集群,且备库机已经完成了初始化!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;
到主节点这里修改
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
三台机器都要一样,可能前面会已经有了,要重写
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
主节点:
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
只配置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
异步备库仅需本地守护(无自动切换功能),备库不参与主备集群的故障切换,仅接收数据,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
--修改启动脚本的启动状态都为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状态了
所有的实例都处于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
节点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
用一台新的,装有达梦数据库软件的主机配置
用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,不能自动切换主备,
DSC节点下执行:
./disql SYSDBA/Dameng123
--读
select * from TEST_DSC;
--写
INSERT INTO TEST_DSC VALUES (4, 'DSC集群+异步备份');
COMMIT;
在异步备库上看不到实时的数据:
根据定时器设置的间隔时间,我这里设置的是每隔五分钟推送
五分钟后在备库这里就能看到DSC集群新增的数据了。
在监视器输入命令查看当前集群可以切换的备机:
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
配置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会自动重新启动服务
社区地址:https://eco.dameng.com
文章
阅读量
获赞