DMDSC:DM DATA SHARED CLUSTER即共享存储集群,架构类似RAC
一、部署
01| 规划
硬件:两台相同配置机器,2G 内存,100G 本地磁盘,2 块网卡,一块共享磁盘最少20G,或者多块共享磁盘
- Windows版本VM需要在两台虚拟机路径下xxx.vmx文件中加入
disk.locking = "FALSE"
参数,否则后启动的虚拟机会启动失败 - 共享磁盘分配:前三块大小最少分配100M、100M、2G
- 如果只有一块共享磁盘,需要划分四个分区,大小要求同上
- 使用裸设备部署环境
真实的生产环境中,建议至少配置两块共享磁盘,分别用来存放联机日志文件和数据文件。
1.存储规划
添加4块共享磁盘
共享磁盘添加方法:
- A 正常添加磁盘,【高级选项】–勾选【预先分配磁盘空间】
- B 添加磁盘选择,选择【添加现有磁盘】,并选择【与创建此虚拟磁盘的虚拟机共享此虚拟磁盘】,目录选择到A服务器目录
- 修改xx.vmx,在末尾添加以下内容
#shared disks configure
disk.locking="false"
diskLib.dataCacheMaxSize="0"
diskLib.dataCacheMaxReadAheadSize="0"
diskLib.DataCacheMinReadAheadSize="0"
diskLib.dataCachePageSize="4096"
diskLib.maxUnsyncedWrites="0"
scsi0:1.deviceType="disk"
scsi0:1.mode = "independent-persistent"
scsi0.sharedBus = "VIRTUAL"
笔记本操作系统 | MAC |
---|---|
虚拟机软件 | VMfusion |
虚拟机操作系统 | CentOS7.5 |
共享磁盘1(放dcr信息,100M就够了) | 1G |
共享磁盘2(放vote信息,100M就够了) | 1G |
共享磁盘3(放redo log,不少于4G) | 5G |
共享磁盘4(放data) | 50G |
2. 虚拟机规划
为A、B服务器添加两块网卡,一块使用hostonly模式,一块使用桥接-自动选择模式
A机器 | B机器 | |
---|---|---|
业务IP | 192.168.3.128 | 192.168.3.129 |
心跳IP | 192.168.3.128 | 192.168.3.129 |
软件目录 | /home/dmdba/dm8/dm_home | /home/dmdba/dm8/dm_home |
实例目录 | /home/dmdba/dm8/data/dsc | /home/dmdba/dm8/data/dsc |
配置文件目录 | /home/dmdba/dm8/data/dsc/config | /home/dmdba/dm8/data/dsc/config |
归档日志目录 | /home/dmdba/dm8/data/dsc/arch_0 | /home/dmdba/dm8/data/dsc/arch_1 |
远程归档目录 | /home/dmdba/dm8/data/dsc/arch_0_remote | /home/dmdba/dm8/data/dsc/arch_1_remote |
备份目录 | /home/dmdba/dm8/data/dsc/bak | /home/dmdba/dm8/data/dsc/bak |
归档上限M | 51200 | 51200 |
OGUID | 45331 | 45331 |
A机器 | B机器 | ||
---|---|---|---|
dmdcr_cfg配置 | - | - | - |
CSS | DCR_EP_NAME | CSS0 | CSS1 |
DCR_EP_HOST | 192.168.3.128 | 192.168.3.129 | |
DCR_EP_PORT | 5336 | 5337 | |
ASM | DCR_EP_NAME | ASM0 | ASM1 |
DCR_EP_HOST | 192.168.3.128 | 192.168.3.129 | |
DCR_EP_PORT | 5436 | 5437 | |
DB | DCR_EP_NAME | DSC0 | DSC1 |
DCR_EP_PORT | 5236 | 5236 | |
DCR_CHECK_PORT | 5536 | 5537 | |
dmasvrmal配置 | - | - | - |
MAL_INST_NAME | ASM0 | ASM1 | |
MAL_HOST | 192.168.3.128 | 192.168.3.129 | |
MAL_PORT | 5636 | 5637 | |
dminit配置 | - | - | - |
PORT_NUM | 5236 | 5236 | |
MAL_HOST | 192.168.3.128 | 192.168.3.129 | |
MAL_PORT | 5736 | 5737 |
## 02| 存储准备
1. 划分共享磁盘–A
# 划分共享磁盘将磁盘空间全部分配:n--回车--回车--回车--w
fdisk /dev/sdb
fdisk /dev/sdc
fdisk /dev/sdd
fdisk /dev/sde
2. 绑定裸设备–A/B
# A B 虚机先查看下磁盘状态是否同步了
[root@loaclhost ~]# partprobe
[root@loaclhost ~]# ll /dev/sd*
brw-rw----. 1 root disk 8, 0 May 11 03:29 /dev/sda
brw-rw----. 1 root disk 8, 1 May 11 03:29 /dev/sda1
brw-rw----. 1 root disk 8, 2 May 11 03:29 /dev/sda2
brw-rw----. 1 root disk 8, 16 May 11 03:29 /dev/sdb
brw-rw----. 1 root disk 8, 17 May 11 03:29 /dev/sdb1
brw-rw----. 1 root disk 8, 32 May 11 03:29 /dev/sdc
brw-rw----. 1 root disk 8, 33 May 11 03:29 /dev/sdc1
brw-rw----. 1 root disk 8, 48 May 11 03:29 /dev/sdd
brw-rw----. 1 root disk 8, 49 May 11 03:29 /dev/sdd1
brw-rw----. 1 root disk 8, 64 May 11 03:29 /dev/sde
brw-rw----. 1 root disk 8, 65 May 11 03:29 /dev/sde1
# 绑定裸设备
cat >/etc/udev/rules.d/60-raw.rules <<-EOF
ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdc1", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdd1", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="sde1", RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", KERNEL=="raw[1-4]", OWNER="dmdba", GROUP="dinstall", MODE="660"
EOF
partprobe
# 重启AB服务器
reboot
[root@loaclhost ~]# ll /dev/raw*
total 0
crw-rw----. 1 root root 162, 1 May 11 03:28 raw1
crw-rw----. 1 root root 162, 2 May 11 03:28 raw2
crw-rw----. 1 root root 162, 3 May 11 03:28 raw3
crw-rw----. 1 root root 162, 4 May 11 03:28 raw4
crw-rw----. 1 root disk 162, 0 May 11 02:57 rawctl
# 查看所设备大小
[root@whx02 ~]# blockdev --getsize64 /dev/raw/raw*
1072693248
1072693248
5367660544
53686042624
📢注意: 在绑定裸设备的时候,正常应该执行的命令:partprobe && start_udev
但是Centos7 执行start_udev
会报错(如下),直接重启服务器,使操作重新加载下udev服务
[root@loaclhost ~]# start_udev
-bash: start_udev: command not found
03| DSC搭建
0. 安装软件&创建实例
📢注意:log_size 不能大于asm log共享磁盘的1/4,我这里给的大小是5g,这里给log_size配置1G
dminit PATH=/home/dmdba/dm8/data LOG_SIZE=1024 EXTENT_SIZE=32 PAGE_SIZE=32 CHARSET=1 DB_NAME=dsc INSTANCE_NAME=dsc
1. 配置dmdcr_cfg.ini–A/B
cat > /home/dmdba/dm8/data/dsc/config/dmdcr_cfg.ini <<-EOF
DCR_N_GRP = 3 #集群环境有多少个GROUP,范围:1~16
DCR_VTD_PATH = /dev/raw/raw2
DCR_OGUID = 45331
[GRP] #新建一个GROUP
DCR_GRP_TYPE = CSS #组类型(CSS/ASM/DB)
DCR_GRP_NAME = GRP_CSS #组名
DCR_GRP_N_EP = 2 #组内节点个数
DCR_GRP_DSKCHK_CNT = 60 #磁盘心跳容错时间,单位:秒
[GRP_CSS]
DCR_EP_NAME = CSS0 #CSS节点名
DCR_EP_HOST = 192.168.3.128 #心跳地址
DCR_EP_PORT = 5336 #CSS端口
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 192.168.3.129
DCR_EP_PORT = 5337
[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 #ASM节点名,和dmasvrmal的MAL_INST_NAME一致
DCR_EP_SHM_KEY = 93360 #共享内存标识
DCR_EP_SHM_SIZE = 10 #共享内存大小M
DCR_EP_HOST = 192.168.3.128 #心跳地址
DCR_EP_PORT = 5436 #ASM端口
DCR_EP_ASM_LOAD_PATH = /dev/raw
[GRP_ASM]
DCR_EP_NAME = ASM1
DCR_EP_SHM_KEY = 93361
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 192.168.3.129
DCR_EP_PORT = 5437
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 = DSC0 #实例名,和dm.ini的INSTANCE_NAME一致
DCR_EP_SEQNO = 0 #组内序号,不能重复
DCR_EP_PORT = 5236 #实例端口,和dm.ini的PORT_NUM一致
DCR_CHECK_PORT = 5536 #DCR检查端口
[GRP_DSC]
DCR_EP_NAME = DSC1
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 5537
EOF
# 创建上述目录--A
mkdir /home/dmdba/dm8/data/dsc/{config,arch_0,arch_0_remote} -p
# 创建上述目录--B
mkdir /home/dmdba/dm8/data/dsc/{config,arch_1,arch_1_remote} -p
2. 初始化磁盘组–A
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'
init dcrdisk '/dev/raw/raw1' from '/home/dmdba/dm8/data/dsc/config/dmdcr_cfg.ini' identified by 'admin1234'
init votedisk '/dev/raw/raw2' from '/home/dmdba/dm8/data/dsc/config/dmdcr_cfg.ini'
# 注意,如果修改了dmdcr_cfg.ini,需要重新执行ini命令
3. 创建dmasvrmal.ini–A/B
cat > /home/dmdba/dm8/data/dsc/config/dmasvrmal.ini<<-EOF
[MAL_INST1]
MAL_INST_NAME = ASM0
MAL_HOST = 192.168.3.128 #心跳地址
MAL_PORT = 5636 #MAL监听端口
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 192.168.3.129
MAL_PORT = 5637
EOF
4. 创建dmdcr.ini
–A
cat > /home/dmdba/dm8/data/dsc/config/dmdcr.ini <<-EOF
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH = //home/dmdba/dm8/data/dsc/config/dmasvrmal.ini
DMDCR_SEQNO = 0
DMDCR_AUTO_OPEN_CHECK = 90
#DMDCR_ASM_RESTART_INTERVAL = 30 #CSS认定ASM故障重启的时间
#DMDCR_ASM_STARTUP_CMD = /home/dmdba/dm8/dm_home/bin/dmasmsvr dcr_ini=/home/dmdba/dm8/data/dsc/config/dmdcr.ini
#DMDCR_DB_RESTART_INTERVAL = 60 #CSS认定DSC故障重启的时间
#DMDCR_DB_STARTUP_CMD = /home/dmdba/dm8/dm_home/bin/dmserver path=/home/dmdba/dm8/data/dsc/config/dsc0_config/dm.ini dcr_ini=/home/dmdba/dm8/data/dsc/config/dmdcr.ini
EOF
–B
cat > /home/dmdba/dm8/data/dsc/config/dmdcr.ini <<-EOF
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH = /home/dmdba/dm8/data/dsc/config/dmasvrmal.ini
DMDCR_SEQNO = 1
DMDCR_AUTO_OPEN_CHECK = 90
#DMDCR_ASM_RESTART_INTERVAL = 30 #CSS认定ASM故障重启的时间
#DMDCR_ASM_STARTUP_CMD = /home/dmdba/dm8/dm_home/bin/dmasmsvr dcr_ini=/home/dmdba/dm8/data/dsc/config/dmdcr.ini
#DMDCR_DB_RESTART_INTERVAL = 60 #CSS认定DSC故障重启的时间
#DMDCR_DB_STARTUP_CMD = /home/dmdba/dm8/dm_home/bin/dmserver path=/home/dmdba/dm8/data/dsc/config/dsc1_config/dm.ini dcr_ini=/home/dmdba/dm8/data/dsc/config/dmdcr.ini
EOF
注意:当前为手动拉起A机器和B机器的ASM和DMSERVER服务。待集群配置完成后,再修改为自动拉起(删除dmdcr.ini中红色井号)。
5. 前台启动CSS、ASM 服务–A/B
# 注意,这里dmcss需要使用绝对路径,或者切到bin目录执行
cd $DM_HOME/bin/
screen dmcss DCR_INI=/home/dmdba/dm8/data/dsc/config/dmdcr.ini
# 输出如下:
DMCSS V8
DMCSS IS READY
[CSS]: 设置EP CSS0[0]为控制节点
...
# AB分别新开窗口执行
screen
cd $DM_HOME/bin
dmasmsvr DCR_INI=/home/dmdba/dm8/data/dsc/config/dmdcr.ini
# 输出如下
ASM SELF EPNO:0
DMASMSVR V8
dmasmsvr task worker thread startup
the ASM server is Ready.
check css cmd: START NOTIFY, cmd_seq: 2
check css cmd: EP START, cmd_seq: 3
ASM Control Node EPNO:0
check css cmd: EP OPEN, cmd_seq: 8
check css cmd: EP REAL OPEN, cmd_seq: 11
6. 创建ASM磁盘组–A
$DM_HOME/bin/dmasmtool DCR_INI=/home/dmdba/dm8/data/dsc/config/dmdcr.ini
create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'
create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'
7. 创建dminit.ini–A/B
cat > /home/dmdba/dm8/data/dsc/config/dminit.ini <<-EOF
db_name = dsc
system_path = +DMDATA/data
main = +DMDATA/data/dsc/main.dbf
main_size = 128
roll = +DMDATA/data/dsc/roll.dbf
roll_size = 128
system = +DMDATA/data/dsc/system.dbf
system_size = 128
ctl_path = +DMDATA/data/dsc/dm.ctl
ctl_size = 8
log_size = 2048
dcr_path = /dev/raw/raw1
dcr_seqno = 0
auto_overwrite = 1
PAGE_SIZE = 32
CASE_SENSITIVE = Y
CHARSET = 0
[DSC0]
config_path = /home/dmdba/dm8/data/dsc/config/dsc0_config
port_num = 5236
mal_host = 192.168.3.128
mal_port = 5736
log_path = +DMLOG/log/dsc0_log01.log
log_path = +DMLOG/log/dsc0_log02.log
[DSC1]
config_path = /home/dmdba/dm8/data/dsc/config/dsc1_config
port_num = 5236
mal_host = 192.168.3.129
mal_port = 5737
log_path = +DMLOG/log/dsc1_log01.log
log_path = +DMLOG/log/dsc1_log02.log
EOF
8. 初始化实例–A
$DM_HOME/bin/dminit control=/home/dmdba/dm8/data/dsc/config/dminit.ini
# 输出如下:
# initdb V8
# db version: 0x7000c
# file dm.key not found, use default license!
# License will expire on 2022-11-11
# Normal of FAST
# Normal of DEFAULT
# Normal of RECYCLE
# Normal of KEEP
# Normal of ROLL
#
# log file path: +DMLOG/log/dsc0_log01.log
#
#
# log file path: +DMLOG/log/dsc0_log02.log
#
#
# log file path: +DMLOG/log/dsc1_log01.log
#
#
# log file path: +DMLOG/log/dsc1_log02.log
#
# FILE "/home/dmdba/dm8/data/dsc/config/dsc0_config/dm.ini" has already existed
# FILE "/home/dmdba/dm8/data/dsc/config/dsc0_config/sqllog.ini" has already existed
# FILE "/home/dmdba/dm8/data/dsc/config/dsc1_config/dm.ini" has already existed
# FILE "/home/dmdba/dm8/data/dsc/config/dsc1_config/sqllog.ini" has already existed
# FILE "+DMDATA/data/dsc/dm.ctl" has already existed
# FILE "+DMLOG/log/dsc0_log01.log" has already existed
# FILE "+DMLOG/log/dsc0_log02.log" has already existed
# write to dir [+DMDATA/data/dsc].
# create dm database success. 2022-05-12 10:23:37
#
# 拷贝配置文件到B
dmdba@whx01 10.12.10.121 12:33:05 [pwd:~/dm8/data/dsc/config]$ scp -r ~/dm8/data/dsc/config/dsc1_config whx02:~/dm8/data/dsc/config
9. 修改dmarch.ini
–A
# 手动配置归档
# --修改dm.ini
sed -i '/ARCH_INI/s/= 0/= 1/' /home/dmdba/dm8/data/dsc/config/dsc0_config/dm.ini
# --创建dmarch.ini
cat > /home/dmdba/dm8/data/dsc/config/dsc0_config/dmarch.ini <<-EOF
[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/dm8/data/dsc/arch_0
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 51200
[ARCHIVE_REMOTE]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH = /home/dmdba/dm8/data/dsc/arch_0_remote
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 51200
EOF
–B
sed -i '/ARCH_INI/s/= 0/= 1/' /home/dmdba/dm8/data/dsc/config/dsc1_config/dm.ini
# --创建dmarch.ini
# --创建dmarch.ini
cat > /home/dmdba/dm8/data/dsc/config/dsc1_config/dmarch.ini <<-EOF
[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/dm8/data/dsc/arch_1
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 51200
[ARCHIVE_REMOTE]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_INCOMING_PATH = /home/dmdba/dm8/data/dsc/arch_1_remote
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 51200
EOF
10. 启动DMSEVER
A机器
$DM_HOME/bin/dmserver /home/dmdba/dm8/data/dsc/config/dsc0_config/dm.ini dcr_ini=/home/dmdba/dm8/data/dsc/config/dmdcr.ini
B机器
$DM_HOME/bin/dmserver /home/dmdba/dm8/data/dsc/config/dsc1_config/dm.ini dcr_ini=/home/dmdba/dm8/data/dsc/config/dmdcr.ini
11. 注册CSS、ASM、DMSERVER后台服务
A机器
sudo $DM_HOME/script/root/dm_service_installer.sh -t dmcss -dcr_ini /home/dmdba/dm8/data/dsc/config/dmdcr.ini -p CSS
sudo $DM_HOME/script/root/dm_service_installer.sh -t dmasmsvr -dcr_ini /home/dmdba/dm8/data/dsc/config/dmdcr.ini -y DmCSSServiceCSS.service -p ASM
sudo $DM_HOME/script/root/dm_service_installer.sh -t dmserver -dm_ini /home/dmdba/dm8/data/dsc/config/dsc0_config/dm.ini -dcr_ini /home/dmdba/dm8/data/dsc/config/dmdcr.ini -y DmASMSvrServiceASM.service -p DSC
B机器
sudo $DM_HOME/script/root/dm_service_installer.sh -t dmcss -dcr_ini /home/dmdba/dm8/data/dsc/config/dmdcr.ini -p CSS
sudo $DM_HOME/script/root/dm_service_installer.sh -t dmasmsvr -dcr_ini /home/dmdba/dm8/data/dsc/config/dmdcr.ini -y DmCSSServiceCSS.service -p ASM
sudo $DM_HOME/script/root/dm_service_installer.sh -t dmserver -dm_ini /home/dmdba/dm8/data/dsc/config/dsc1_config/dm.ini -dcr_ini /home/dmdba/dm8/data/dsc/config/dmdcr.ini -y DmASMSvrServiceASM.service -p DSC
备注:删除自启
$DM_HOME/script/root/dm_service_uninstaller.sh -n DmCSSServiceCSS
$DM_HOME/script/root/dm_service_uninstaller.sh -n DmASMSvrServiceASM
$DM_HOME/script/root/dm_service_uninstaller.sh -n DmServiceDSC
04| 配置监视器–A/B
cat > $DM_HOME/bin/dmcssm.ini <<-EOF
CSSM_OGUID = 45331
CSSM_CSS_IP = 192.168.3.128:5336
CSSM_CSS_IP = 192.168.3.129:5337
CSSM_LOG_PATH = ../log
CSSM_LOG_FILE_SIZE = 512
CSSM_LOG_SPACE_LIMIT = 2048
EOF
注册监视器(选做)
sudo $DM_HOME/script/root/dm_service_installer.sh -t dmcssm -cssm_ini $DM_HOMEs/bin/dmcssm.ini -p Monitor
备注:删除自启
sudo $DM_HOME/script/root/dm_service_uninstaller.sh -n DmCSSMonitorServiceMonitor
启动监视器
# 1. 使用注册服务名方式启动监视器
$DM_HOME/bin/DmCSSMonitorServiceMonitor start
# 2. 前台启动
$DM_HOME/bin/dmcssm INI_PATH=/opt/dsc/dmdbms/bin/dmcssm.ini
监视器常用操作
命令 含义
show 查看所有组的信息
show config 查看dmdcr_cfg.ini 的配置信息
show monitor 查看当前连接到主 CSS 的所有监视器信息
show命令输出解析
group[]行显示的内容为:
name: 集群名称
seq: 集群编号
type: 集群类型[CSS/ASM/DB]
control_node: 集群内控制节点
ep 行显示的内容为:
inst_name: 节点实例名
seqno: 节点编号
port: 实例对外提供服务的端口号
mode: 模式[控制/普通]
sys_status: 实例系统状态[MOUNT/OPEN 等]
vtd_status: 实例的集群状态[WORKING/SHUTDOWN/SYSHALT 等]
is_ok: 实例在集群内是否正常,ERROR 的节点暂时从集群内剔除
active: 实例是否活动
guid: 实例的 guid 值
ts: 实例的时间戳
二、启停
01| 启动集群–A/B
修改配置文件,将拉起命令的注释去掉
sed -i 's/#DMDCR_ASM_RESTART_INTERVAL/DMDCR_ASM_RESTART_INTERVAL/g' /home/dmdba/dm8/data/dsc/config/dmdcr.ini
sed -i 's/#DMDCR_ASM_STARTUP_CMD/DMDCR_ASM_STARTUP_CMD/g' /home/dmdba/dm8/data/dsc/config/dmdcr.ini
sed -i 's/#DMDCR_DB_RESTART_INTERVAL/DMDCR_DB_RESTART_INTERVAL/g' /home/dmdba/dm8/data/dsc/config/dmdcr.ini
sed -i 's/#DMDCR_DB_STARTUP_CMD/DMDCR_DB_STARTUP_CMD/g' /home/dmdba/dm8/data/dsc/config/dmdcr.ini
# 1. 启动DMCSS --A/B
$DM_HOME/bin/DmCSSServiceCSS start
CSS启动后30秒自动拉起ASM,60秒自动拉起DMSERVER。
02| 关闭集群–A/B
A/B机器DMSERVER→A/B机器ASM→A/B机器CSS
$DM_HOME/bin/DmServiceDSC stop
$DM_HOME/bin/DmASMSvrServiceASM stop
$DM_HOME/bin/DmCSSServiceCSS stop
📢注意:
- DSC正常停库必须2节点同时停止,根据目前脚本配置,CSS启动后30秒自动拉起ASM,60秒自动拉起DMSERVER,所以停止DMSERVER和ASM后,要尽快停止CSS,避免被自动拉起。
- ASM服务在任意节点停止,2个节点的ASM服务都会停止,为了保险起见,可以两边都执行停止命令。
- 服务全部停止后,要检查后台进程是否全部停止。
03| 查看集群节点
# 查看节点信息
SQL> select * from V$DSC_EP_INFO;
行号 EP_NAME EP_SEQNO EP_GUID EP_TIMESTAMP EP_MODE EP_STATUS
---------- ------- ----------- -------------------- -------------------- ------------ ---------
1 DSC0 0 777621574 777623881 Control Node OK
2 DSC1 1 777622883 777625186 Normal Node OK
# 当前事务的锁信息
SQL> select * from v$dsc_lock;
行号 EP_SEQNO ADDR TRX_ID LTYPE LMODE BLOCKED TABLE_ID ROW_IDX IGN_FLAG
---------- ----------- -------------------- -------------------- ------ ----- ----------- ----------- -------------------- -----------
1 0 139972136923376 11034 OBJECT IS 0 150994944 0 1
2 1 139972136926848 11039 OBJECT IS 0 150994944 0 1
3 0 139945427595504 11034 OBJECT IS 0 150994945 0 1
4 1 139945427598976 11039 OBJECT IS 0 150994945 0 1
5 0 139945427602448 11034 OBJECT IS 0 7 0 1
三、 服务名配置
Linux环境:dm_svc.conf放在应用服务器/etc目录下。
Windows32环境:dm_svc.conf放在应用服务器System32目录下。
Windows64环境:dm_svc.conf放在应用服务器System32和SysWOW64目录下。
# dm_svc.conf 文件
TIME_ZONE=(+8:00)
LANGUAGE=(cn)
DSC1=(172.16.1.1:5236,172.16.1.2:5236)
[DSC1]
LOGIN_ENCRYPT=(0)
SWITCH_TIME=(20)
SWITCH_INTERVAL=(2000)
选项说明
1. SWITCH_TIMES
检测到数据库实例故障时,接口在服务器之间切换的次数;超过设置次数没有连接到有效数据库时,断开连接并报错。有效值范围 1~9223372036854775807,默认值为 1。
2. SWITCH_INTERVAL
表示在服务器之间切换的时间间隔,单位为毫秒,有效值范围
1~9223372036854775807,默认值为 200。
3.LOGIN_DSC_CTRL
服务名连接数据库时是否只选择 DMDSC 控制节点的库。0:否;1:是。默认值为 0。
4. EP_SELECTOR
连接数据库时采用何种模型建立连接。
0:依次选取列表中的不同节点建立连接,使得所有连接均匀地分布在各个节点上;默认值为 0。
1:选择列表中最前面的节点建立连接,只有当前节点无法建立连接时才会选择下一个节点进行连接。
5. AUTO_RECONNECT
连接发生异常或一些特殊场景下连接处理策略。
0:关闭连接;默认值为 0
1:当连接发生异常时自动切换到其他库,无论切换成功还是失败都会抛一个 SQLException,用于通知上层应用进行事务执行失败时的相关处理;
2:配合 EP_SELECTOR=1 使用,如果服务名列表前面的节点恢复了,将当前连接切换到前面的节点上。
6.CHECK_FREQ
JDBC 专用。服务名连接数据库时,循环检测连接是否需要重置的时间间隔。即每间隔设定时间检测连接对象是否发生改变,若连接对象发生改变,JDBC 连接会自动重置到新对象。单位 ms,有效值范围 0~2147483647。默认值 300000。
四、应用连接
<DRIVER>dm.jdbc.driver.DmDriver</DRIVER>
<URL>jdbc:dm://DSC1:5236?compatibleMode=oracle</URL>
附:友情链接链接:
达梦技术社区:https://eco.dameng.com