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/ ll2.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 = 97422.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/sdb42.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/data2.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.ini2.9启动DMCSS和DMASM服务 2.9.1启动dsc1主节点 以下操作均在 dmdba用户下执行 手动启动css命令:
cd /opt/dmdbms/bin ./dmcss DCR_INI=/home/data/dmdcr.iniCSS启动后新开窗口开启前台的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.log2.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.inidsc2:
./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.inidsc2:
./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内存值。
