1 主机规划
节点 | IP地址 | 端口 |
DSC0 | 172.16.20.141 | 5236 |
DSC1 | 172.16.20.74 | 5236 |
DW_DSC | 172.16.20.221 | 5236 |
2 2节点DSC搭建
请看2节点DSC的搭建,这里就不在介绍
https://blog.csdn.net/tbh7758258/article/details/117330090
搭建完dsc后正常退出 DMDSC 集群的两个 dmserver 节点实例,不需要退出 dmcss
和 dmasmsvr。
2.1 编辑两个 DMDSC 节点的 dmarch.ini 文件,增加本地归档和远程归档,
dmarch.ini 文件放在各自 dm.ini 中指定的 CONFIG_PATH 目录下。
DSC0,DSC1的dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE= LOCAL
ARCH_DEST= /home/data/dsc0_config/bak
ARCH_FILE_SIZE= 128
ARCH_SPACE_LIMIT= 0
[ARCHIVE_REMOTE]
ARCH_TYPE= REMOTE
ARCH_DEST= DSC1
ARCH_FILE_SIZE= 128
ARCH_SPACE_LIMIT= 0
ARCH_INCOMING_PATH =/home/data/dsc1_config/bak
2.2 配置dm.ini,将两节点的归档参数设置为1
ARCH_INI = 1
2.3 备份 DMDSC 库
重启 DMDSC 集群的两个 dmserver 实例,然后再正常退出。在 DMDSC 集群生成有归档日志的情况下进行脱机备份,以便后续校验日志连续性时使用。
启动 dmrman(bin目录下)
./dmrman use_ap=2 dcr_ini=/home/data/dmdcr.ini
--脱机备份 DMDSC 集群
RMAN>BACKUP DATABASE '/home/data/dsc0_config/dm.ini' FULL BACKUPSET '/home/data/dsc0_config/bak/db_full_bak_for_DSC';
--将db_full_bak_for_DSC文件发送到单节点备库的
/home/dmdba/dmdbms/data/DW_DSC/bak/目录下
scp -r db_full_bak_for_DSC/ dmdba@172.16.20.221:/home/dmdba/dmdbms/data/DW_DSC/bak/
3 配置单节点备库
3.1 初始化备库
./dminit path=/home/dmdba/dmdbms/data/DW_DSC .......
3.2 启动 dmrman
./dmrman use_ap=2
3.3 使用 DMDSC 库的备份集还原恢复到单节点备库
还原:
RMAN>restore database '/home/dmdba/dmdbms/data/DW_DSC/dm.ini' from backupset '/home/dmdba/dmdbms/data/DW_DSC/bak/db_full_bak_for_DSC';
恢复:
RMAN>RECOVER DATABASE '/home/dmdba/dmdbms/data/DW_DSC/dm.ini' FROM BACKUPSET '/home/dmdba/dmdbms/data/DW_DSC/bak/db_full_bak_for_DSC';
更新:
RMAN>RECOVER DATABASE '/home/dmdba/dmdbms/data/DW_DSC/dm.ini' UPDATE DB_MAGIC;
3.4 配置所有节点的dm.ini
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
3.5 配置dmmal.ini
在 DMDSC 集群的 dmmal.ini 文件基础上,增加备库 GRP1_RT_01 的配置项。所有节点实例的 dmmal.ini 文件内容是一致的,配置完成后,拷贝到每个节点实例dm.ini 中指定的 CONFIG_PATH 目录下。
dmmal.ini:
MAL_CHECK_INTERVAL = 30 #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 10 #判定MAL链路断开的时间
[mal_inst0]
mal_inst_name = DSC0
mal_host = 172.16.20.141
mal_port = 9340
MAL_INST_HOST = 172.16.20.141 #实例的对外服务IP地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT= 3569 #实例本地的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 4569 #实例监听守护进程TCP连接的端口
[mal_inst1]
mal_inst_name = DSC1
mal_host = 172.16.20.74
mal_port = 9340
MAL_INST_HOST = 172.16.20.74 #实例的对外服务IP地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT= 3569 #实例本地的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 4569 #实例监听守护进程TCP连接的端口
[mal_inst2]
mal_inst_name = DW_DSC #与dm.ini instance_name相同
mal_host = 172.16.20.221
mal_port = 9340
MAL_INST_HOST = 172.16.20.221 #实例的对外服务IP地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT= 3569 #实例本地的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 4569 #实例监听守护进程TCP连接的端口
3.6 配置 dmarch.ini
再次编辑各个节点的 dmarch.ini 文件,增加实时归档配置。
DSC0的dmarch.ini:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/data/dsc0_cfg/bak
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCHIVE_REMOTE]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
ARCH_INCOMING_PATH =/home/data/dsc1_cfg/bak
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DW_DSC #因为我单节点实例名是 DW_DSC
3.7 DSC1的dmarch.ini:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST =/home/data/dsc1_cfg_/bak
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCHIVE_REMOTE]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
ARCH_INCOMING_PATH = /home/data/dsc0_cfg/bak
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DW_DSC #因为我单节点实例名是 DW_DSC
3.8 单节点DMSERVER的dmarch.ini:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/dmdbms/data/DW_DSC/bak
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DSC0/DSC1
4 配置 dmwatcher.ini
依次配置每个节点实例的 dmwatcher.ini 文件,放到各自 dm.ini 中指定的CONFIG_PATH 目录下
4.1 DSC0的dmwatcher.ini:
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #手动切换模式
DW_ERROR_TIME = 60 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 30 #本地实例故障认定时间
INST_INI = /home/data/dsc0_config/dm.ini #dm.ini 配置文件路径
DCR_INI = /home/data/dmdcr.ini #dmdcr.ini 配置文件路径
INST_OGUID = 1000 #守护系统唯一 OGUID 值
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动
INST_AUTO_RESTART = 0 #关闭实例的自动启动功能
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭
4.2 DSC1的dmwatcher.ini:
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #手动切换模式
DW_ERROR_TIME = 60 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 30 #本地实例故障认定时间
INST_INI = /home/data/dsc1_config/dm.ini #dm.ini 配置文件路径
DCR_INI = /home/data/dmdcr.ini #dmdcr.ini 配置文件路径
INST_OGUID = 1000 #守护系统唯一 OGUID 值
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动
INST_AUTO_RESTART = 0 #关闭实例的自动启动功能
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭
4.3 单节点的dmwatcher.ini:
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = MANUAL
DW_ERROR_TIME = 60
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 30
INST_INI = /home/dmdba/dmdbms/data/DW_DSC/dm.ini
INST_OGUID = 1000
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver
INST_AUTO_RESTART = 0 #对单节点,如果需要打开自动拉起功能,将此配置修改为 1 即可
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
5 配置 dmmonitor.ini
在单节点上配置,放在/home/dmdba/dmdbms/data/DW_DSC下
dmmonitor.ini:
MON_LOG_PATH = /home/dmdba/dmdbms/2des_dw_monitor_log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 64
MON_LOG_SPACE_LIMIT = 0
MON_DW_CONFIRM = 0
[GRP1]
MON_INST_OGUID = 1000
MON_DW_IP = 172.16.20.141:3569/172.16.20.74:3569
MON_DW_IP = 172.16.20.221:3569
6 配置 dmdcr.ini
DMDSC 集群中 dmserver 的自动拉起是由 dmcss 执行的,如果不需要打开 dmcss 的自动拉起功能,则可以跳过此章节。否则需要修改 dmdcr.ini 中的自动拉起配置参数(将时间设置不为0即可),此参数修改完成后,需要重启dmcss 才可以生效,为了避免重启 dmcss 引发 dmasmsvr 被强制关闭,这里先将 dmcss和 dmasmsvr 都正常退出。
另外要注意,本示例中是用命令行方式启动,启动参数中指定以 Mount 方式拉起
dmserver,如果是用服务方式启动,服务脚本中也一定要指定以 Mount 方式拉起dmserver。
7 启动DMCSS、DMASM服务程序
在两个节点分别先后启动dmcss,dmasm程序。
手动启动 dmcss 命令:
./dmcss DCR_INI=/home/data/dmdcr.ini
手动启动 dmasmsvr 命令:
./dmasmsvr DCR_INI=/home/data/dmdcr.ini
8 启动主备库(注意实例都要使用 Mount 方式启动)
启动DSC0:
./dmserver /home/data/dsc0_config/dm.ini DCR_INI=/home/data/dmdcr.ini mount
启动DSC1:
./dmserver /home/data/dsc1_config/dm.ini DCR_INI=/home/data/dmdcr.ini mount
启动单节点备库
./dmserver /home/dmdba/dmdbms/data/DW_DSC/dm.ini mount
9 设置 OGUID和模式
启动disql
DSC任意一节点:
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>SP_SET_OGUID(1000);
SQL>ALTER DATABASE PRIMARY;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
单节点:
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>SP_SET_OGUID(1000);
SQL>ALTER DATABASE STANDBY;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
启动守护进程
启动DSC0守护进程:
./dmwatcher /home/data/dsc0_config/dmwatcher.ini
启动DSC1守护进程:
./dmwatcher /home/data/dsc1_config/dmwatcher.ini
启动单节点的守护进程:
./dmwatcher /home/dmdba/dmdbms/data/DW_DSC/dmwatcher.ini
启动监视器
启动配置在单节点备库的监视器:
./dmmonitor path=/home/dmdba/dmdbms/data/DW_DSC/dmmonitor.ini
至此 DMDSC 集群的实时数据守护系统搭建完毕,在搭建步骤和各项配置都正确的情况
下,在监视器上执行 show 命令,可以监控到所有实例都处于 Open 状态,所有守护进程也都处于 Open 状态,即为正常运行状态。
推荐使用达梦的云适配中心网站了解更多使用内容:https://eco.dameng.com,或者到云适配中心的社区去提问哦!