注册
如何部署达梦DSC+DW数据守护集群
专栏/技术分享/ 文章详情 /

如何部署达梦DSC+DW数据守护集群

最伟大的哥哥 2023/10/31 1523 1 0
摘要


一、什么是DSC+DW
DMDSC:达梦共享存储集群,允许多个数据库实例同时访问、操作同一数据库,具有高可用、高性能、负载均衡等特性。DMDSC支持故障自动切换和故障自动重加入,某一个数据库实例故障后,不会导致数据库服务无法提供。数据文件、控制文件在集群系统中只有一份,不论有几个节点,这些节点都平等地使用这文件,这些文件保存在共享存储上。每个节点有自己独立的联机日志和归档日志,其中联机日志保存在共享存储上,归档日志可以保存在本地存储上也可以保存在共享存储上

DMDW:达梦数据守护集群,用于解决由于硬件故障、自然灾害等原因导致的数据库服务长时间中断问题,提供不间断的数据库服务,可同时满足用户对数据安全性和高可用性的要求。它的实现原理是将主库(生产库)产生的Redo日志传输到备库,备库接收并重新应用 Redo 日志,从而实现备库与主库的数据同步6
​​

由上图可以看出,达梦dsc有实例1、实例2、实例3构成,均为主库可提供读写,实现了大规模的负载均衡,同时DMDW达梦数据守护集群保证保证安全性和可持续性

二、集群规划
类型 业务IP 心跳IP 实例名 节点用途
DSC主库 192.168.100.1 192.168.99.1 DSC1 DSC主库1
192.168.100.2 192.168.99.2 DSC2 DSC主库2
DSC_DW备库 192.168.100.3 192.168.99.3 DW_S DSC备库
三、搭建DSC
3.1、环境准备
DMDSC共享存储设备支持裸设备及块设备,本次我采用在虚拟机上裸设备进行搭建

3.2、绑定裸设备
--输入 fdisk /dev/sdb(只需要一个节点进行操作)
划分四个主分区,第一个100M,第二个100M、第三个2048M,其余的给第四个分区
 Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048      206847      102400   83  Linux
/dev/sdb2          206848      411647      102400   83  Linux
/dev/sdb3          411648     4605951     2097152   83  Linux
/dev/sdb4         4605952   104857599    50125824   83  Linux

--绑定裸设备(dsc的两台主机都需要绑定)
vi /usr/lib/udev/rules.d/60-raw.rules
添加如下的内容:
ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdb2", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdb3", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="sdb4", RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", KERNEL=="raw[1-4]", OWNER="dmdba", GROUP="dinstall", MODE="660"
#批量增加
echo '
ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
 
ACTION=="add", KERNEL=="sdb2", RUN+="/bin/raw /dev/raw/raw2 %N"
 
ACTION=="add", KERNEL=="sdb3", RUN+="/bin/raw /dev/raw/raw3 %N"
 
ACTION=="add", KERNEL=="sdb4", RUN+="/bin/raw /dev/raw/raw4 %N"
 
ACTION=="add", KERNEL=="raw[1-4]", OWNER="dmdba", GROUP="dinstall", MODE="660"
' >/usr/lib/udev/rules.d/60-raw.rules

cat /usr/lib/udev/rules.d/60-raw.rules

--完成上述配置后,需要通过UDEV持久化
udevadm trigger --type=devices --action=change
#重启服务器查看是否生效
ll /dev/raw
aw1  raw2  raw3  raw4  rawctl

3.3、安装达梦数据库
-----前期已经部署很多,这里不再赘述

3.4、DMDSC配置文件
我这里DSC所有的配置文件均存放在一个位置:

3.4.1、配置dmdcr_cfg.ini
#两个节点均配置

echo ' #批量添加以下内容:
DCR_N_GRP         = 3                 #集群环境包括多少个 group,取值范围 1~16
DCR_VTD_PATH      = /dev/raw/raw2   #Voting Disk 路径
DCR_OGUID         = 63635             #消息标识,dmcssm 登录 dmcss 消息校验用
 
[GRP]     #[GRP]表示新建一个 Group
DCR_GRP_TYPE = CSS          #组类型(CSS\ASM\DB)
DCR_GRP_NAME = GRP_CSS      #组的名字
DCR_GRP_N_EP = 2            #组内节点个数 N,最大 16
DCR_GRP_DSKCHK_CNT = 60     #磁盘心跳机制,容错时间,单位秒,缺省 60S,取值范围 5~600
 
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 192.168.99.1
DCR_EP_PORT = 9341
 
[GRP_CSS]
DCR_EP_NAME = CSS2  
DCR_EP_HOST = 192.168.99.2
DCR_EP_PORT = 9343
 
[GRP]     #代表新建的组
DCR_GRP_TYPE = ASM           #组类型         
DCR_GRP_NAME = GRP_ASM       #组名
DCR_GRP_N_EP = 2             #组内节点数
DCR_GRP_DSKCHK_CNT = 60      #容错时间
 
[GRP_ASM]
DCR_EP_NAME = ASM0          #组成员名字
DCR_EP_SHM_KEY = 93360      #共享内存标识,数值类型(ASM 有效,初始化共享内存的标识符),应为大于 0 的 4 字节整数
DCR_EP_SHM_SIZE = 20             #共享内存大小,单位 M,(ASM 有效,初始化共享内存大小),取值范围10~1024
DCR_EP_HOST = 192.168.99.1
DCR_EP_PORT = 9349
DCR_EP_ASM_LOAD_PATH = /dev/raw   # ASM 磁盘扫描路径,Linux 下一般为/dev/raw,
 
[GRP_ASM]                          
DCR_EP_NAME = ASM1            #组成员2的名字
DCR_EP_SHM_KEY = 93361
DCR_EP_SHM_SIZE = 20
DCR_EP_HOST = 192.168.99.2
DCR_EP_PORT = 9351
DCR_EP_ASM_LOAD_PATH = /dev/raw
 
[GRP]                      #新建组
DCR_GRP_TYPE = DB          #新建组类型数据库
DCR_GRP_NAME = GRP_DSC     #组名
DCR_GRP_N_EP = 2           #组成员
DCR_GRP_DSKCHK_CNT = 60    #容错时间
 
[GRP_DSC]
DCR_EP_NAME = DSC1         #组成员1的名字
DCR_EP_SEQNO = 0           #组内序号,CSS/ASM 不能配置,自动分配 DB 可配置0到n_ep -1,组内不能重复,不配置则自动分配
DCR_EP_PORT = 8344          
DCR_CHECK_PORT = 9741      # DCR 检查端口号。检查实例是否活动的时候用,各实例不能冲突
 
[GRP_DSC]
DCR_EP_NAME = DSC2 
DCR_EP_SEQNO = 1              
DCR_EP_PORT = 8346         # 此端口信息决定数据库访问的最终端口信息,此端口指定后dm.ini文件中在指定默认无效
DCR_CHECK_PORT = 9742      # DCR 检查端口号。检查实例是否活动的时候用,各实例不能冲突
'>> /dm8/dmdbms/config/dmdcr_cfg.ini
cat /dm8/dmdbms/config/dmdcr_cfg.ini

3.4.2、创建且初始化DMASM磁盘
#任意一个节点操作

--使用 DMASMCMD 工具初始化(dmdba用户执行)
DMASMCMD是DMASM文件系统初始化工具,用来格式化裸设备或块设备为DMASM磁盘,
并初始化 DCR Disk、Voting Disk。格式化 DMASM 磁盘就是在裸设备或块设备的头部
写入 DMASM 磁盘特征描述符号,包括 DMASM 标识串、DMASM 磁盘名、以及 DMASM 磁盘大
小等信息。其中 Voting Disk 和 DCR Disk 也会被格式化为 DMASM 磁盘

cd /dm8/dmdbms/bin   #仅在节点1执行,因为是共享存储,在节点1对共享磁盘做的操作,节点2 也能生效

#格式化裸设备:仅在节点1执行,因为是共享存储,在节点1对共享磁盘做的操作,节点2 也能生效
./dmasmcmd
create dcrdisk '/dev/raw/raw1' 'dcr'
create votedisk '/dev/raw/raw2' 'vote'
create asmdisk '/dev/raw/raw3' 'LOG0'
create asmdisk '/dev/raw/raw4' 'DATA0'

#初始化DCR & Voting Disk(注册表盘和表决盘)仅在节点1执行,因为是共享存储,在节点1对共享磁盘做的操

作,节点2 也能生效
init dcrdisk '/dev/raw/raw1'  from '/dm8/dmdbms/config/dmdcr_cfg.ini' identified by 'admin123456'
init votedisk '/dev/raw/raw2' from '/dm8/dmdbms/config/dmdcr_cfg.ini'

#执行结果
ASM>init dcrdisk '/dev/raw/raw1'  from '/dm8/dmdbms/config/dmdcr_cfg.ini' identified by 'admin123456'
[Trace]DG 126 alloc one extent for inodes, addr(disk_id, disk_auno, extent_no):(0,0,1).
[Trace]DG 126 allocate 4 extents for file 0xfe000002.
[Trace]DG 126 alloc 4 extents for 0xfe000002, addr(disk_id, disk_auno, extent_no):(0, 0, 2)->(0, 0, 5), need_init = 1.
Used time: 14.138(ms)

ASM>init votedisk '/dev/raw/raw2' from '/dm8/dmdbms/config/dmdcr_cfg.ini'
[Trace]DG 125 alloc one extent for inodes, addr(disk_id, disk_auno, extent_no):(0,0,1).
[Trace]DG 125 allocate 4 extents for file 0xfd000002.
[Trace]DG 125 alloc 4 extents for 0xfd000002, addr(disk_id, disk_auno, extent_no):(0, 0, 2)->(0, 0, 5), need_init = 1.

3.4.3、配置dmasvrmal.ini
#两个节点均配置

#DMASMSVR 是提供 DMASM 服务的主要载体,每个提供 DMASM 服务的节点都必须启动一个 DMASMSVR

服务器
cd /dm8/dmdbms/config
vi dmasvrmal.ini
#添加以下内容

echo '#批量添加以下内容
[MAL_INST1]
MAL_INST_NAME  = ASM0
MAL_HOST       = 192.168.99.1
MAL_PORT       = 7236         
 
[MAL_INST2]    
MAL_INST_NAME  = ASM1
MAL_HOST       = 192.168.99.2
MAL_PORT       = 7237
'>> /dm8/dmdbms/config/dmasvrmal.ini

3.4.4、配置dmdcr.ini

--节点1添加以下内容
cd /dm8/dmdbms/config
vi dmdcr.ini

echo '#批量添加以下内容
DMDCR_PATH     =/dev/raw/raw1
DMDCR_MAL_PATH =/dm8/dmdbms/config/dmasvrmal.ini  #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO   = 0                                 #DCR序号
 
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL =1 #为0,不自动拉起dmasm ;1,自动拉起dmasm
DMDCR_ASM_STARTUP_CMD = /dm8/dmdbms/bin/dmasmsvr  dcr_ini=/dm8/dmdbms/config/dmdcr.ini
 
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 1 #为0,不自动拉起dmserver;自动拉起dmasm
DMDCR_DB_STARTUP_CMD = /dm8/dmdbms/bin/dmserver  path=/dm8/dmdbms/data/DSC1_CONF/dm.ini dcr_ini=/dm8/dmdbms/config/dmdcr.ini #mount
'> /dm8/dmdbms/config/dmdcr.ini
cat /dm8/dmdbms/config/dmdcr.ini

--节点2添加以下内容
cd /dm8/dmdbms/config
vi dmdcr.ini
echo '#批量添加以下内容
DMDCR_PATH     =/dev/raw/raw1
DMDCR_MAL_PATH =/dm8/dmdbms/config/dmasvrmal.ini  #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO   = 1                                #DCR序号
 
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL =1 #为0,不自动拉起dmasm ;1,自动拉起dmasm
DMDCR_ASM_STARTUP_CMD = /dm8/dmdbms/bin/dmasmsvr  dcr_ini=/dm8/dmdbms/config/dmdcr.ini
 
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 1 #为0,不自动拉起dmserver;自动拉起dmasm
DMDCR_DB_STARTUP_CMD = /dm8/dmdbms/bin/dmserver  path=/dm8/dmdbms/data/DSC2_CONF/dm.ini dcr_ini=/dm8/dmdbms/config/dmdcr.ini mount
'> /dm8/dmdbms/config/dmdcr.ini
cat /dm8/dmdbms/config/dmdcr.ini

3.4.5、启动DMCSS,DMASM服务
#2个节点分别开2个窗口,先后分别启动 dmcss、dmasmsvr 程序。
启动dmcss命令:(2个节点分别运行) #如果配置了自动拉起,第二步就不用执行
cd /dm8/dmdbms/bin
./dmcss dcr_ini=/dm8/dmdbms/config/dmdcr.ini

启动dmasmsvr命令:(2个节点分别运行)#注意:如果dmdcr已经配置自动拉起功能,那么这一步就不用执行
cd /dm8/dmdbms/bin
./dmasmsvr dcr_ini=/dm8/dmdbms/config/dmdcr.ini

#主屏幕打印相关信息
cd /dm8/dmdbms/bin
./dmcss dcr_ini=/dm8/dmdbms/config/dmdcr.ini
dmcss V8
设置 CSS[0]为主 CSS
[ASM]: 设置 EP[0]为控制节点
[ASM]: 设置命令[START NOTIFY], 目标节点[0], 命令序号[2]
[ASM]: 设置命令[EP START], 目标节点[0], 命令序号[3]
[ASM]: 设置命令[NONE], 目标节点[0], 命令序号[0]
[ASM]: 设置命令[EP START], 目标节点[1], 命令序号[9]
[ASM]: 设置命令[NONE], 目标节点[1], 命令序号[0]
[ASM]: 设置命令[EP OPEN], 目标节点[0], 命令序号[12]
[ASM]: 设置命令[EP OPEN], 目标节点[1], 命令序号[13

--查看服务是否正常(dmcss、dmasmsvr)
ps -ef |grep dmdba

dmdba     5360  5304  0 17:37 pts/2    00:00:00 ./dmcss dcr_ini=/dm8/dmdbms/config/dmdcr.ini
dmdba     5372     1  0 17:38 ?        00:00:00 /dm8/dmdbms/bin/dmasmsvr dcr_ini=/dm8/dmdbms/config/dmdcr.ini

3.4.6、创建DMASM磁盘组
#DMASMTOOL 是 DMASM 文件系统管理工具,提供了一套类 Linux 文件操作命令,
#用于管理 DMASM 文件,是管理、维护 DMASM 的好帮手
$cd /dm8/dmdbms/bin
./dmasmtool  DCR_INI=/dm8/dmdbms/config/dmdcr.ini  #如果此时ASM连接异常,可能是内部通信不通

#创建日志磁盘组
create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'
#创建数据磁盘组
create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'

3.4.7、配置dminit.ini
echo '#批量添加以下内容:
db_name         = dsc
system_path     = +DMDATA/data
 
system          = +DMDATA/data/dsc/system.dbf
system_size     = 128
roll            = +DMDATA/data/dsc/roll.dbf
roll_size       = 128
main            = +DMDATA/data/dsc/main.dbf
main_size       = 128
ctl_path        = +DMDATA/data/dsc/dm.ctl
ctl_size        = 8
log_size        = 256
dcr_path        = /dev/raw/raw1
dcr_seqno       = 0
auto_overwrite  = 1
 
[DSC1] 
config_path    = /dm8/dmdbms/data/DSC1_CONF
port_num       = 8344                       #端口号
mal_host       = 192.168.99.1
mal_port       = 8338
log_path       = +DMLOG/log/DSC1_log01.log   
log_path       = +DMLOG/log/DSC1_log02.log
 
[DSC2]  
config_path    = /dm8/dmdbms/data/DSC2_CONF
port_num       = 8346                        #端口号
mal_host       = 192.168.99.2
mal_port       = 8339
log_path       = +DMLOG/log/DSC2_log01.log
log_path       = +DMLOG/log/DSC2_log02.log
'>/dm8/dmdbms/config/dminit.ini

cat /dm8/dmdbms/config/dminit.ini

3.5、初始化实例
----节点1操作执行:使用dmdba用户,初始化实例 ,执行以下命令:SYSDBA系统默认密

码:SYSDBA

./dminit  control=/dm8/dmdbms/config/dminit.ini

----节点2操作执行:使用dmdba用户,初始化实例 ,执行以下命令:

#将1节点/dm8/dmdbms/data下的内容拷贝到 节点2机器相同目录下
mkdir -p /dm8/dmdbms/data/ #节点2操作
cd /dm8/dmdbms/data/       #节点2操作
scp -r *  dmdba@192.168.100.2:/dm8/dmdbms/data/

3.6、前台启动数据库服务
分别启动 dmserver 即可完成 DMDSC集群搭建。如果 DMCSS 配置有自动拉起 dmserver 的功能,
可以等待 DMCSS 自动拉起实例,不需要手动启动。
如果需要手动启动,可参考下面的操作步骤:

#节点1:(dmdba用户执行)
cd /dm8/dmdbms/bin   #按照顺序启动
./dmcss dcr_ini=/dm8/dmdbms/config/dmdcr.ini        #上述步骤已经启动的话,不用重复启动
./dmasmsvr dcr_ini=/dm8/dmdbms/config/dmdcr.ini     #上述步骤已经启动的话,不用重复启动
./dmserver /dm8/dmdbms/data/DSC1_CONF/dm.ini dcr_ini=/dm8/dmdbms/config/dmdcr.ini

#节点2:(dmdba用户执行)
cd /dm8/dmdbms/bin   #按照顺序启动
./dmcss dcr_ini=/dm8/dmdbms/config/dmdcr.ini        #上述步骤已经启动的话,不用重复启动
./dmasmsvr dcr_ini=/dm8/dmdbms/config/dmdcr.ini     #上述步骤已经启动的话,不用重复启动
./dmserver /dm8/dmdbms/data/DSC2_CONF/dm.ini dcr_ini=/dm8/dmdbms/config/dmdcr.ini

3.7、配置监视器

一个 DMDSC 集群中,允许最多同时启动 10 个监视器,建议监视器放在独立的第三
     方机器上,避免由于节点间网络不稳定等原因导致监视器误判节点故障。

#本次监视器配置到节点3上

1)在单独配置的监视器安装dm8数据库软件

2)配置监视器参数
mkdir /dm8/dmdbms/log
mkdir /dm8/dmdbms/config
cd /dm8/dmdbms/config
vi  dmcssm.ini
#添加以下内容
CSSM_OGUID = 63635  #和 dmdcr_cfg.ini 中的 DCR_OGUID 保持一致
CSSM_CSS_IP = 192.168.99.1:9341
CSSM_CSS_IP = 192.168.99.2:9343
CSSM_LOG_PATH =/dm8/dmdbms/log  #监视器日志文件存放路径
CSSM_LOG_FILE_SIZE   = 64         #每个日志文件最大 32 MB
CSSM_LOG_SPACE_LIMIT = 2048    #不限定日志文件总占用空间
'>/dm8/dmdbms/config/dmcssm.ini

cat /dm8/dmdbms/config/dmcssm.ini

3)启动监视器
cd /dm8/dmdbms/bin/
./dmcssm ini_path=/dm8/dmdbms/config/dmcssm.ini
monitor current time:2022-09-17 19:04:16, n_group:3
=========== group[name = GRP_CSS, seq = 0, type = CSS, Control Node = 1] ============

[CSS1] auto check = TRUE, global info:
[ASM0] auto restart = TRUE
[DSC1] auto restart = TRUE

[CSS2] auto check = TRUE, global info:
[ASM1] auto restart = TRUE
[DSC2] auto restart = TRUE

#实例信息
ep:     css_time               inst_name     seqno     port    mode         inst_status        vtd_status   is_ok        active       guid              ts
        2022-09-17 18:59:29    CSS1          0         9341    Normal Node  OPEN               WORKING      OK           TRUE         224639            224840
        2022-09-17 18:59:29    CSS2          1         9343    Control Node OPEN               WORKING      OK           TRUE         573605            578058

=================== group[name = GRP_ASM, seq = 1, type = ASM, Control Node = 1] ========
 #asm磁盘信息
crash process over flag is TRUE
ep:     css_time               inst_name     seqno     port    mode         inst_status        vtd_status   is_ok        active       guid              ts
        2022-09-17 18:59:29    ASM0          0         9349    Normal Node  OPEN               WORKING      OK           TRUE         229542            229020
        2022-09-17 18:59:29    ASM1          1         9351    Control Node OPEN               WORKING      OK           TRUE         578724            582541

#如果不需要DMDW备份,配置到这步跳到第X步进行css注册
-----------------//DSC配置结束//-------------

4、 配置 DMDSC+单节点数据守护
4.1、配置 dmarch.ini
--节点1
cd /dm8/dmdbms/config
vi dmarch.ini
#添加以下内容
echo '
ARCH_LOCAL_SHARE = 1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL 
ARCH_DEST = +DMDATA/DSC/DSC1/arch
ARCH_FILE_SIZE = 128 
ARCH_SPACE_LIMIT = 0

[ARCHIVE_REMOTE]    #远程归档
ARCH_TYPE = REMOTE
ARCH_DEST = DSC2    #节点2的实例名
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0 
ARCH_INCOMING_PATH = +DMDATA/DSC/DSC2/arch
'>/dm8/dmdbms/config/dmarch.ini

cat /dm8/dmdbms/config/dmarch.ini

--节点2
cd /dm8/dmdbms/config
vi dmarch.ini
#添加以下内容
echo '
ARCH_LOCAL_SHARE = 1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMDATA/DSC/DSC1/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0

[ARCHIVE_REMOTE]    #远程归档
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1    #节点2的实例名
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
ARCH_INCOMING_PATH = +DMDATA/DSC/DSC1/arch
'>/dm8/dmdbms/config/dmarch.ini

cat /dm8/dmdbms/config/dmarch.ini

4.2、打开归档
--节点1 
cd /dm8/dmdbms/data/DSC1_CONF  #在前期安装的时候,我把这两个节点的路径整成一样的了
#修改归档参数
ARCH_INI = 1
#快速修改
sed -i "s/ARCH_INI.=./ARCH_INI                       = 1/g" /dm8/dmdbms/data/DSC1_CONF/dm.ini   
cat /dm8/dmdbms/data/DSC1_CONF/dm.ini | grep ARCH_INI

--节点2
cd /dm8/dmdbms/data/DSC2_CONF
#修改归档参数
ARCH_INI = 1
#快速修改
sed -i "s/ARCH_INI.=./ARCH_INI                       = 1/g" /dm8/dmdbms/data/DSC2_CONF/dm.ini   
cat /dm8/dmdbms/data/DSC2_CONF/dm.ini | grep ARCH_INI

4.3、数据还原
   数据还原目的是还原到单节点备库里,重启 DMDSC 集群的两个 dmserver 实例,然后再正常退出。在 DMDSC 集群生成有归  档日志的情况下进行脱机备份,以便后续校验日志连续性时使用。

#要注意:一定要确保两个节点的css、asmsvr已经启动,且数据库关闭

--脱机备份 DMDSC 集群
--启动 dmrman
/dm8/dmdbms/bin/dmrman use_ap=2 dcr_ini=/dm8/dmdbms/config/dmdcr.ini     #确保DSC1和DSC2是正常关闭的,否则会日志错误报错
mkdir /dm8/fullback
RMAN>BACKUP DATABASE '/dm8/dmdbms/data/DSC1_CONF/dm.ini' FULL BACKUPSET '/dm8/fullback/'; #确保DSC1和DSC2已结正常关闭

#运行结果
BACKUP DATABASE '/dm8/dmdbms/data/DSC2/dm.ini' FULL BACKUPSET '/dm8/fullback/';
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[19030895], file_lsn[19030895]
EP[1]'s cur_lsn[19030895]
EP[0] adjust cur_lsn from [19030895] to [19030895]
Processing backupset /dm8/fullback
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:07][Remaining:00:00:00]
backup successfully!
time used: 00:00:14.401

配置单节点备库(单节点备库上执行)

--初始化备库
./dminit path=/dm8/dmdbms/data/  DB_NAME=DW_S INSTANCE_NAME=DW_S 
mkdir -p /dm8/fullbak  #单机上执行
cd /dm8/fullbak        #DSC上执行
scp -r *  dmdba@192.168.100.3:/dm8/fullbak/

--启动 dmrman
/dm8/dmdbms/bin/dmrman use_ap=2
--使用 DMDSC 库的备份集还原恢复到单节点备库
RMAN>RESTORE DATABASE '/dm8/dmdbms/data/DW_S/dm.ini' FROM BACKUPSET '/dm8/fullbak';
RMAN>RECOVER DATABASE '/dm8/dmdbms/data/DW_S/dm.ini' FROM BACKUPSET '/dm8/fullbak';
RMAN>RECOVER DATABASE '/dm8/dmdbms/data/DW_S/dm.ini' UPDATE DB_MAGIC;

4.4、配置 dm.ini
依次配置 DMDSC 主库所有节点和单节点备库的 dm.ini 文件,修改数据守护相关的参数配置

4.4.1、DSC节点1配置 dm.ini
cd /dm8/dmdbms/data/DSC2
vi dm.ini
#修改以下内容

INSTANCE_NAME = DSC1 
PORT_NUM = 8344                  #数据库实例监听端口
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 次的日志发送信息

1、批量修改
sed -i "s/INSTANCE_NAME.=./INSTANCE_NAME                   = DSC1/g"      /dm8/dmdbms/data/DSC1_CONF/dm.ini;      
sed -i "s/PORT_NUM.=.5236./PORT_NUM                       = 8344/g"      /dm8/dmdbms/data/DSC1_CONF/dm.ini;      
sed -i "s/DW_INACTIVE_INTERVAL.
=./DW_INACTIVE_INTERVAL            = 60/g" /dm8/dmdbms/data/DSC1_CONF/dm.ini;      
sed -i "s/ALTER_MODE_STATUS.
=./ALTER_MODE_STATUS                = 0/g"    /dm8/dmdbms/data/DSC1_CONF/dm.ini;      
sed -i "s/ENABLE_OFFLINE_TS.
=./ENABLE_OFFLINE_TS                = 2/g"    /dm8/dmdbms/data/DSC1_CONF/dm.ini;      
sed -i "s/MAL_INI.
=./MAL_INI                        = 1/g"                /dm8/dmdbms/data/DSC1_CONF/dm.ini;      
sed -i "s/ARCH_INI.
=./ARCH_INI                       = 1/g"               /dm8/dmdbms/data/DSC1_CONF/dm.ini;      
sed -i "s/RLOG_SEND_APPLY_MON.
=.*/RLOG_SEND_APPLY_MON             = 64/g"  /dm8/dmdbms/data/DSC1_CONF/dm.ini;

2、查看修改的结果:查看是否修改成功
cat /dm8/dmdbms/data/DSC1_CONF/dm.ini | grep -E "INSTANCE_NAME|PORT_NUM|DW_INACTIVE_INTERVAL|ALTER_MODE_STATUS|ENABLE_OFFLINE_TS|MAL_INI|ARCH_INI|RLOG_SEND_APPLY_MON" 
                
                INSTANCE_NAME                   = DSC1
                PORT_NUM                       = 8344
                RLOG_SEND_APPLY_MON             = 64      
                DW_INACTIVE_INTERVAL            = 60
                ALTER_MODE_STATUS                = 0
                ENABLE_OFFLINE_TS                = 2
                MAL_INI                        = 1
                ARCH_INI                       = 1

4.4.2、DSC节点2配置 dm.ini
cd /dm8/dmdbms/data/DSC2
#修改以下内容
INSTANCE_NAME = DSC2 
PORT_NUM = 8346
DW_INACTIVE_INTERVAL = 60 
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64

1、批量修改
sed -i "s/INSTANCE_NAME.=./INSTANCE_NAME                   = DSC2/g"            /dm8/dmdbms/data/DSC2_CONF/dm.ini; 
sed -i "s/PORT_NUM.=.5236./PORT_NUM                       = 8346/g"            /dm8/dmdbms/data/DSC2_CONF/dm.ini; 
sed -i "s/DW_INACTIVE_INTERVAL.
=./DW_INACTIVE_INTERVAL            = 60/g"       /dm8/dmdbms/data/DSC2_CONF/dm.ini; 
sed -i "s/ALTER_MODE_STATUS.
=./ALTER_MODE_STATUS                = 0/g"          /dm8/dmdbms/data/DSC2_CONF/dm.ini; 
sed -i "s/ENABLE_OFFLINE_TS.
=./ENABLE_OFFLINE_TS                = 2/g"          /dm8/dmdbms/data/DSC2_CONF/dm.ini; 
sed -i "s/MAL_INI.
=./MAL_INI                        = 1/g"                      /dm8/dmdbms/data/DSC2_CONF/dm.ini; 
sed -i "s/ARCH_INI.
=./ARCH_INI                       = 1/g"                     /dm8/dmdbms/data/DSC2_CONF/dm.ini; 
sed -i "s/RLOG_SEND_APPLY_MON.
=.*/RLOG_SEND_APPLY_MON             = 64/g"        /dm8/dmdbms/data/DSC2_CONF/dm.ini;

2、查看修改的结果:查看是否修改成功
cat /dm8/dmdbms/data/DSC2_CONF/dm.ini | grep -E "INSTANCE_NAME|PORT_NUM|DW_INACTIVE_INTERVAL|ALTER_MODE_STATUS|ENABLE_OFFLINE_TS|MAL_INI|ARCH_INI|RLOG_SEND_APPLY_MON" 
                INSTANCE_NAME                   = DSC2
                PORT_NUM                       = 8346
                RLOG_SEND_APPLY_MON             = 64
                DW_INACTIVE_INTERVAL            = 60
                ALTER_MODE_STATUS                = 0
                ENABLE_OFFLINE_TS                = 2
                MAL_INI                        = 1
                ARCH_INI                       = 1

4.4.3、DW备库节点配置 dm.ini
cd /dm8/dmdbms/data/DW_S
#修改以下内容
INSTANCE_NAME = DW_S 
PORT_NUM = 9344            
DW_INACTIVE_INTERVAL = 60 
ALTER_MODE_STATUS = 0     
ENABLE_OFFLINE_TS = 2      
MAL_INI = 1                
ARCH_INI = 1               
RLOG_SEND_APPLY_MON = 64

1、批量修改
sed -i "s/INSTANCE_NAME.=./INSTANCE_NAME                   = DW_S/g"             /dm8/dmdbms/data/DW_S/dm.ini;
sed -i "s/PORT_NUM.=.5236./PORT_NUM                       = 9344/g"             /dm8/dmdbms/data/DW_S/dm.ini;
sed -i "s/DW_INACTIVE_INTERVAL.
=./DW_INACTIVE_INTERVAL            = 60/g"        /dm8/dmdbms/data/DW_S/dm.ini;
sed -i "s/ALTER_MODE_STATUS.
=./ALTER_MODE_STATUS                = 0/g"           /dm8/dmdbms/data/DW_S/dm.ini;
sed -i "s/ENABLE_OFFLINE_TS.
=./ENABLE_OFFLINE_TS                = 2/g"           /dm8/dmdbms/data/DW_S/dm.ini;
sed -i "s/MAL_INI.
=./MAL_INI                        = 1/g"                       /dm8/dmdbms/data/DW_S/dm.ini;     
sed -i "s/ARCH_INI.
=./ARCH_INI                       = 1/g"                      /dm8/dmdbms/data/DW_S/dm.ini;     
sed -i "s/RLOG_SEND_APPLY_MON.
=.*/RLOG_SEND_APPLY_MON             = 64/g"         /dm8/dmdbms/data/DW_S/dm.ini;

2、查看修改的结果:查看是否修改成功
cat /dm8/dmdbms/data/DW_S/dm.ini | grep -E "INSTANCE_NAME|PORT_NUM|DW_INACTIVE_INTERVAL|ALTER_MODE_STATUS|ENABLE_OFFLINE_TS|MAL_INI|ARCH_INI|RLOG_SEND_APPLY_MON" 
     
                INSTANCE_NAME                   = DW_S
                PORT_NUM                       = 9344
                RLOG_SEND_APPLY_MON             = 64
                DCRS_PORT_NUM                   = 6236                  #Port number on which the database dcrs will listen
                AP_PORT_NUM                     = 0                     #Port number on which the database ap will listen
                DW_INACTIVE_INTERVAL            = 60
                ALTER_MODE_STATUS                = 0
                ENABLE_OFFLINE_TS                = 2
                MAL_INI                        = 1
                ARCH_INI                       = 1

4.4、配置 dmmal.ini
         在 DMDSC 集群的 dmmal.ini 文件基础上,增加备库 GRP1_RT_01 的配置项。
        所有节点实例的 dmmal.ini 文件内容是一致的,配置完成后,拷贝到每个节点实例
        dm.ini 中指定的 CONFIG_PATH 目录下

#添加以下内容
echo '
MAL_CHECK_INTERVAL = 30               #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 10           #判定 MAL 链路断开的时间
[MAL_INST0]
 MAL_INST_NAME = DSC1        #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
 MAL_HOST = 192.168.99.1             #MAL 系统监听 TCP 连接的 IP 地址
 MAL_PORT = 8338                      #MAL 系统监听 TCP 连接的端口
 MAL_INST_HOST = 192.168.100.1        #实例的对外服务 IP 地址
 MAL_INST_PORT = 5236                 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
 MAL_DW_PORT = 3567                   #实例本地的守护进程监听 TCP 连接的端口
 MAL_INST_DW_PORT = 4567              #实例监听守护进程 TCP 连接的端口

[MAL_INST1]
 MAL_INST_NAME = DSC2 
 MAL_HOST = 192.168.99.2
 MAL_PORT = 8339 
 MAL_INST_HOST = 192.168.100.2 
 MAL_INST_PORT = 5236 
 MAL_DW_PORT = 3568
 MAL_INST_DW_PORT = 4568

[MAL_INST2]
 MAL_INST_NAME = DW_S
 MAL_HOST = 192.168.99.3
 MAL_PORT = 8738
 MAL_INST_HOST = 192.168.100.3
 MAL_INST_PORT = 9344
 MAL_DW_PORT = 3569
 MAL_INST_DW_PORT = 4569
 '>/dm8/dmdbms/data/DSC2_CONF/dmmal.ini
 
 cat /dm8/dmdbms/data/DSC2_CONF/dmmal.ini
 
 拷贝到其他机器上
 scp -r dmmal.ini dmdba@192.168.100.1:/dm8/dmdbms/data/ 
 scp -r dmmal.ini dmdba@192.168.100.2:/dm8/dmdbms/data/

4.5、配置 dmarch.ini
---节点1
cd /dm8/dmdbms/data/DSC1_CONF
vi  dmarch.ini 
#添加内容
echo '
ARCH_LOCAL_SHARE = 1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL 
ARCH_DEST = +DMDATA/DSC/DSC1/arch
ARCH_FILE_SIZE = 128 
ARCH_SPACE_LIMIT = 0

[ARCHIVE_REMOTE]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC2
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
ARCH_INCOMING_PATH = +DMDATA/DSC/DSC2/arch

[ARCHIVE_REALTIME] 
ARCH_TYPE = REALTIME
ARCH_DEST = DW_S
 '> /dm8/dmdbms/data/DSC1_CONF/dmarch.ini 
 cat /dm8/dmdbms/data/DSC1_CONF/dmarch.ini 
 
---节点2
cd /dm8/dmdbms/data/DSC2_CONF
vi  dmarch.ini 
#添加内容
echo '
ARCH_LOCAL_SHARE = 1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMDATA/DSC/DSC2/arch
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 = +DMDATA/DSC/DSC1/arch

[ARCHIVE_REALTIME] 
ARCH_TYPE = REALTIME
ARCH_DEST = DW_S
'> /dm8/dmdbms/data/DSC2_CONF/dmarch.ini ;

cat /dm8/dmdbms/data/DSC2_CONF/dmarch.ini ;

---DW备库
cd /dm8/dmdbms/data/DW_S
vi  dmarch.ini 
#添加内容
echo '
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/data/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0

[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = DSC1/DSC2
'>/dm8/dmdbms/data/DW_S/dmarch.ini;

cat /dm8/dmdbms/data/DW_S/dmarch.ini;

4.6、配置 dmwatcher.ini
依次配置每个节点实例的 dmwatcher.ini 文件,放到各自 dm.ini 中指定的
CONFIG_PATH 目录下

---节点1
cd /dm8/dmdbms/data/DSC1_CONF
vi dmwatcher.ini
echo '
[GRP1]
DW_TYPE = GLOBAL                                 #全局守护类型
DW_MODE = MANUAL                                 #手动切换模式
DW_ERROR_TIME = 60                               #远程守护进程故障认定时间
INST_RECOVER_TIME = 60                           #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 35                             #本地实例故障认定时间
INST_INI = /dm8/dmdbms/data/DSC1_CONF/dm.ini          #dm.ini 配置文件路径
DCR_INI = /dm8/dmdbms/config/dmdcr.ini          #dmdcr.ini 配置文件路径
INST_OGUID = 1000                                #守护系统唯一 OGUID 值
INST_STARTUP_CMD =  /dm8/dmdbms/bin/dmserver     #命令行方式启动
INST_AUTO_RESTART = 0                            #关闭实例的自动启动功能
RLOG_SEND_THRESHOLD = 0                          #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0                         #指定备库重演日志的时间阈值,默认关闭
'>/dm8/dmdbms/data/DSC1_CONF/dmwatcher.ini;

cat /dm8/dmdbms/data/DSC1_CONF/dmwatcher.ini;

---节点2
cd /dm8/dmdbms/data/DSC2_CONF
vi dmwatcher.ini
echo '
[GRP1]
 DW_TYPE = GLOBAL
 DW_MODE = MANUAL
 DW_ERROR_TIME = 60
 INST_RECOVER_TIME = 60
 INST_ERROR_TIME = 35
 INST_INI = /dm8/dmdbms/data/DSC2_CONF/dm.ini 
 DCR_INI = /dm8/dmdbms/config/dmdcr.ini
 INST_OGUID = 1000
 INST_STARTUP_CMD = /dm8/dmdbms/bin/dmserver 
 INST_AUTO_RESTART = 0
 RLOG_SEND_THRESHOLD = 0
 RLOG_APPLY_THRESHOLD = 0
 '>/dm8/dmdbms/data/DSC2_CONF/dmwatcher.ini;

cat /dm8/dmdbms/data/DSC2_CONF/dmwatcher.ini;

---DW备库节点
cd /dm8/dmdbms/data/DW_S
vi dmwatcher.ini
echo '
[GRP1]
 DW_TYPE = GLOBAL
 DW_MODE = MANUAL
 DW_ERROR_TIME = 60
 INST_RECOVER_TIME = 60
 INST_ERROR_TIME = 35
 INST_INI = /dm8/dmdbms/data/DW_S/dm.ini 
 INST_OGUID = 1000
 INST_STARTUP_CMD = /dm8/dmdbms/bin/dmserver 
 INST_AUTO_RESTART = 0              #对单节点,如果需要打开自动拉起功能,将此配置修改为 1 即可
 RLOG_SEND_THRESHOLD = 0
 RLOG_APPLY_THRESHOLD = 0
'>/dm8/dmdbms/data/DW_S/dmwatcher.ini

cat /dm8/dmdbms/data/DW_S/dmwatcher.ini

4.7、配置 dmmonitor.ini
编辑 dmmonitor.ini 文件,放在/dm/data 目录下:
mkdir -p /dm8/dmdbms/monitor
mkdir -p /dm8/dmdbms/monitor/monitorlog
vi dmmonitor.ini
#加入参数
echo '
MON_LOG_PATH =  /dm8/dmdbms/monitor/monitorlog
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 = 192.168.99.1:3567/192.168.99.2:3568
MON_DW_IP = 192.168.99.3:3569
'>/dm8/dmdbms/monitor/dmmonitor.ini;

cat /dm8/dmdbms/monitor/dmmonitor.ini;

4.8、重启 dmcss 和 dmasmsvr
--节点1:
./dmcss    dcr_ini=/dm8/dmdbms/config/dmdcr.ini
./dmasmsvr dcr_ini=/dm8/dmdbms/config/dmdcr.ini

--节点2:
./dmcss dcr_ini=/dm8/dmdbms/config/dmdcr.ini
./dmasmsvr dcr_ini=/dm8/dmdbms/config/dmdcr.ini

4.9、启动主备库集群
启动 DMDSC 集群的两个 dmserver 实例
如果 dmcss 打开有自动拉起功能,也可以等待 dmcss 将本地的 dmserver 实例自动
拉起(要保证以 Mount 方式拉起)。

--手动启动命令如下:
#DSC手动启动
./dmserver /dm8/dmdbms/data/DSC1_CONF/dm.ini DCR_INI=/dm8/dmdbms/config/dmdcr.ini  mount
./dmserver /dm8/dmdbms/data/DSC2_CONF/dm.ini DCR_INI=/dm8/dmdbms/config/dmdcr.ini  mount

启动dw备库节点

/dm8/dmdbms/bin/dmserver /dm8/dmdbms/data/DW_S/dm.ini mount

4.10、设置 OGUID
---集群:连接任一的DSC节点进行配置
启动命令行工具 DIsql,连接 DMDSC 集群中的任意一个节点,设置 DMDSC 主库的
OGUID 值。
cd /dm8/dmdbms/bin
./disql SYSDBA/SYSDBA

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_OGUID(1000);
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

---集群:DIsql 连接单节点备库,设置备库 OGUID。
cd /dm8/dmdbms/bin
./disql SYSDBA/SYSDBA@DW_S:9344     #记住如果登陆不上时,一定是hosts没有配置ip地址映射

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_OGUID(1000);
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

4.11、修改主备库模式
---集群:连接任一的DSC节点进行配置
启动命令行工具 DIsql,连接 DMDSC 集群中的任意一个节点,修改 DMDSC 库为
Primary 模式。
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
ALTER DATABASE PRIMARY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

---集群:DIsql 连接DW备库节点,修改主备库模式
DIsql 连接单节点备库,修改备库为 Standby 模式。
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
ALTER DATABASE STANDBY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

4.12、启动守护进程
---DSC节点1
启动 DMDSC 主库的所有守护进程:
cd /dm8/dmdbms/bin
./dmwatcher /dm8/dmdbms/data/DSC1_CONF/dmwatcher.ini

---DSC节点2
cd /dm8/dmdbms/bin
./dmwatcher /dm8/dmdbms/data/DSC2_CONF/dmwatcher.ini

---备库的守护进程:
cd /dm8/dmdbms/bin
./dmwatcher /dm8/dmdbms/data/DW_S/dmwatcher.ini

4.13、启动监视器
--启动数据守护监视器:
/dm8/dmdbms/bin/dmmonitor path=/dm8/dmdbms/config/dmmonitor.ini

--DMDSC 集群也有自己的监视器工具,需要时也可以启动
/dm8/dmdbms/bin/dmcssm ini_path=/dm8/dmdbms/config/dmcssm.ini

4.14、正常启动下,有哪些进程
----DSC节点(dmcss、dmasmsvr、dmserver、dmwatcher)
dmdba      2470   1929  0 04:16 pts/1    00:03:38 ./dmcss dcr_ini=/dm8/dmdbms/config/dmdcr.ini
dmdba      3253   2025  0 04:58 pts/3    00:00:48 ./dmasmsvr dcr_ini=/dm8/dmdbms/config/dmdcr.ini
dmdba     10142   9917  0 15:28 pts/2    00:00:24 ./dmserver /dm8/dmdbms/data/DSC2/dm.ini DCR_INI=/dm8/dmdbms/config/dmdcr.ini 
dmdba     10585  10535  0 15:55 pts/5    00:00:01 ./dmwatcher /dm8/dmdbms/data/DSC2/dmwatcher.ini

----备份节点(dmserver、dmwatcher)
dmdba      1921   1880  0 15:47 pts/1    00:00:04 ./dmserver /dm8/dmdbms/data/DW_S/dm.ini mount
dmdba      2215   2171  0 15:56 pts/2    00:00:00 ./dmwatcher /dm8/dmdbms/data/DW_S/dmwatcher.ini

----监视器(dmwatcher、dmcssm)
dmdba      9120   2689  0 16:07 pts/0    00:00:00 /dm8/dmdbms/bin/dmmonitor path=/dm8/dmdbms/config/dmmonitor.ini
dmdba      9141   8932  0 16:08 pts/1    00:00:00 /dm8/dmdbms/bin/dmcssm ini_path=/dm8/dmdbms/config/dmcssm.ini

4.15、注册服务

----DSC节点注册:不能单独注册dmasmsvr,因为dmasmsvr依赖dmcss,所以集群只需要注册dmcss

和dmwatcher,开启自动dmserver、dmserver
---节点1
#注册dmcss(只需要css自动拉起dmasmsvr)
cd /dm8/dmdbms/script/root
./dm_service_installer.sh  -p dmCSS1   -t dmcss  -dcr_ini /dm8/dmdbms/config/dmdcr.ini

#注册dmwatcher
cd  /dm8/dmdbms/script/root
./dm_service_installer.sh -p dmwatcher0 -t dmwatcher -watcher_ini  /dm8/dmdbms/data/DSC1_CONF/dmwatcher.ini

#注册服务
./dm_service_installer.sh -p dmserver0 -t dmserver -dm_ini  /dm8/dmdbms/data/DSC1_CONF/dm.ini

---节点2
#注册dmcss
cd /dm8/dmdbms/script/root
./dm_service_installer.sh  -p DMCSS2    -t dmcss  -dcr_ini /dm8/dmdbms/config/dmdcr.ini

#注册dmwatcher
cd  /dm8/dmdbms/script/root
./dm_service_installer.sh -p dmwatcher1 -t dmwatcher -watcher_ini  /dm8/dmdbms/data/DSC2_CONF/dmwatcher.ini

#注册服务
./dm_service_installer.sh -p dmserver1 -t dmserver -dm_ini  /dm8/dmdbms/data/DSC2_CONF/dm.ini

----DW备机注册服务:
#注册dmserver
cd /dm8/dmdbms/script/root/
./dm_service_installer.sh  -t dmserver  -p dw_s  -dm_ini  /dm8/dmdbms/data/DW_S/dm.ini

#注册dmwatcher
cd  /dm8/dmdbms/script/root
./dm_service_installer.sh -t dmwatcher  -p dmwatcher0  -watcher_ini  /dm8/dmdbms/data/DW_S/dmwatcher.ini

----监视器注册服务:
#注册dmcss
cd /dm8/dmdbms/script/root 
./dm_service_installer.sh -p DMCSSM0  -t dmcssm -cssm_ini /dm8/dmdbms/config/dmcssm.ini

#注册dmmonitor
cd  /dm8/dmdbms/script/root
./dm_service_installer.sh -p dmmonitor  -t dmmonitor -monitor_ini   /dm8/dmdbms/monitor/dmmonitor.ini

----重启服务,看一下服务有没有自动起来

5、DSC测试
--1、客户端(管理工具)查询数据同步情况
情形下1:DSC1建表并插入数据,可以在DSC2和单节点备机dw_s查询得到
情形下2:DSC2建表并插入数据,可以在DSC1和单节点备机dw_s查询得到
情形下3:dw_s只能查询数据,不能建表和插入数据,原因是备机是stanby,只读操作

--2、客户端(管理工具)查询数据的基本情况
1、使用管理工具-》管理服务器--》系统概览
2、使用管理工具-》管理服务器--》日志文件
3、使用管理工具-》管理服务器--》归档配置

--3、使用dmasmtool工具进入asm磁盘,查询数据文件

./dmasmtool  DCR_INI=/dm8/dmdbms/config/dmdcr.ini   
[root@dmDSC2 bin]#  ./dmasmtool  DCR_INI=/dm8/dmdbms/config/dmdcr.ini
DMASMTOOL V8
ASM>ls
+
disk groups total [4]......
NO.1     name: DMLOG
NO.2     name: DMDATA
NO.3     name: VOTE
NO.4     name: DCR

--查询日志文件:
cd +DMLOG/log
ASM>ls
        file : DSC1_log01.log
        file : DSC1_log02.log
        file : DSC2_log01.log
        file : DSC2_log02.log

--查询归档文件:
cd +DMDATA/DSC/DSC2/arch

file : ARCHIVE_LOCAL1_0x1C04FB98_EP1_2022-09-16_15-56-37.log
        file : ARCHIVE_LOCAL1_0x1C04FB98_EP1_2022-09-16_16-42-11.log
        file : ARCHIVE_LOCAL1_0x1C04FB98_EP1_2022-09-16_17-12-20.log
        file : ARCHIVE_LOCAL1_0x1C04FB98_EP1_2022-09-17_01-24-11.log
        file : ARCHIVE_LOCAL1_0x1C04FB98_EP1_2022-09-17_02-45-31.log
        file : ARCHIVE_LOCAL1_0x1C04FB98_EP1_2022-09-17_02-45-44.log
        file : ARCHIVE_LOCAL1_0x1C04FB98_EP1_2022-09-17_02-46-09.log

--查询数据文件:
---在管理工具上查询文件:
select file_name from dba_data_files;
+DMDATA/data/dsc/system.dbf
+DMDATA/data/dsc/main.dbf
+DMDATA/data/dsc/TEMP0.DBF
+DMDATA/data/dsc/roll.dbf

---进入DMASMTOOL在磁盘上查询文件:
cd +DMDATA/data/dsc
ASM>ls
        dir : bak
        file : dm.ctl
        dir : ctl_bak
        file : system.dbf
        file : dm_service.prikey
        file : main.dbf
        file : roll.dbf
        dir : HMAIN
        file : TEMP0.DBF
        file : TEMP1.DBF
        file : rep_conflict.log
        file : DSC11.log
total count 12.

6、DSC故障模拟

--DSC集群节点:
情形1:关闭主节点DSC1的数据库服务,模拟主节点故障
结论:节点2正常运行,备库照常备份

情形2:挡DSC1恢复正常,重新加入集群
结论:节点2正常运行,备库照常备份

情形3:当集群里的两个节点都宕机了,如果短时没办法恢复DSC,此时需要手工切换备库提供服务:尽量别手动切换,可能会出现问题
cd /dm8/dmdbms/bin
./disql SYSDBA/SYSDBA@DW_S:9344

alter database mount;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
ALTER DATABASE primary;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
alter database open force;

----------------------------//DSC+DW集群到此配置结束//----------------------------------

更多内容,请访问达梦社区地址:https:eco.dameng.com

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服