DM 共享存储数据库集群的英文全称 DM Data Shared Cluster,简称 DMDSC。DMDSC 允许多个数据库实例同时访问、操作同一数据库,具有高可用、高性能、负载均衡等特性。并支持故障自动切换和故障自动重加入,某一个数据库实例故障后,不会导致数据库服务无法提供。
DMDSC 主要特点包括:
高可用性:只要集群中有一个活动节点,就能正常提供数据库服务。
高吞吐量:多个节点同时提供数据库服务,有效提升集群的整体事务处理能力。
负载均衡:用户的连接请求被平均分配到集群中的各个节点,确保各个节点的负载大致平衡。
一、先给虚拟机搭建共享磁盘,以及各个数据库软件安装
rac0 IP:192.168.91.12
Rac1 ip:192.168.91.15
此处不赘述,搭建两个虚拟机并完善环境,修改ip,关闭防火墙,修改selinux等等。并在各自的虚拟机上,安装数据库软件。在建成数据库之后,使用dmdba用户在两个节点一起执行一下命令:
但是,在A节点要执行以下命令:
在B 节点执行以下命令
二、划分裸设备和绑定裸设备
用途 磁盘/分区 备注
存放 dcr 信息 /dev/sdb1 100m 左右
存放 vote 信息 /dev/sdb2 100m 左右
存放 redo 日志 /dev/sdb3 4G 左右
存放数据文件 /dev/sdb4 根据实际数据大小分配
绑定:设备名绑定
两个节点都要做。
首先通过 lsblk 命令,观察裸设备:
m vim /etc/rc.local
#DMDSC disks
raw /dev/raw/raw1 /dev/sdb1
raw /dev/raw/raw2 /dev/sdb2
raw /dev/raw/raw3 /dev/sdb3
raw /dev/raw/raw4 /dev/sdb4
chown dmdba:dinstall /dev/raw/raw1
chown dmdba:dinstall /dev/raw/raw2
chown dmdba:dinstall /dev/raw/raw3
chown dmdba:dinstall /dev/raw/raw4
chmod 660 /dev/raw/raw1
chmod 660 /dev/raw/raw2
chmod 660 /dev/raw/raw3
chmod 660 /dev/raw/raw4
然后赋予执行权限;chmod 775 /etc/rc.d/rc.local
然后重启,或者 source /etc/rc.local 使当前生效
(3 3 )查看
查看裸设备大小 命令:blockdev --getsize64 /dev/raw/raw1
三、配置 dmdcr_cfg.ini
注:后续操作如无特殊说明,请使用 dmdba 用户;
新建 dmdcr_cfg.ini 配置文件, 两个节点都要配置,内容完全一样,保存到/home/dmdba/dmdbms/config 目录下
DCR_N_GRP = 3
DCR_VTD_PATH = /dev/raw/raw2
DCR_OGUID = 45330
[GRP]
DCR_GRP_TYPE = CSS
DCR_GRP_NAME = GRP_CSS
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[GRP_CSS]
DCR_EP_NAME = CSS0
DCR_EP_HOST = 192.168.91.12 #心跳地址
DCR_EP_PORT = 9341
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 192.168.91.15 #心跳地址
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
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 192.168.91.12 #业务地址
DCR_EP_PORT = 9349
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.91.15 #业务地址
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 = dsc0
DCR_EP_SEQNO = 0
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9741
[GRP_dsc]
DCR_EP_NAME = dsc1
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9742
四、初始化磁盘组
在节点 A 上启动 dmasmcmd 工具,依次输入以下命令:
cd /dm8/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/config/dmdcr_cfg.ini’ identified by ‘abcd’
init votedisk ‘/dev/raw/raw2’ from ‘/home/dmdba/dmdbms/config/dmdcr_cfg.ini’
五、配置 dmasvrmal.ini 文件和 和 dmdcr.ini 文件
新建 dmasvrmal.ini 配置文件, 两个节点都要配置,内容完全一样,保存到/home/dmdba/dmdbms/config 目录下
[MAL_INST1]
MAL_INST_NAME = ASM0
MAL_HOST = 192.168.91.12 #心跳地址
MAL_PORT = 7236
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 192.168.91.15 #心跳地址
MAL_PORT = 7237
新建 dmdcr.ini 配置文件, 两个节点都要配置,内容 大部分一 样,只是 dmdcr_seqo分别为 0 和 1。保存到/home/dmdba/dmdbms/config 目录下
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH = /home/dmdba/dmdbms/config/dmasvrmal.ini
DMDCR_SEQNO = 0(B节点写1)
#DMDCR_ASM_RESTART_INTERVAL = 30
#DMDCR_ASM_STARTUP_CMD = service DmASMSvrService start
#DMDCR_DB_RESTART_INTERVAL = 60
#DMDCR_DB_STARTUP_CMD = service DmServicedsc0 start
六、启动 DMCSS 、DMASM 服务
先在节点 A 前台启动 dmcss、dmasmsvr 服务。
然后节点 B 前台启动 dmcss、dmasmsvr 服务。
都启动后,在节点 A 输入 show 命令,观察这 CSS0、CSS1、ASM0、ASM1 服务的sys_status 、vtd_status、is_ok、active 的状态为 OPEN、 WORKING、OK、TRUE,表示服务都正常启动。
启动 dmcss 服务命令:
[bin]#./dmcss DCR_INI=/home/dmdba/dmdbms/config/dmdcr.ini
启动 dmasmsvr 服务命令:
[bin]#./dmasmsvr DCR_INI=/home/dmdba/dmdbms/config/dmdcr.ini
七、创建 DMASM 磁盘
在 css 服务和 asm 服务启动的情况下,选择 ASM 的控制节点,启动 dmasmtool 工具,输入下列语句创建 DMASM 磁盘组:
[ bin]# ./dmasmtool DCR_INI=/home/dmdba/dmdbms/config/dmdcr.ini
#创建日志磁盘组,10s
create diskgroup ‘DMLOG’ asmdisk ‘/dev/raw/raw3’
#创建数据磁盘组
create diskgroup ‘DMDATA’ asmdisk ‘/dev/raw/raw4’
八、配置 dminit.ini 文件
控制节点准备 dminit.ini 配置文件,保存到/home/dmdba/dmdbms/config 目录,参数目前是:(1)数据库大小写不敏感(2)字符集改为 GB18030(3)其他参数默认。
输入命令 cat dminit.ini 后出现以下内容
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 = 2048
dcr_path = /dev/raw/raw1
dcr_seqno = 0
auto_overwrite = 1
PAGE_SIZE = 32
CASE_SENSITIVE = N#注意,这个参数表示大小写不敏感。
CHARSET = 0#字符集(0),可选值:0[GB18030],1[UTF-8],2[EUC-KR]
[dsc0]
config_path = /home/dmdba/dmdbms/config/ dsc0_config
port_num = 5236
mal_host = 192.168.91.12 #心跳地址
mal_port = 9340
log_path = +DMLOG/log/dsc0_log01.log
log_path = +DMLOG/log/dsc0_log02.log
[dsc1]
config_path = /home/dmdba/dmdbms/config/ dsc1_config
port_num = 5236
mal_host = 192.168.91.15 #心跳地址
mal_port = 9341
log_path = +DMLOG/log/dsc1_log01.log
log_path = +DMLOG/log/dsc1_log02.log
九、初始化数据库
首先选择节点 A,启动 dminit 工具初始化数据库。dminit 执行完成后,会在config_path 目录( /home/dmdba/dmdbms/config /dsc0_config 和 dsc1_config)下生成配置文件 dm.ini 和 dmmal.ini。
./dminit control=/home/dmdba/dmdbms/config/dminit.ini
然后初始化数据库完成之后,将节点 A 上生成的 dsc1_config 文件夹拷贝到节点 B的/home/dmdba/dmdbms/config 目录下。
最后将节点 A 上/home/dmdba/dmdbms/config 目录下的 dsc1_config 文件夹删掉。
十、配置远程归档
先将两个节点上 dsc0_config 目录或者 dsc1_config 下_的 dm.ini 中的 ARCH_INI 设置为 1,然后在这个目录下配置 dmarch.ini 文件
节点 A :放在/home/dmdba/dmdbms/config/dsc0_config 目录下
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/dmdbms/arch_0
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 204800 #目前归档上限为 200G,后续可更改
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH =/home/dmdba/dmdbms/arch_0_remote
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 204800 #目前归档上限为 200G,后续可更改
节点 B :放在/home/dmdba/dmdbms/config/dsc1_config 目录下
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/dmdbms/arch_1
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 204800 #目前归档上限为 200G,后续可更改
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_INCOMING_PATH =/home/dmdba/dmdbms/arch_1_remote
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 204800 #目前归档上限为 200G,后续可更改
十一、启动 DMSERVER 服务
节点 A:
./dmserver /home/dmdba/dmdbms/config/dsc0_config/dm.ini
dcr_ini=/home/dmdba/dmdbms/config/dmdcr.ini
节点 B:
./dmserver /home/dmdba/dmdbms/config/dsc1_config/dm.ini
dcr_ini=/home/dmdba/dmdbms/config/dmdcr.ini
十二、设置后台启动脚本
在正式生产环境下,要求所有的服务开机自启,需要准备以下三个后台启动脚本:DMCSS 后台服务脚本,DMASM 后台服务启动脚本,数据库实例 DMSERVER 后台启动脚本。
首先以 root 用户创建后台启动脚本:
cd /home/dmdba/dmdbms/dmdbms/script/root
十三、配置监视器
在节点 A、节点 B 的/home/dmdba/dmdbms/dmdbms/bin 目录下,配置 dmcssm.ini 文件,内容如下:
CSSM_OGUID = 45330
CSSM_CSS_IP =192.168.91.12:9341
CSSM_CSS_IP =192.168.91.15:9343
CSSM_LOG_PATH = …/log
CSSM_LOG_FILE_SIZE = 32
CSSM_LOG_SPACE_LIMIT = 0
启动监视器
./dmcssm INI_PATH=dmcssm.ini
十四、自动拉起功能
需要 CSS 将 ASM 和 dmserver 自动拉起,所以将 dmdcr.ini 下注释的行取消注释。