一、环境准备
- 安装VM虚拟机
获取的VM虚拟机版本是12.1.0 build-3272444的,安装2台操作系统是CentOS 6.5的虚拟机。具体操作可以参考下面的文章,值得注意的是虚拟机网络连接需要配置成桥接模式,虚拟机单独设置IP,这样可以组网搭建DSC集群。如下图:
安装VM操作系统https://blog.csdn.net/qq_39038465/article/details/81478847
服务器规划:
机器名 | IP | 程序目录 | 配置文件目录 |
dm1/节点1 | 192.168.0.11 | /home/dmdba/dmdbms | /home/dmdba/data |
dm2/节点2 | 192.168.0.12 | /home/dmdba/dmdbms | /home/dmdba/data |
2. 在2台虚拟机上添加共享磁盘
可以按下面地址的方法在VM环境添加共享磁盘。
https://blog.csdn.net/suyishuai/article/details/30974917
受笔记本磁盘容量限制,这里只添加一个10G的磁盘,真实的生产环境中,建议至少配置两块共享磁盘,分别用来存放联机日志文件和数据文件。
在上述CSDN文章第四步修改虚拟机vmx文件,可能因为VM虚拟机版本不一样,这个步骤未能到达预期,参考了另外一篇CSDN文章配置VMX文件。
两台虚拟机添加的vmx文件下都添加一下信息:
disk.locking = "false"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.DataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "10240"
diskLib.maxUnsyncedWrites = "0"
scsi1:0.deviceType = "disk"
scsi1:1.deviceType = "disk"
scsi1:2.deviceType = "disk"
scsi1:3.deviceType = "disk"
scsi1.sharedBus = "VIRTUAL"
输入:fdisk -l|grep "Disk /dev/sd*",查看新添加的盘,两台服务器都可以看到。
这些都是测试环境准备工作,正常运行的共享集群一般不会在虚拟机。下面开始DSC搭建步骤。
二、搭建2节点DMDSC集群
看手册推荐的是ASM方式,所以现在搭建的基于DMASM的DSC集群。
- 在共享磁盘上裸设备划分,只在一台服务器上配置。
输入:fdisk /dev/sdb
进入命令模式后依次输入:
n,p,1,回车,+100M,回车,完成第一块磁盘划分
n,p,2,回车,+100M,回车,完成第二块磁盘划分
n,p,3,回车,+2048M,回车,完成第三块磁盘划分
n,p,回车,回车,完成第四块磁盘划分
最后w退出
(这里1-4分区其实对应是DCR、vote、日志、数据分区)
PS: 另一台虚拟机/dev目录下要看到sdb1-4几个分区需要重启虚拟机或者执行partprobe。
绑定裸设备,两台服务器上都需要进行以下操作
编辑/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="777"
这里要给777的权限,不然通过dmdba启动没有文件的权限。
修改文件后执行start_udev,完成裸设备绑定。
使用ll /dev/raw命令查看是否绑定成功,通过blockdev --getsize64 /dev/raw/raw1命令查看裸设备大小:
2. 准备dmdcr_cfg.ini配置文件,放在/home/dmdba/data下,后续DMASMCMD工具执行init语句会用到。只需在一台服务器上配置。
PS: 不同节点服务器间对应的DCR_EP_PORT端口可以相同,但是两个服务器配的ASM的DCR_EP_SHM_KEY不能相同。
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.0.11
DCR_EP_PORT = 9341
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 192.168.0.12
DCR_EP_PORT = 9341
[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.0.11
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.0.12
DCR_EP_PORT = 9349
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 = 9741
3. 使用DMASMCMD工具初始化,只需在一台机器执行
进入数据库程序bin目录,输入执行./dmasmcmd启动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/data/dmdcr_cfg.ini'identified by 'abcd'
init votedisk '/dev/raw/raw2' from '/home/dmdba/data/dmdcr_cfg.ini'
PS:也可以将命令写入 asmcmd.txt 文件,执行 dmasmcmd script_file=asmcmd.txt,只需在一台机器执行即可,但是脚本文件必须以#asm script file开头。
4. 配置DMASM的MAL配置文件,命名为dmasvrmal.ini。使用DMASM的所有节点都要配置,内容完全一样,保存到/home/dmdba/data目录下,各个节点的dmasvrmal.ini文件内容是一样的。
[MAL_INST1]
MAL_INST_NAME = ASM0
MAL_HOST = 192.168.0.11
MAL_PORT = 7236
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 192.168.0.12
MAL_PORT = 7236
5. 配置dmdcr.ini文件,保存到/home/dmdba/data目录下,DMASM 的两个节点分别都要配置dmdcr.ini。 dmdcr_seqno 分别为 0 和 1,dm.ini的path不同,已标红。
节点192.168.0.11上:
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH = /home/dmdba/data/dmasvrmal.ini
DMDCR_SEQNO = 0
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/home/dmdba/data/dmdcr.ini
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver path=/home/dmdba/data/dsc0_config/dm.ini dcr_ini=/home/dmdba/data/dmdcr.ini
如果不好查看,具体内容如下图:
节点192.168.0.12上:
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH = /home/dmdba/data/dmasvrmal.ini
DMDCR_SEQNO = 1
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/home/dmdba/data/dmdcr.ini
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver path=/home/dmdba/data/dsc1_config/dm.ini dcr_ini=/home/dmdba/data/dmdcr.ini
截图:
这里的DMDCR_ASM_RESTART_INTERVAL和DMDCR_DB_RESTART_INTERVAL配置的都是0,即:ASM和DB不会被DMCSS自动拉起。
6.启动 DMCSS、DMASM服务程序,分别在两个节点上启动
都进入数据库bin目录下
先启动192.168.0.11上的dmcss:
./dmcss DCR_INI=/home/dmdba/data/dmdcr.ini
再启动192.168.0.11上的dmasm,没有配置CSS自动拉起ASM,所以这里需要手动启动:
./dmasmsvr dcr_ini=/home/dmdba/data/dmdcr.ini
再启动192.168.0.12上的DMCSS和DMASM,同样进入/home/dmdba/dmdbms/bin
./dmcss DCR_INI=/home/dmdba/data/dmdcr.ini
./dmasmsvr dcr_ini=/home/dmdba/data/dmdcr.ini
其实首次启动的时候有个报错,节点通知失败,想到可能是节点间通信问题,就尝试关闭防火墙后,服务启动成功。防火墙需要永久关闭。chkconfig iptables off
两个都启动完成后,成功状态的主节点CSS上会打印:
7.使用dmasmtool工具创建DMASM磁盘组,只需在一个节点上执行。
进入bin目录下
./dmasmtool dcr_ini=/home/dmdba/data/dmdcr.ini
create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'
create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'
同时,192.168.0.12节点上dmasmsvr服务上也会打印添加成功的信息
8.准备dminit.ini配置文件,保存到/home/dmdba/data目录下,只需要在一个节点上配置
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/dmdba/data/dsc0_config
port_num = 5236
mal_host = 192.168.0.11
mal_port = 9340
log_path = +DMLOG/dsc0_log01.log
log_path = +DMLOG/dsc0_log02.log
[DSC1]
config_path = /home/dmdba/data/dsc1_config
port_num = 5236
mal_host = 192.168.0.12
mal_port = 9340
log_path = +DMLOG/dsc1_log01.log
log_path = +DMLOG/dsc1_log02.log
9. 使用dminit初始化DB环境,只需在一个节点执行
要给程序目录、数据目录、裸设备dmdba:dinstall用户组权限,不然这里会报错
chown -R dmdba:dinstall /home/dmdba
chown -R dmdba:dinstall /dev/raw
在192.168.0.11的bin目录下执行:
./dminit control=/home/dmdba/data/dminit.ini
执行成功会在dminit.ini中配置的config_path下生成一个dsc0_config目录和一个dsc1_config目录。将dsc1_config目录传到节点192.168.0.12的相同目录(/home/dmdba/data)下
10. 在两个机器上启动数据库服务,在192.168.0.11上执行:
./dmserver /home/dmdba/data/dsc0_config/dm.ini dcr_ini=/home/dmdba/data/dmdcr.ini
在192.168.0.12上执行:
./dmserver /home/dmdba/data/dsc1_config/dm.ini dcr_ini=/home/dmdba/data/dmdcr.ini
11. 通过上面的步骤,已经完成搭建,并且前台启动DSC集群成功。
如果需要服务启动,需要注册各种服务。也可根据模板修改:/bin/service_template/ DmDSSService文件。
通过DMCSS服务去拉起DMASM和DMSERVER,需要配置dmdcr.ini的参数DMDCR_ASM_RESTART_INTERVAL和DMDCR_DB_RESTART_INTERVAL不等于0,这里我给的5。
并且给裸设备dmdba权限。
chown -R dmdba:dinstall /dev/raw
启动的时候,先启动dmcss,再启动dmasm,最后启动dmserver
也可以通过DMCSS去拉起其他服务。
停止服务的时候,先停止dmserver,再停dmasm,最后停dmcss
12. 配置DMCSSM监视器
DMCSSM的配置文件名称为dmcssm.ini
#和dmdcr_cfg.ini 中的 DCR_OGUID 保持一致
CSSM_OGUID = 63635
#和dmdcr_cfg.ini 中 CSS 配置项的 DCR_EP_HOST 和 DCR_EP_PORT 保持一致
CSSM_CSS_IP = 192.168.0.11:9341
CSSM_CSS_IP = 192.168.0.12:9341
CSSM_LOG_PATH = /home/dmdba/data/cssmlog
CSSM_LOG_FILE_SIZE = 512
CSSM_LOG_SPACE_LIMIT = 1024
启动监视器:
./dmcssm INI_PATH=/home/dmdba/data/dmcssm.ini
Show一下看看