DM8搭建DSC集群
DM共享存储数据库集群,允许多个数据库实例同时访问、操作同一数据库,具有高可用、高性能、负载均衡等特性。DMDSC支持故障自动切换和故障自动重加入,某一个数据库实例故障后,不会导致数据库服务无法提供。
DMDSC的主要特点包括:
◼ 高可用性
只要集群中有一个活动节点,就能正常提供数据库服务。
◼ 高吞吐量
多个节点同时提供数据库服务,有效提升集群的整体事务处理能力。
◼ 负载均衡
用户的连接请求被平均分配到集群中的各个节点,确保各个节点的负载大致平衡。
DM8中,新增加了监视器的功能,使用起来非常方便,功能也很人性化。但是需要注意的是,DSC中的监视器与DM实时主备或读写分离集群中的监视器不同,没有确认监视器与非确认监视器的说法,同一个DMDSC集群中,允许最多同时启动10个监视器,建议监视器放在独立的第三方机器上,避免由于节点间网络不稳定等原因导致监视器误判节点故障。
一、创建共享磁盘
测试操作系统为Red Hat Enterprise Linux Server release 6.4 (Santiago)
两台机器IP分别为192.168.56.128(主节点dsc1),192.168.56.129 dsc2
此次搭建DSC是测试环境,在虚拟机上需要新建共享磁盘。生产环境中可忽略
在两台虚拟机都关机的情况下设置
打开dsc1 设置
点击存储,右下角添加存储附件
添加虚拟硬盘,创建新的虚拟盘
分配20G
创建虚拟硬盘
在管理中选择虚拟机介质管理,在改盘下选择可共享
添加成功后,在dsc2节点选择设置,添加虚拟硬盘,选择现有的硬盘
至此已添加完成共享存储,启动两台虚拟机
使用命令 fdisk -l 可以查看共享磁盘信息,其中 /dev/sdb 没有使用,大小为21.5G
共享磁盘添加成功。
二、部署DSC集群
两台机器需关闭防火墙(永久关闭chkconfig iptables off)
2.1在共享磁盘上划分裸设备
使用fdisk /dev/sdb 命令进行分区操作
在dsc1节点划分
输入n出现以下界面
输入p进行添加主分区,然后选择1,其中First cylinder (1-2610, default 1): 代表起始柱面,缺省值从1开始,这里直接回车
然后输入 +100M ,回车,出现下图,这个分区就划分完成了
然后重复进行以上分区动作
注意在3分区时要+2048M
主分区只能分4个,所以最后一个不用输入4,直接回车进行默认的划分即可
最后输入w保存退出即可
在两台机器分别输入fdisk -l查看分区情况,两边同步
2.2绑定裸设备
编辑 /etc/udev/rules.d/60-raw.rules 文件,将以下内容添加至文件,两台节点均需操作
# vi /etc/udev/rules.d/60-raw.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="root", GROUP="root", MODE="660"
保存,退出
dsc1:
# partprobe /dev/sdb
#start_udev
dsc2:
# partprobe /dev/sdb
#start_udev
完成裸设备绑定后,进行检查两边是否同步,输出内容一致
raw -qa
blockdev --getsize64 /dev/raw/raw1、2、3、4
依次检查
2.3创建组/用户/配置文件目录/安装目录
以下操作两节点均需操作
dsc1:
groupadd dinstall
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
passwd dmdba
cd /home/
mkdir data
chown -R dmdba:dinstall data/
ll
cd /opt/
mkdir dmdbms
chown -R dmdba:dinstall dmdbms/
ll
2.4安装DM8
两节点均需安装数据库软件,但不进行实例初始化操作
步骤略
2.5配置文件dmdcr_cfg.ini
使用 dmdba用户,进行编辑配置文件
准备配置文件dmdcr_cfg.ini,保存在 /home/data/ 下,只需要在dsc1 主节点上配置,后续DMASMCMD工具执行 init 语句会使用到。
配置文件内容如下
需要根据实际环境修改IP配置为rac节点的IP,其他内容可以保持不变,参见红色部分说明。
注:不同节点服务器间对应的DCR_EP_PORT端口可以相同,但是两个服务器配的ASM的DCR_EP_SHM_KEY不能相同。
[root@gh1 bin]# su - dmdba
[dmdba@gh1 ~]$ cd /home/data
[dmdba@gh1 data]$ ll
total 0
[dmdba@gh1 data]$ ls
[dmdba@gh1 data]$ vi dmdcr_cfg.ini
DCR_N_GRP = 3
DCR_VTD_PATH = /dev/raw/raw2
DCR_OGUID = 63635
[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.189.94
DCR_EP_PORT = 9341
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 192.168.189.95
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_N_GRP = 3
DCR_VTD_PATH = /dev/raw/raw2
DCR_OGUID = 63635
[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.56.128
DCR_EP_PORT = 9341
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 192.168.56.129
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.56.128
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.56.129
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
2.6使用DMASMCMD工具进行初始化
注:只在一台机器上执行即可,此处dmdcr_cfg.ini配置文件在主节点dsc1上,所以执行初始化,也在主节点完成即可。
2.6.1为裸设备路径、裸设备映射路径进行授权
进行初始化之前对dmdba用户进行授权,不进行授权,执行初始化操作只能用 root用户进行,此操作后,使用dmdba用户进行初始化即可。
授权需要登录root用户
dsc1:
ll /dev/raw
ll /dev/sdb1
ll /dev/sdb2
ll /dev/sdb3
ll /dev/sdb4
可以看到现在所属用户与组均为 root
然后修改所属用户和组
chown -R dmdba:dinstall /dev/raw
chown -R dmdba:dinstall /dev/sdb1
chown -R dmdba:dinstall /dev/sdb2
chown -R dmdba:dinstall /dev/sdb3
chown -R dmdba:dinstall /dev/sdb4
ll /dev/raw
ll /dev/sdb1
ll /dev/sdb2
ll /dev/sdb3
ll /dev/sdb4
2.6.2执行初始化
这里只在dsc1节点上执行,使用dmdba用户
cd /opt/dmdbms/bin
./dmasmcmd
注:进入dmasmcmd工具后,将以下语句,一条一条执行,在不进行上一步授权操作,使用dmdba用户初始化会报错,权限不足,也可以使用root用户,后续将权限授给 dmdba用户dinstall组。
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/data/dmdcr_cfg.ini'identified by 'abcd'
init votedisk '/dev/raw/raw2' from '/home/data/dmdcr_cfg.ini'
2.7配置dmasvrmal.ini文件
使用dmdba用户 。注:所有节点dmasvrmal.ini配置必须文件保持一致
cd /home/data/
vi dmasvrmal.ini
注:将以下内容添加至文件,保存退出。
[MAL_INST1]
MAL_INST_NAME = ASM0
MAL_HOST = 192.168.56.128
MAL_PORT = 7236
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 192.168.56.129
MAL_PORT = 7236
使用scp命令,将dmasvrmal.ini传至 rac1 节点
[dmdba@gh1 data]$ scp dmasvrmal.ini dmdba@192.168.56.129:/home/data
2.8配置dmdcr.ini文件
2.8.1主节点dsc1的dmdcr.ini
使用dmdba用户
cd /home/data/
vi dmdcr.ini
注:将以下内容添加至 dmdcr.ini文件中,标红部分是需要注意的地方或者与rac1节点不同配置之处,此处配置为不会自动拉起,需要手动执行启动asm与server操作,方便在控制台查看节点信息,部署成功后可配置为自动拉起,注册服务。
[dmdba@gh1 data]$ cd /home/data
[dmdba@gh1 data]$ vi dmdcr.ini
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH = /home/data/dmasvrmal.ini
DMDCR_SEQNO = 0 # dsc1 节点为1
DMDCR_ASM_RESTART_INTERVAL = 0 #
注:如果配置为 0,则不会执行自动拉起操作,默认
为 60s。
DMDCR_ASM_STARTUP_CMD = /opt/dmdbms/bin/dmasmsvr dcr_ini=/home/data/dmdcr.ini
DMDCR_DB_RESTART_INTERVAL = 0
#注:如果配置为 0,则不会执行自动拉起操作,默认>为 60s。
DMDCR_DB_STARTUP_CMD = /opt/dmdbms/bin/dmserver path=/home/data/dsc0_config/dm.ini
dcr_ini=/home/data/dmdcr.ini # dsc1 节点为1
2.8.2主节点dsc2的dmdcr.ini
使用dmdba用户
cd /home/data/
vi dmdcr.ini
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH = /home/data/dmasvrmal.ini
DMDCR_SEQNO = 1
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /opt/dmdbms/bin/dmasmsvr dcr_ini=/home/data/dmdcr.ini
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /opt/dmdbms/bin/dmserver path=/home/data/dsc1_config/dm.ini dcr_ini=/home/data/dmdcr.ini
2.9启动DMCSS和DMASM服务
2.9.1启动dsc1主节点
以下操作均在 dmdba用户下执行
手动启动css命令:
cd /opt/dmdbms/bin
./dmcss DCR_INI=/home/data/dmdcr.ini
CSS启动后新开窗口开启前台的ASM服务
手动启动asm命令:
./dmasmsvr DCR_INI=/home/data/dmdcr.ini
注:如果配置自动拉起功能,css在判定asm故障并超过配置时间后会执行拉起服务操作,所以配置自动拉起功能,则不必执行手动启动命令,可以在配置集群结束后,配置自动拉起功能。
2.9.2启动dsc2节点
以下操作均在 dmdba用户下执行
手动启动css命令:
cd /opt/dmdbms/bin
./dmcss DCR_INI=/home/data/dmdcr.ini
手动启动asm命令:
./dmasmsvr DCR_INI=/home/data/dmdcr.ini
控制台打印如下信息:
该节点启动后,主节点自动监控到
2.10使用dmasmtool工具创建DMASM磁盘组
使用 dmdba用户进行操作
***************上一步的四个服务的窗口不要关闭!!!!!!!!!!!!!
开启新窗口操作,选择一个节点进行创建ASM磁盘组,此处在dsc1主节点上进行创建磁盘组。
su – dmdba
cd /opt/dmdbms/bin
./dmasmtool DCR_INI=/home/data/dmdcr.ini
注:进入工具后,分步执行如下语句:
create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'
注:创建日志磁盘组
create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'
注:创建数据磁盘组
创建成功后可以在之前的两台主机ASM服务窗口中查看到信息
2.11配置dminit.ini文件
注:使用dmdba用户,只需要在一个节点上创建,此处选择在dsc1主节点中创建
cd /home/data/
vi 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 = 256
dcr_path = /dev/raw/raw1
dcr_seqno = 0
auto_overwrite = 1
[DSC0]
config_path = /home/data/dsc0_config
port_num = 5236
mal_host = 192.168.56.128
mal_port = 9340
log_path = +DMLOG/dsc0_log01.log
log_path = +DMLOG/dsc0_log02.log
[DSC1]
config_path = /home/data/dsc1_config
port_num = 5237
mal_host = 192.168.56.129
mal_port = 9341
log_path = +DMLOG/dsc1_log01.log
log_path = +DMLOG/dsc1_log02.log
2.12dminit初始化数据库
注:需要使用dmdba用户,在一个节点上初始化数据库就可以,因为dminit.ini配置文件在dsc1主节点上,所以初始化数据库操作在此节点执行即可。
cd /opt/dmdbms/bin
./dminit control=/home/data/dminit.ini
可以看到创建数据库成功,进入 /home/data/ 目录后可以看到生成两个文件夹。
因为一直在主节点上进行初始化操作,dsc1_config文件夹是rac1节点需要使用的配置文件,所以需要将dsc1_confid文件夹传输至 rac1 节点的 /home/data/ 目录下。
[dmdba@gh1 data]$ scp -r dsc1_config/ dmdba@192.168.56.129:/home/data/
查看dsc2节点
su – dmdba
cd /home/data/
Ll
可以看到dsc1_config 文件已经上传至 dsc2 节点 /home/data/ 目录下,并且所属用户组、权限没有问题。
2.13启动实例
均使用dmdba用户进行操作:
dsc1:
./dmserver /home/data/dsc0_config/dm.ini dcr_ini=/home/data/dmdcr.ini
dsc2:
./dmserver /home/data/dsc1_config/dm.ini dcr_ini=/home/data/dmdcr.ini
若虚拟机配置不够高可能需多等待一会儿
查看信息
查看两节点的CSS和ASM服务窗口信息
至此,DMDSC集群部署完毕,可以使用dmdba用户启动disql查看 v
d
s
c
e
p
i
n
f
o
查
看
集
群
信
息
,
也
可
以
使
用
w
i
n
d
o
w
s
端
D
M
m
a
n
a
g
e
r
工
具
登
录
两
节
点
都
可
以
查
看
V
dsc_ep_info 查看集群信息,也可以使用windows端DMmanager工具登录 两节点都可以查看 V
dscepinfo查看集群信息,也可以使用windows端DMmanager工具登录两节点都可以查看VDSC_EP_INFO,查看DSC集群信息。
两节点均可以执行:
cd /opt/dmdbms/bin
./disql
执行下面sql,查看集群信息
select * from v$dsc_ep_info;
使用manager工具
节点2
两节点信息均一致,搭建成功
2.14注册服务,配置自动拉起服务
注册服务需要使用root用户
dsc1:
./dm_service_installer.sh -t dmserver -p DMSERVER0 -dm_ini /home/data/dsc0_config/dm.ini -dcr_ini /home/data/dmdcr.ini
./dm_service_installer.sh -t dmasmsvr -p DMASM0 -dcr_ini /home/data/dmdcr.ini
./dm_service_installer.sh -t dmcss -p DMCSS0 -dcr_ini /home/data/dmdcr.ini
dsc2:
./dm_service_installer.sh -t dmserver -p DMSERVER1 -dm_ini /home/data/dsc1_config/dm.ini -dcr_ini /home/data/dmdcr.ini
./dm_service_installer.sh -t dmasmsvr -p DMASM1 -dcr_ini /home/data/dmdcr.ini
./dm_service_installer.sh -t dmcss -p DMCSS1 -dcr_ini /home/data/dmdcr.ini
注:搭建成功后修改两节点配置文件dmdcr.ini,将 DMDCR_ASM_RESTART_INTERVAL 与 DMDCR_DB_RESTART_INTERVAL值修改为 不等于0 即可,css即可自动拉起asm与server服务,此处改为10,为超过设置的时间后,如果 DMASM 节点与DMDSC节点的 active 标记仍然为 FALSE,则 DMCSS 会执行自动拉起。
两节点都修改为10
cd /home/data/
vi dmdcr.ini
cat dmdcr.ini
注:启停顺序等
service DmserviceDM start
注册数据库服务方示例,具体根据实际情况而定:
注册CSS服务:./dm_service_installer.sh –t dmcss –p DSC0 –i /home/data/dmdcr.ini
注册ASM服务:./dm_service_installer.sh –t dmasmsvr –p DSC0 –dsc_ini /home/data/dmdcr.ini –y css服务名
注册dmserver服务:./dm_service_installer.sh –t dmserver –p DSC0 –dm_ini /home/data/dsc0_config/dm.ini –dcs_ini /home/data/dmdcr.ini –y asm服务名
(服务名分别为DmServiceDMSERVER0、DmASMSvrServiceDMASM0、DmCSSServiceDMCSS0。2节点均为1)
DMDSC启动、关闭流程
启动顺序:DMCSS—>DMASMSVR—>DMSERVICE
关闭顺序:DMSERVICE—>DMASMSVR—>DMCSS。
启动:
DMDSC是基于共享存储的数据库集群系统,包含多个数据库实例,因此,与单节点的达梦数据库不同,DMDSC集群需要在节点间进行同步、协调,才能正常地启动、关闭。启动DMDSC集群之前,必须先启动集群同步服务DMCSS,如果使用了DMASM文件系统,则DMASMSVR服务也必须先启动。
启动流程简单总结一下就是先启动DMCSS,然后启动DMASMSVR(如果有的话),最后启动DMSERVER
如果DMCSS配置了DMASMSVR/dmserver自动拉起命令,此时可以先仅启动DMCSS,然后启动监视器DMCSSM,在DMCSSM控制台执行命令"ep startup asm"启动DMASMSVR集群,执行"ep startup dsc"启动dmserver集群(其中asm/dsc为dmasmsvr/dmserver集群的组名)。
停止:
如果DMCSS配置了DMASMSVR/dmserver自动拉起命令,那么手动停止DMSERVER和DMASMSVR时会被拉起来,因此可能导致停止服务执行成功,但是集群并未停止的情况。此时就显示出监视器的好处。
此时可以在监视器中执行“ep stop 集群组名”命令的方式停止ASMSVR服务或者dmserver服务,在使用监视器停止服务时,监视器会关闭相关的自动拉起命令,因此,可以确保集群的正确停止,在停止DMASMSVR/dmserver服务后,再手动停止DMCSS服务即可。需要注意的是,如果不停止DMCSS服务,再次启动集群的话,自动拉起是不会生效的,当然,也可以通过在监视器中执行“set group_name auto restart on/off ”打开/关闭指定组的自动拉起功能,此命令只修改dmcss内存值。