文章目录
1 DSC集群及其组成
DMDSC 集群是一个多实例、单数据库的系统。多个数据库实例可以同时访问、修改同一个数据库的数据。用户可以登录集群中的任意一个数据库实例,获得完整的数据库服务。数据文件、控制文件在集群系统中只有一份,不论有几个节点,这些节点都平等地使用这些文件,这些文件保存在共享存储上。每个节点有自己独立的联机日志和归档日志,其中联机日志保存在共享存储上,归档日志可以保存在本地存储上也可以保存在共享存储上。
DMDSC 集群主要由数据库和数据库实例、共享存储、DMASM 或 DMASM 镜像、本地存储、通信网络、集群控制软件 DMCSS、集群监视器 DMCSSM 组成。
2 准备工作
2.1 软硬件环境
- 硬件:
2台相同配置的虚拟机:DSC0 和 DSC1。
2GB RAM,1×2核 x86_64 CPU,1块网卡。
100GB 共享盘。
IP:192.168.1.10(DSC0)、192.168.1.11(DSC1)
- 软件:
软件 | 版本 | 命令 |
---|---|---|
OS | CentOS Linux release 7.9.2009 (Core) | cat /etc/*release |
数据库 | DM Database Server x64 V8 | select * from v$instance; |
数据库软件目录 | /home/dmdba/dmdbms |
2.2 新建共享磁盘
一、配置DSC0的磁盘
- 在DSC1的虚拟机设置中点击“添加”,选择“硬盘”、“SCSI”、“创建新虚拟磁盘”,设置好磁盘大小,勾选“立即分配”和“存储为单个文件”,将磁盘命名为DSC.vmdk,点击“完成”开始创建磁盘。
- 磁盘创建完成后,在高级设置中设置磁盘模式,最后点击“确定”,不然修改不会生效。
二、配置DSC1的磁盘
- 在虚拟机DSC1的安装目录下找到DSC1.vmx文件,用记事本打开,添加以下几行:
disk.locking="FALSE"
scsi1:0.SharedBus="Virtual"
scsi1:1.SharedBus="Virtual"
scsi2:0.SharedBus="Virtual"
scsi2:1.SharedBus="Virtual"
以上的设置表示所有的BUS都共享。
如果不是所有的BUS都要共享,可以将上面的设置参数改为“true",如:scsi1:0.SharedBus=“true”
- 在DSC1的虚拟机设置中添加硬盘,前面的步骤与DSC1相同,选择“使用吸纳有虚拟磁盘”。选择DSC0虚拟机目录中的磁盘文件DSC0.vmdk,点击完成。最后在高级设置中修改磁盘模式即可。
三、裸设备划分
- 打开虚拟机,输入
fdisk -l
查看共享磁盘路径,路径为/dev/sdb
- 执行命令
fdisk /dev/sdb
,在共享磁盘上进行裸设备划分==(只在DSC0节点上做)==,n
为新增分区
-
第一块磁盘划分(放dcr信息):输入
n
,p
,回车,回车,+100M
。 -
第二块磁盘划分(放vote信息):输入
n
,p
,回车,回车,+100M
。 -
第三块磁盘划分(放redo log):输入
n
,p
,回车,回车,+4G
。 -
第四块磁盘划分(放data):输入
n
,p
,回车,回车,回车。
最后输入w
,保存配置。
清除全部分区:dd if=/dev/zero of=/dev/sdb bs=10M count=10
- 编辑 /etc/udev/rules.d/70-persistent-ipoib.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"
3 部署DSC
3.1 创建目录
两机器都要做。
配置文件存放目录:/home/dmdba/dmdbms/dsc/config
su - dmdba
mkdir -p /home/dmdba/dmdbms/dsc/config
3.2 创建配置文件
DSC0:dmdcr.ini 、dmdcr_cfg.ini 、dmasvrmal.ini 、dminit.ini
cd /home/dmdba/dmdbms/dsc/config
touch dmdcr.ini dmdcr_cfg.ini dmasvrmal.ini dminit.ini
dmdcr.ini
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH = /home/dmdba/dmdbms/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/dmdbms/bin/dmasmsvr dcr_ini=/home/dmdba/dmdbms/dsc/config/dmdcr.ini
#DMDCR_DB_RESTART_INTERVAL = 60 #CSS认定DSC故障重启的时间
#DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver path=/home/dmdba/dmdbms/dsc/config/dsc0_config/dm.ini dcr_ini=/home/dmdba/dmdbms/dsc/config/dmdcr.ini
dmdcr_cfg.ini
DCR_N_GRP = 3 #集群环境有多少个GROUP,范围:1~16
DCR_VTD_PATH = /dev/raw/raw2 #Voting Disk Path
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.1.10 #心跳地址
DCR_EP_PORT = 5336 #CSS端口
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 192.168.1.11
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.1.10 #心跳地址
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.1.11
DCR_EP_PORT = 5436
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 = 5536
dmasvrmal.ini
[MAL_INST1]
MAL_INST_NAME = ASM0
MAL_HOST = 192.168.1.10 #心跳地址
MAL_PORT = 5636 #MAL监听端口
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 192.168.1.11
MAL_PORT = 5636
dminit.ini
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 = 0
CHARSET = 1
EXTENT_SIZE = 32
[DSC0]
config_path = /home/dmdba/dmdbms/dsc/config/dsc0_config
port_num = 5236
mal_host = 192.168.1.10
mal_port = 5736
log_path = +DMDATA/log/dsc0_log01.log
log_path = +DMDATA/log/dsc0_log02.log
[DSC1]
config_path = /home/dmdba/dmdbms/dsc/config/dsc1_config
port_num = 5236
mal_host = 192.168.1.11
mal_port = 5736
log_path = +DMDATA/log/dsc1_log01.log
log_path = +DMDATA/log/dsc1_log02.log
DSC1:dmdcr.ini 、dmasvrmal.ini
cd /home/dmdba/dmdbms/dsc/config
touch dmdcr.ini dmasvrmal.ini
dmdcr.ini
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH = /home/dmdba/dmdbms/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/dmdbms/bin/dmasmsvr dcr_ini=/home/dmdba/dmdbms/dsc/config/dmdcr.ini
#DMDCR_DB_RESTART_INTERVAL = 60 #CSS认定DSC故障重启的时间
#DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver path=/home/dmdba/dmdbms/dsc/config/dsc0_config/dm.ini dcr_ini=/home/dmdba/dmdbms/dsc/config/dmdcr.ini
dmasvrmal.ini(跟DSC1一样)
[MAL_INST1]
MAL_INST_NAME = ASM0
MAL_HOST = 192.168.1.10 #心跳地址
MAL_PORT = 5636 #MAL监听端口
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 192.168.1.11
MAL_PORT = 5636
3.3 在 DSC0 使用 DMASMCMD 工具初始化
/home/dmdba/dmdbms/bin/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/dmdbms/dsc/config/dmdcr_cfg.ini' identified by 'SYSDBA'
init votedisk '/dev/raw/raw2' from '/home/dmdba/dmdbms/dsc/config/dmdcr_cfg.ini'
3.4 启动 CSS、ASM 服务
在 DSC0、DSC1 节点分别启动 dmcss、dmasmsvr。(复制窗口分别启动)
su - dmdba
cd /home/dmdba/dmdbms/bin
./dmcss DCR_INI=/home/dmdba/dmdbms/dsc/config/dmdcr.ini
./dmasmsvr DCR_INI=/home/dmdba/dmdbms/dsc/config/dmdcr.ini
3.5 创建 DMASM 磁盘组
## 在 DSC0 节点启动 dmasmtool 工具
cd /home/dmdba/dmdbms/bin
./dmasmtool DCR_INI=/home/dmdba/dmdbms/dsc/config/dmdcr.ini
create diskgroup 'DMARCH' asmdisk '/dev/raw/raw3'
create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'
3.6 使用 dminit 初始化 DB 环境
在 DSC0 节点启动 dminit 工具初始化数据库。dminit 执行完成后,会在/home/dmdba/dmdbms/dsc/config
下生成两个文件夹:dsc0_config
和dsc1_config
。
cd /home/dmdba/dmdbms/bin
./dminit control=/home/dmdba/dmdbms/dsc/config/dminit.ini
## 拷贝 dsc1_config 文件夹到 DSC1 的相同位置
scp -r /home/dmdba/dmdbms/dsc/config/dsc1_config dmdba@192.168.1.11:/home/dmdba/dmdbms/dsc/config
3.7 启动数据库集群
## 启动数据库
## DSC0
./dmserver /home/dmdba/dmdbms/dsc/config/dsc0_config/dm.ini dcr_ini=/home/dmdba/dmdbms/dsc/config/dmdcr.ini
## DSC1
./dmserver /home/dmdba/dmdbms/dsc/config/dsc1_config/dm.ini dcr_ini=/home/dmdba/dmdbms/dsc/config/dmdcr.ini
3.8 配置监视器
在 DSC1 上创建 dmcssm.ini
[dmdba@~]$ vi /home/dmdba/dmdbms/dmcssm.ini
CSSM_OGUID = 45331
CSSM_CSS_IP = 192.168.1.10:5336
CSSM_CSS_IP = 192.168.1.11:5336
CSSM_LOG_PATH = ../log
CSSM_LOG_FILE_SIZE = 512
CSSM_LOG_SPACE_LIMIT = 2048
3.9 注册 CSS、ASM、DMSERVER 后台服务
## DSC0 机器
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmcss -dcr_ini /home/dmdba/dmdbms/dsc/config/dmdcr.ini -p CSS0
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmasmsvr -dcr_ini /home/dmdba/dmdbms/dsc/config/dmdcr.ini -y DmCSSServiceCSS0.service -p ASM0
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /home/dmdba/dmdbms/dsc/config/dsc0_config/dm.ini -dcr_ini /home/dmdba/dmdbms/dsc/config/dmdcr.ini -y DmASMSvrServiceASM0.service -p DSC0
## DSC1 机器
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmcss -dcr_ini /home/dmdba/dmdbms/dsc/config/dmdcr.ini -p CSS1
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmasmsvr -dcr_ini /home/dmdba/dmdbms/dsc/config/dmdcr.ini -y DmCSSServiceCSS1.service -p ASM1
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /home/dmdba/dmdbms/dsc/config/dsc1_config/dm.ini -dcr_ini /home/dmdba/dmdbms/dsc/config/dmdcr.ini -y DmASMSvrServiceASM1.service -p DSC1
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmcssm -cssm_ini /home/dmdba/dmdbms/bin/dmcssm.ini -p MON
3.10 开启集群归档
DSC0
cd /home/dmdba/dmdbms/dsc/config/dsc0_config
vi dm.ini
ARCH_INI = 1
vi dmarch.ini
ARCH_WAIT_APPLY = 0
ARCH_LOCAL_SHARE = 1
ARCH_LOCAL_SHARE_CHECK=0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMARCH/ARCH/DSC0/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 20480
[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH = +DMARCH/ARCH/DSC1/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 51200
[ARCHIVE_LOCAL2]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/dmdbms/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 20480
DSC1
cd /home/dmdba/dmdbms/dsc/config/dsc1_config
vi dm.ini
ARCH_INI = 1
vi dmarch.ini
ARCH_WAIT_APPLY = 0
ARCH_LOCAL_SHARE = 1
ARCH_LOCAL_SHARE_CHECK=0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMARCH/ARCH/DSC1/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 20480
[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_INCOMING_PATH = +DMARCH/ARCH/DSC0/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 51200
[ARCHIVE_LOCAL2]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/dmdbms/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 20480
3.11 使用服务方式启动各项内容
DSC0
./DmCSSServiceCSS0 start
DSC1
./DmCSSServiceCSS1 start
DSC0
./DmASMSvrServiceASM0 start
DSC1
./DmASMSvrServiceASM1 start
DSC0
./DmServiceDSC0 start
DSC1
./DmServiceDSC1 start
3.12 启动cssm监视器
DSC1
cd /home/dmdba/dmdbms/bin
./dmcssm ../dmcssm.ini