一、什么是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
/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
文章
阅读量
获赞