0,dsc整体架构
DMDSC 集群主要由本地存储、共享存储、通信网络、数据库和数据库实例、DMASM 或 DMASM 镜像、集群控制软件 DMCSS、集群监视器 DMCSSM 组成。DMDSC 集群最多支持 8 个数据库实例节点。下图展示了一个两节点的 DMDSC 集群系统结构图。
其中,每个节点上运行3个进程:
①server,数据库服务
②asmsvr,提供共享文件的全局并发控制
③css,集群同步服务,管理节点的启动流程、状态监控等
1,前期准备
本文安装两个虚拟机CHEN1和CHEN2,参考笔记http://t.csdnimg.cn/ZWm3v,
- 安装vmware-tool,设置共享文件夹非必须
- 关闭防火墙,配置网络,修改系统资源限制
- 创建安装用户、安装路径
- 安装数据库、创建实例
安装路径为/home/dmdba/dmdbms,分别创建实例CHEN1和CHEN2
2,配置共享存储
单独整理到这一篇博客:配置dsc共享存储-CSDN博客
3,修改配置文件
在2台虚拟机的安装路径/home/dmdba/dmdbms下创建文件夹dsc_config,专门用于存放dsc相关的配置文件
3.1,dmdcr_cfg.ini
mkdir /home/dmdba/dmdbms/dsc_config
vi /home/dmdba/dmdbms/dsc_config/dmdcr_cfg.ini
# dmdcr_cfg.ini
DCR_N_GRP = 3 # 集群环境有多少个 GROUP,范围:1~16
DCR_VTD_PATH = /dev/raw/raw2 # 规划为 vote 的磁盘
DCR_OGUID = 754403 # 消息标识,一个组里面只有一个。
[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.0.161 # 心跳地址
DCR_EP_PORT = 6000 # CSS 端口
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 192.168.0.162
DCR_EP_PORT = 6000
[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 = 984651 # 共享内存标识,两节点要不同
DCR_EP_SHM_SIZE = 20 # 共享内存大小
DCR_EP_HOST = 192.168.0.161 # 心跳地址
DCR_EP_PORT = 6100 # ASM 端口
DCR_EP_ASM_LOAD_PATH = /dev/raw
[GRP_ASM]
DCR_EP_NAME = ASM1
DCR_EP_SHM_KEY = 984652
DCR_EP_SHM_SIZE = 20
DCR_EP_HOST = 192.168.0.162
DCR_EP_PORT = 6100
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 = CHEN1 # 实例名,和 dm.ini 的 INSTANCE_NAME 一致
DCR_EP_SEQNO = 0 # 组内序号,不能重复
DCR_EP_PORT = 5240 # 实例端口,和 dm.ini 的 PORT_NUM 一致
DCR_CHECK_PORT = 6200 # DCR 检查端口
[GRP_DSC]
DCR_EP_NAME = CHEN2
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5240
DCR_CHECK_PORT = 6200
3.2,asmcmd.txt
用于dmasmcmd工具执行的脚本,用于初始化所有磁盘
vi /home/dmdba/dmdbms/dsc_config/asmcmd.txt
#asm script file
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 'abcd'
init votedisk '/dev/raw/raw2' from '/home/dmdba/dmdbms/dsc_config/dmdcr_cfg.ini'
运行dmasmcmd工具,只用在一台机器上执行
cd /home/dmdba/dmdbms/bin
./dmasmcmd script_file=/home/dmdba/dmdbms/dsc_config/asmcmd.txt
3.3,dmasvrmal.ini
两台虚拟机内容相同
vi /home/dmdba/dmdbms/dsc_config/dmasvrmal.ini
# dmasvrmal.ini
[MAL_INST1]
MAL_INST_NAME = ASM0 # ASM 节点名,和 dmdcr_cfg.ini 的 ASM组 DCR_EP_NAME 一致
MAL_HOST = 192.168.0.161
MAL_PORT = 6300
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 192.168.0.162
MAL_PORT = 6300
3.4,dmdcr.ini
后面执行dminit.ini配置之后,会在指定路径下生成一个新的dmmal.ini文件。
MAL 配置文件包括 DMMAL.INI 和 DMASVRMAL.INI。使用同一套 MAL 系统的所有实例,MAL 系统配置文件要严格保持一致。
DMASMSVR和DMDSC集群中的DMSERVER实例需要分别配置一套独立的MAL系统,两者配置的 MAL 环境不能冲突。
vi /home/dmdba/dmdbms/dsc_config/dmdcr.ini
# dmdcr.ini
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH = /home/dmdba/dmdbms/dsc_config/dmasvrmal.ini # dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 0
# ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 10
DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmasmsvr dcr_ini = /home/dmdba/dmdbms/dsc_config/dmdcr.ini
# DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 0 #先配置不自动拉起
DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver path = /home/dmdba/dmdbms/dsc_config/dm.ini dcr_ini = /home/dmdba/dmdbms/dsc_config/dmdcr.ini
CHEN1对应的dmdcr_seqo 为 0,CHEN2对应的dmdcr_seqo 为 1
参数说明:DMASMSVR 和 DMSERVER 使用不同的 MAL 系统,需要配置两套 MAL 系统,配置文件 DMMAL.INI 需要分别生成,保存到不同的目录下,并且 DMMAL.INI 中的配置项不能重复、冲突。
这里,DMASMSVR使用的MAL系统对应的DMMAL.INI文件就是上一步的dmasvrmal.ini文件
3.5,dminit.ini
vi /home/dmdba/dmdbms/dsc_config/dminit.ini
# dminit.ini
db_name = CHEN # 数据库名
system_path = +DMDATA/data
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 磁盘路径,目前不支持 asm,只能是裸设备
dcr_seqno = 0 # 连接 DMASM 节点节点号
auto_overwrite = 1 # 是否覆盖所有同名文件(0) 0:不覆盖 1:部分覆盖 2:完全覆盖
[CHEN1] # 数据库实例名
config_path = /home/dmdba/dmdbms/dsc_config/new1
port_num = 5240 # 对外服务端口
mal_host = 192.168.0.161 # MAL系统IP,与dmasvrmal.ini文件中mal_host相同
mal_port = 6300 # MAL监听端口,与dmasvrmal.ini文件中mal_port相同
log_path = +DMLOG/log/chen1_log01.log
log_path = +DMLOG/log/chen1_log02.log
[CHEN2]
config_path = /home/dmdba/dmdbms/dsc_config/new2
port_num = 5240
mal_host = 192.168.0.162
mal_port = 6300
log_path = +DMLOG/log/chen2_log01.log
log_path = +DMLOG/log/chen2_log02.log
以+开头的就是 ASM 文件系统的路径,例如+DMDATA/data
config_path表示初始化实例之后会生成新的配置文件如dm.ini的目标路径。实际执行时,是在其中一台虚拟机上运行初始化的脚本,但是会生成两个节点分别对应的新的配置文件,所以两个节点的config_path不能相同,这里用new1和new2区分。
不然会报错
最终得到的配置文件,运行init之前
4,启动集群
4.1,启动CSS、ASM服务
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
4.2,创建ASM磁盘组
只需要在一台虚拟机上操作
./dmasmtool DCR_INI=/home/dmdba/dmdbms/dsc_config/dmdcr.ini
create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'
create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'
control初始化实例
cd /home/dmdba/dmdbms/bin
./dminit control=/home/dmdba/dmdbms/dsc_config/dminit.ini
初始化实例后的配置文件
4.3,拷贝新生成的配置文件
将初始化生成的new2文件夹拷贝到CHEN2节点
scp -r /home/dmdba/dmdbms/dsc_config/new2 dmdba@192.168.37.202:/home/dmdba/dmdbms/dsc_config/new2
4.4,启动server
./dmserver path=/home/dmdba/dmdbms/dsc_config/newx/dm.ini dcr_ini=/home/dmdba/dmdbms/dsc_config/dmdcr.ini
两个节点均能够正常启动就说明部署成功