DMDSC集群,全称为DM共享存储集群(DM Data Shared Cluster),简称DMDSC,DM数据共享集群允许多个数据库实例同时访问、操作同一个数据库,具有高可用、高性能、可负载均衡等特性。DMDSC支持故障自动切换和故障自动重加入,某个实例发生故障不会影响整体数据库服务。
DMDSC集群是一个多实例、单数据库的系统,多个数据库实例可以访问、修改同一个数据库的数据。用户可以登录集群中的任意一个数据库实例,就可以获取这个数据库的完整服务。在DMDSC集群中,数据文件、控制文件只有一份,并且都保存在共享存储中,所有实例共同操作这些文件。每个节点都有一份自己的联机日志和归档日志,联机日志和归档日志也都在共享存储上。只有实例相关的配置文件是保留在实例服务器本机,用于启动实例。
DMDSC集群主要由数据库和数据库实例、共享存储、DMASM或DMASM镜像、本地存储、通信网络、集群控制软件DMCSS、集群监视器DMCSSM组成,DMDSC集群最多支持8个数据库实例节点。下图为两节点DMDSC集群系统的结构图:
本次部署两节点DSC,采用Vmware虚拟机创建共享磁盘的方式进行。
虚拟机进行双机centos7部署,关闭防火墙,调整时间,调整系统内核参数、limit限制,创建dmdba用户等。
DSC1服务器一共创建四个磁盘,大小分别为1G(DCR),1G(VOTE),2G(RLOG),8G(DATA)。操作如下:
关闭虚拟机–>编辑虚拟机设置–>添加–>硬盘–>SCSI–>创建新的虚拟磁盘–>1G-立即分配-存储为单个文件–>选择存放位置以及改名–>完成。
DSC2服务器需要基于DSC1服务器创建的四个磁盘进行添加,操作如下:
关闭虚拟机–>编辑虚拟机设置–>添加–>硬盘–>SCSI–>使用现有的虚拟磁盘–>浏览选择磁盘–>完成。
完成后结果如下图:
找到虚拟机安装位置,编辑DSC1虚拟机的参数文件DSC1.vmx和DSC2虚拟机的参数文件DSC2.vmx:
添加以下内容。
diskLib.dataCacheMaxSize=0
diskLib.dataCacheMaxReadAheadSize=0
diskLib.dataCacheMinReadAheadSize=0
diskLib.dataCachePageSize=4096
diskLib.maxUnsyncedWrites = "0"
disk.locking = "FALSE"
scsi0.sharedBus ="virtual"
disk.EnableUUID = "TRUE"
注意scsi0.sharedBus ="virtual"参数,查看磁盘高级选项,查看scsi的编号进行调整,通常默认会识别为scsi0:2-5。
fdisk -l
/usr/lib/udev/scsi_id -g -u /dev/sdb
vi /etc/udev/rules.d/66-dmdevices.rules
KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c29f1fb601bd39e1008801375b84", SYMLINK+="ASMDISK/dmdcr",OWNER="dmdba", GROUP="dmdba",MODE="0660"
KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c2951f912cfa5a52048f7846be92", SYMLINK+="ASMDISK/dmvote",OWNER="dmdba", GROUP="dmdba",MODE="0660"
KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c29293ba4bb7e368110283b32f6a", SYMLINK+="ASMDISK/dmredo",OWNER="dmdba", GROUP="dmdba",MODE="0660"
KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c2963b11d8c08e0ead2aa246a532", SYMLINK+="ASMDISK/dmdata",OWNER="dmdba", GROUP="dmdba",MODE="0660"
udevadm trigger --type=devices --action=change
ls -l /dev/ASMDISK
./DMInstall.bin -I <<EOF
1
n
y
21
1
/dmdata/dmdbms
y
EOF
su - root
sh /dmdata/dmdbms/script/root/root_installer.sh
echo " export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool" >> .bash_profile
source .bash_profile
mkdir /dmdata/dmdbms/config
vim /dmdata/dmdbms/config/dmdcr_cfg.ini
DCR_N_GRP = 3 #集群环境有多少个GROUP,范围:1~16
DCR_VTD_PATH = /dev/ASMDISK/dmvote
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.20.51 #心跳地址
DCR_EP_PORT = 5336 #CSS端口
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 192.168.20.52 #心跳地址
DCR_EP_PORT = 5336
[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 #共享内存大小
DCR_EP_HOST = 192.168.20.51 #心跳地址
DCR_EP_PORT = 5436 #ASM端口
DCR_EP_ASM_LOAD_PATH = /dev/ASMDISK
[GRP_ASM]
DCR_EP_NAME = ASM1
DCR_EP_SHM_KEY = 93361
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 192.168.20.52 #心跳地址
DCR_EP_PORT = 5436
DCR_EP_ASM_LOAD_PATH = /dev/ASMDISK
[GRP]
DCR_GRP_TYPE = DB
DCR_GRP_NAME = GRP_DB
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[GRP_DB]
DCR_EP_NAME = DB0 #实例名,和dm.ini的INSTANCE_NAME一致
DCR_EP_SEQNO = 0 #组内序号,不能重复
DCR_EP_PORT = 5236 #实例端口,和dm.ini的PORT_NUM一致
DCR_CHECK_PORT = 5536 #DCR检查端口
[GRP_DB]
DCR_EP_NAME = DB1
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 5536
vim /dmdata/dmdbms/config/asminit.txt
#asm script file
create dcrdisk '/dev/ASMDISK/dmdcr' 'DMDCR'
create votedisk '/dev/ASMDISK/dmvote' 'DMVOTE'
create asmdisk '/dev/ASMDISK/dmredo' 'DMREDO'
create asmdisk '/dev/ASMDISK/dmdata' 'DMDATA'
init dcrdisk '/dev/ASMDISK/dmdcr' from '/dmdata/dmdbms/config/dmdcr_cfg.ini' identified by 'Dameng123'
init votedisk '/dev/ASMDISK/dmvote' from '/dmdata/dmdbms/config/dmdcr_cfg.ini'
需要注意默认密码要求
/dmdata/dmdbms/bin/dmasmcmd SCRIPT_FILE=/dmdata/dmdbms/config/asminit.txt
两台服务器都配置dmasvrmal.ini
vim /dmdata/dmdbms/config/dmasvrmal.ini
[MAL_INST1]
MAL_INST_NAME = ASM0
MAL_HOST = 192.168.20.51 #心跳地址
MAL_PORT = 5636
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 192.168.20.52 #心跳地址
MAL_PORT = 5636
vim /dmdata/dmdbms/config/dmdcr.ini
DMDCR_PATH = /dev/ASMDISK/dmdcr
DMDCR_MAL_PATH = /dmdata/dmdbms/config/dmasvrmal.ini
DMDCR_SEQNO = 0
DMDCR_ASM_TRACE_LEVEL = 2
DMDCR_AUTO_OPEN_CHECK = 90
#DMDCR_ASM_RESTART_INTERVAL = 30
#DMDCR_ASM_STARTUP_CMD = /dmdata/dmdbms/bin/DmASMSvrServiceASM start
#DMDCR_DB_RESTART_INTERVAL = 60
#DMDCR_DB_STARTUP_CMD = /dmdata/dmdbms/bin/DmServiceDMS start
vim /dmdata/dmdbms/config/dmdcr.ini
DMDCR_PATH = /dev/ASMDISK/dmdcr
DMDCR_MAL_PATH = /dmdata/dmdbms/config/dmasvrmal.ini
DMDCR_SEQNO = 1
DMDCR_ASM_TRACE_LEVEL = 2
DMDCR_AUTO_OPEN_CHECK = 90
#DMDCR_ASM_RESTART_INTERVAL = 30
#DMDCR_ASM_STARTUP_CMD = /dmdata/dmdbms/bin/DmASMSvrServiceASM start
#DMDCR_DB_RESTART_INTERVAL = 60
#DMDCR_DB_STARTUP_CMD = /dmdata/dmdbms/bin/DmServiceDMS start
su - root
/dmdata/dmdbms/script/root/dm_service_installer.sh -t dmcss -dcr_ini /dmdata/dmdbms/config/dmdcr.ini -p CSS
/dmdata/dmdbms/script/root/dm_service_installer.sh -t dmasmsvr -dcr_ini /dmdata/dmdbms/config/dmdcr.ini -y DmCSSServiceCSS.service -p ASM
DSC1服务器:
/dmdata/dmdbms/bin/DmCSSServiceCSS start
DSC2服务器:
/dmdata/dmdbms/bin/DmCSSServiceCSS start
DSC1服务器:
/dmdata/dmdbms/bin/DmASMSvrServiceASM start
DSC2服务器:
/dmdata/dmdbms/bin/DmASMSvrServiceASM start
任一机器,dmdba用户执行
/dmdata/dmdbms/bin/dmasmtool DCR_INI=/dmdata/dmdbms/config/dmdcr.ini
create diskgroup 'DM_REDO' asmdisk '/dev/ASMDISK/dmredo'
create diskgroup 'DM_DATA' asmdisk '/dev/ASMDISK/dmdata'
[dmdba@dsc1 ~]$ vi /dmdata/dmdbms/config/dminit.ini
#注意REDO文件大小和数量
[dmdba@dsc1 ~]$ cat /dmdata/dmdbms/config/dminit.ini
db_name = DSC
system_path = +DM_DATA/DATA
main = +DM_DATA/DATA/DSC/main.dbf
main_size = 128
roll = +DM_DATA/DATA/DSC/roll.dbf
roll_size = 128
system = +DM_DATA/DATA/DSC/system.dbf
system_size = 128
ctl_path = +DM_DATA/DATA/DSC/dm.ctl
ctl_size = 8
log_size = 256
dcr_path = /dev/ASMDISK/dmdcr
dcr_seqno = 0
auto_overwrite = 1
PAGE_SIZE = 32
EXTENT_SIZE = 32
CASE_SENSITIVE = Y
CHARSET = 0
BLANK_PAD_MODE = 1
SYSDBA_PWD = Dameng123
SYSAUDITOR_PWD = Dameng123
[DB0]
config_path = /dmdata/dmdbms/config/db0_config
port_num = 5236
mal_host = 192.168.20.51 #心跳地址
mal_port = 5736
log_path = +DM_REDO/log/db0_log01.log
log_path = +DM_REDO/log/db0_log02.log
log_path = +DM_REDO/log/db0_log03.log
[DB1]
config_path = /dmdata/dmdbms/config/db1_config
port_num = 5236
mal_host = 192.168.20.52 #心跳地址
mal_port = 5736
log_path = +DM_REDO/log/db1_log01.log
log_path = +DM_REDO/log/db1_log02.log
log_path = +DM_REDO/log/db1_log03.log
[dmdba@dsc1 ~]$ /dmdata/dmdbms/bin/dminit control=/dmdata/dmdbms/config/dminit.ini
scp -r /dmdata/dmdbms/config/db1_config/ @192.168.20.52:/dmdata/dmdbms/config
两台服务器均配置此参数文件
vim /dmdata/dmdbms/config/dmcssm.ini
CSSM_OGUID = 45331
CSSM_CSS_IP = 192.168.20.51:5336
CSSM_CSS_IP = 192.168.20.52:5336
CSSM_LOG_PATH = /dmdata/dmdbms/log
CSSM_LOG_FILE_SIZE = 256
CSSM_LOG_SPACE_LIMIT = 2048
修改DSC1数据库的配置文件
vim /dmdata/dmdbms/config/db0_config/dm.ini
#修改ARCH_INI的值为1(默认值为0)
配置DSC1的归档
vim /dmdata/dmdbms/config/db0_config/dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DM_DATA/DB0/arch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 102400
[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DB1
ARCH_INCOMING_PATH = +DM_DATA/DB1/arch
ARCH_FILE_SIZE = 1024
修改DSC2数据库的配置文件
vim /dmdata/dmdbms/config/db1_config/dm.ini
#修改ARCH_INI的值为1(默认值为0)
配置DSC2的归档(注意路径的区别)
vim /dmdata/dmdbms/config/db1_config/dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DM_DATA/DB1/arch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 102400
[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DB0
ARCH_INCOMING_PATH = +DM_DATA/DB0/arch
ARCH_FILE_SIZE = 1024
DSC1基于DMASMSvrServiceASM.service注册DMSERVER服务
/dmdata/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /dmdata/dmdbms/config/db0_config/dm.ini -dcr_ini /dmdata/dmdbms/config/dmdcr.ini -y DmASMSvrServiceASM.service -p DMS
DSC1基于DMASMSvrServiceASM.service注册DMSERVER服务
/dmdata/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /dmdata/dmdbms/config/db1_config/dm.ini -dcr_ini /dmdata/dmdbms/config/dmdcr.ini -y DmASMSvrServiceASM.service -p DMS
配置dmdcr.ini
vim /dmdata/dmdbms/config/dmdcr.ini #解开后四行注释
DMDCR_ASM_RESTART_INTERVAL = 30
DMDCR_ASM_STARTUP_CMD = /dmdata/dmdbms/bin/DmASMSvrServiceASM start
DMDCR_DB_RESTART_INTERVAL = 60
DMDCR_DB_STARTUP_CMD = /dmdata/dmdbms/bin/DmServiceDMS start
重启服务器测试自启动情况
/dmdata/dmdbms/bin/dmcssm ini_path=/dmdata/dmdbms/config/dmcssm.ini
show
可以通过CSSM来进行集群的关闭
停止顺序:关闭DMSERVER集群组→关闭ASM集群组→关闭CSS集群组组
/dmdata/dmdbms/bin/dmcssm ini_path=/dmdata/dmdbms/config/dmcssm.ini
Help
Show
Ep stop grp_db
Ep stop grp_ASM
DmCSSServiceCSS stop
完成数据库集群关闭
DmCSSServiceCSS start
DmASMSvrServiceASM start
#在解除dmdcr.ini的注释之后,基于相应配置,超过指定时间会自动拉起相应的服务。
DmServiceDMS start
#在解除dmdcr.ini的注释之后,基于相应配置,超过指定时间会自动拉起相应的服务。
下图中ASM服务状态为自动拉起
查看集群服务状态
/dmdata/dmdbms/bin/dmcssm ini_path=/dmdata/dmdbms/config/dmcssm.ini
Show
启动完成
日志查看
文章
阅读量
获赞