注意:在单机服务器上模拟dsc集群,注意端口的规划,每个端口都是独一无二,独一无二,独一无二(重要的事情说三遍)。

一、系统环境

1.硬件环境

ip地址

主机名

cpu

内存

硬盘

网卡

192.168.6.193

yzjdmdsc03

2C

2G

50G,系统盘

独立虚拟网卡四块,两块nat模式,两块仅主机模式

172.16.6.193

192.168.6.194

20G,存储盘,已分区

172.16.6.194

2.软件环境

操作系统

数据库

centos6.10(所有参数已配置)

dm8.1(已安装)

3.网络规划

达梦数据库适配MySQL语句 达梦数据库uuid_vim

4.目录规划(文中涉及到的目录,都需要提前使用dmdba用户创建)

名称

存放说明

说明

安装路径

/opt/dmdbms

安装目录和数据目录分别在不同目录上,安装目录在操作系统本地,数据库在存储上

本地数据文件路径

/dmdata

归档路径

/dmbak/arch

归档日志和备份放在一块,挂载不同的磁盘,根据实际生产环境进行修改

备份文件路径

/dmbak

二、创建共享磁盘,

1.编辑虚拟机centos6-dmdsc03.vmx选中虚拟机右键,打开虚拟机目录,即可看到该文件),新增如下数据:

disk.enableUUID = "TRUE"
disk.locking = "false"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.dataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"

2.绑定asm磁盘

        对于操作系统来说,绑asm磁盘,其实都是绑裸盘,而绑asm磁盘的说法只是针对数据库来说的,不管是dm,oracle,
其实原理都是一样,模拟环境是centos6,操作系统因为重启,盘符会发生改变,笔者决定使用uuid来绑磁盘,加强裸盘
稳定性。

2.1.查询uuid

[root@yzjdmdsc03 ~]# lsblk -l
NAME                          MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sr0                            11:0    1   3.7G  0 rom  
sdb                             8:16   0    20G  0 disk 
sdb1                            8:17   0 509.9M  0 part 
sdb2                            8:18   0 509.9M  0 part 
sdb3                            8:19   0     5G  0 part 
sdb4                            8:20   0     1K  0 part 
sdb5                            8:21   0    14G  0 part 
sda                             8:0    0    50G  0 disk 
sda1                            8:1    0   200M  0 part /boot
sda2                            8:2    0  49.8G  0 part 
vg_yzjdmdsc03-LogVol01 (dm-0) 253:0    0  45.8G  0 lvm  /
vg_yzjdmdsc03-LogVol00 (dm-1) 253:1    0     4G  0 lvm  [SWAP]

[dmdba@yzjdmdsc03 ~]$ udevadm info --query=all --name=sdb
P: /devices/pci0000:00/0000:00:10.0/host2/target2:0:1/2:0:1:0/block/sdb
N: sdb
W: 40
S: block/8:16
S: disk/by-id/scsi-36000c29af96e351a8d027843d786b25e
S: disk/by-path/pci-0000:00:10.0-scsi-0:0:1:0
S: disk/by-id/wwn-0x6000c29af96e351a8d027843d786b25e
E: UDEV_LOG=3
E: DEVPATH=/devices/pci0000:00/0000:00:10.0/host2/target2:0:1/2:0:1:0/block/sdb
E: MAJOR=8
E: MINOR=16
E: DEVNAME=/dev/sdb
E: DEVTYPE=disk
E: SUBSYSTEM=block
E: ID_SCSI=1
E: ID_VENDOR=VMware_
E: ID_VENDOR_ENC=VMware\x2c\x20
E: ID_MODEL=VMware_Virtual_S
E: ID_MODEL_ENC=VMware\x20Virtual\x20S
E: ID_REVISION=1.0
E: ID_TYPE=disk
E: ID_SERIAL_RAW=36000c29af96e351a8d027843d786b25e
E: ID_SERIAL=36000c29af96e351a8d027843d786b25e
E: ID_SERIAL_SHORT=6000c29af96e351a8d027843d786b25e
E: ID_WWN=0x6000c29af96e351a
E: ID_WWN_VENDOR_EXTENSION=0x8d027843d786b25e
E: ID_WWN_WITH_EXTENSION=0x6000c29af96e351a8d027843d786b25e
E: ID_SCSI_SERIAL=6000c29af96e351a8d027843d786b25e
E: ID_BUS=scsi
E: ID_PATH=pci-0000:00:10.0-scsi-0:0:1:0
E: ID_PART_TABLE_TYPE=dos
E: LVM_SBIN_PATH=/sbin
E: DEVLINKS=/dev/block/8:16 /dev/disk/by-id/scsi-36000c29af96e351a8d027843d786b25e /dev/disk/by-path/pci-0000:00:10.0-scsi-0:0:1:0 /dev/disk/by-id/wwn-0x6000c29af96e351a8d027843d786b25e
E: UDISKS_PRESENTATION_NOPOLICY=0
E: UDISKS_PARTITION_TABLE=1
E: UDISKS_PARTITION_TABLE_SCHEME=mbr
E: UDISKS_PARTITION_TABLE_COUNT=5

2.2.新建规则文件

[dmdba@yzjdmdsc03 ~]# vim /etc/udev/rules.d/99-oracle-asmdevices.rules

ACTION=="add|change", KERNEL=="sdb[1-9]",ENV{MAJOR}=="8", ENV{MINOR}=="17",ENV{ID_SERIAL}=="36000c29af96e351a8d027843d786b25e",SYMLINK+="asmdisk/asmdisk1", OWNER="dmdba", GROUP="dinstall", MODE="0660"
ACTION=="add|change", KERNEL=="sdb[1-9]",ENV{MAJOR}=="8", ENV{MINOR}=="18",ENV{ID_SERIAL}=="36000c29af96e351a8d027843d786b25e",SYMLINK+="asmdisk/asmdisk2", OWNER="dmdba", GROUP="dinstall", MODE="0660"
ACTION=="add|change", KERNEL=="sdb[1-9]",ENV{MAJOR}=="8", ENV{MINOR}=="19",ENV{ID_SERIAL}=="36000c29af96e351a8d027843d786b25e",SYMLINK+="asmdisk/asmdisk3", OWNER="dmdba", GROUP="dinstall", MODE="0660"
ACTION=="add|change", KERNEL=="sdb[1-9]",ENV{MAJOR}=="8", ENV{MINOR}=="21",ENV{ID_SERIAL}=="36000c29af96e351a8d027843d786b25e",SYMLINK+="asmdisk/asmdisk5", OWNER="dmdba", GROUP="dinstall", MODE="0660"

2.3.udev生效

[root@yzjdmdsc03 rules.d]# start_udev
正在启动 udev:                                            [确定]

2.4.检查结果

[root@yzjdmdsc03 dev]# ls -lh asmdisk/*
lrwxrwxrwx. 1 root root 7 11月 10 21:49 asmdisk1 -> ../sdb1
lrwxrwxrwx. 1 root root 7 11月 10 21:49 asmdisk2 -> ../sdb2
lrwxrwxrwx. 1 root root 7 11月 10 21:49 asmdisk3 -> ../sdb3
lrwxrwxrwx. 1 root root 7 11月 10 21:49 asmdisk5 -> ../sdb5
[root@yzjdmdsc03 dev]# ls -lh sd*
brw-rw----. 1 root  disk     8,  0 11月 10 21:47 sda
brw-rw----. 1 root  disk     8,  1 11月 10 21:47 sda1
brw-rw----. 1 root  disk     8,  2 11月 10 21:47 sda2
brw-rw----. 1 root  disk     8, 16 11月 10 21:47 sdb
brw-rw----. 1 dmdba dinstall 8, 17 11月 10 21:49 sdb1
brw-rw----. 1 dmdba dinstall 8, 18 11月 10 22:01 sdb2
brw-rw----. 1 dmdba dinstall 8, 19 11月 10 22:00 sdb3
brw-rw----. 1 root  disk     8, 20 11月 10 21:47 sdb4
brw-rw----. 1 dmdba dinstall 8, 21 11月 10 21:54 sdb5

三、.配置DMASM实例

1.配置DMASM参数文件

1.1.编写 dmdcr_cfg.ini 配置文件,保存到/dmdata/目录下面

[dmdba@yzjdmdsc03 dmdata]$ vim dmdcr_cfg.ini
DCR_N_GRP = 3
DCR_VTD_PATH = /dev/asmdisk/asmdisk2
DCR_OGUID = 63635

[GRP]                                               #[GRP]表示新建一个 Group
DCR_GRP_TYPE = CSS                              
DCR_GRP_NAME = GRP_CSS                              
DCR_GRP_N_EP = 2                                
DCR_GRP_DSKCHK_CNT = 60                         
[GRP_CSS]                                           #[]里的是组名,与 DCR_GRP_NAME 对应
DCR_EP_NAME = CSS0                              
DCR_EP_HOST = 172.16.6.193                      
DCR_EP_PORT = 9341                              
[GRP_CSS]                                           #[]里的是组名,与 DCR_GRP_NAME 对应
DCR_EP_NAME = CSS1                              
DCR_EP_HOST = 172.16.6.194                      
DCR_EP_PORT = 9343                              

[GRP]                                               #[GRP]表示新建一个 Group
DCR_GRP_TYPE = ASM                              
DCR_GRP_NAME = GRP_ASM                              
DCR_GRP_N_EP = 2                                
DCR_GRP_DSKCHK_CNT = 60                         
[GRP_ASM]                                           #[]里的是组名,与 DCR_GRP_NAME 对应
DCR_EP_NAME = ASM0
DCR_EP_SHM_KEY = 93360
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 192.168.6.193
DCR_EP_PORT = 9349
DCR_EP_ASM_LOAD_PATH = /dev/asmdisk
[GRP_ASM]                                           #[]里的是组名,与 DCR_GRP_NAME 对应
DCR_EP_NAME = ASM1
DCR_EP_SHM_KEY = 93361
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 192.168.6.194
DCR_EP_PORT = 9351
DCR_EP_ASM_LOAD_PATH = /dev/asmdisk

[GRP]                                               #[GRP]表示新建一个 Group
DCR_GRP_TYPE = DB
DCR_GRP_NAME = GRP_DSC
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[GRP_DSC]                                           #[]里的是组名,与 DCR_GRP_NAME 对应
DCR_EP_NAME = GRP_DSC01
DCR_EP_SEQNO  = 0
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 9741
[GRP_DSC]                                           #[]里的是组名,与 DCR_GRP_NAME 对应
DCR_EP_NAME = GRP_DSC02
DCR_EP_SEQNO  = 1
DCR_EP_PORT = 5237
DCR_CHECK_PORT = 9742

1.2.使用 DMASMCMD 工具初始化磁盘(在任意一台服务器上执行即可):

a.编写asmcmd.txt,内容如下

[dmdba@yzjdmdsc03 ~]$ vim asmcmd.txt
#asm script file
create dcrdisk '/dev/asmdisk/asmdisk1' 'dcr'
create votedisk '/dev/asmdisk/asmdisk2' 'vote'
create asmdisk '/dev/asmdisk/asmdisk3' 'LOG0'
create asmdisk '/dev/asmdisk/asmdisk5' 'DATA0'
init dcrdisk '/dev/asmdisk/asmdisk1' from '/dmdata/dmdcr_cfg.ini' identified by 'SYSDBA123'
init votedisk '/dev/asmdisk/asmdisk2' from '/dmdata/dmdcr_cfg.ini'

b.执行脚本

[dmdba@yzjdmdsc03 ~]$ dmasmcmd script_file=asmcmd.txt
DMASMCMD V8
ASM>create dcrdisk '/dev/asmdisk/asmdisk1' 'dcr'

[Trace]The ASM initialize dcrdisk /dev/asmdisk/asmdisk1 to name DMASMdcr
Used time: 13.417(ms).

ASM>create votedisk '/dev/asmdisk/asmdisk2' 'vote'

[Trace]The ASM initialize votedisk /dev/asmdisk/asmdisk2 to name DMASMvote
Used time: 5.216(ms).

ASM>create asmdisk '/dev/asmdisk/asmdisk3 'LOG0'

[Trace]The ASM initialize asmdisk /dev/asmdisk/asmdisk3 to name DMASMLOG0
Used time: 5.875(ms).

ASM>create asmdisk '/dev/asmdisk/asmdisk5' 'DATA0'

[Trace]The ASM initialize asmdisk /dev/asmdisk/asmdisk5 to name DMASMDATA0
Used time: 9.740(ms).

ASM>init dcrdisk '/dev/asmdisk/asmdisk1' from '/dmdata/dmdcr_cfg.ini' identified by 'SYSDBA123'

[Trace]DG 126 allocate 4 extents for file 0xfe000002.
Used time: 27.761(ms).

ASM>init votedisk '/dev/asmdisk/asmdisk2' from '/dmdata/dmdcr_cfg.ini'

[Trace]DG 125 allocate 4 extents for file 0xfd000002.
Used time: 35.854(ms).

1.3.配置dmasvrmal.ini文件,保存到/dmdata/目录下面

[dmdba@yzjdmdsc03 dmdata]$ vim dmasvrmal.ini
[MAL_INST1]
MAL_INST_NAME = ASM0
MAL_HOST = 172.16.6.193
MAL_PORT = 7236
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 172.16.6.194
MAL_PORT = 7237

1.4.配置dmdcr.ini文件(分别保存到/dmdata/dsc01和/dmdata/dsc02目录下面其中一二节点的DMDCR_SEQNO值依次增加)

ASM实例一节点
[dmdba@yzjdmdsc03 ~]# vim /dmdata/dsc01/dmdcr.ini
DMDCR_PATH = /dev/asmdisk/asmdisk1
DMDCR_MAL_PATH = /dmdata/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 0

#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 30
DMDCR_ASM_STARTUP_CMD = /opt/dmdbms/bin/dmasmsvr dcr_ini = /dmdata/dsc01/dmdcr.ini

#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 60
DMDCR_DB_STARTUP_CMD = /opt/dmdbms/bin/dmserver path = /dmdata/dsc01_config/dm.ini dcr_ini=/dmdata/dsc01/dmdcr.ini

ASM实例二节点
[dmdba@yzjdmdsc03 ~]# vim /dmdata/dsc02/dmdcr.ini 
DMDCR_PATH = /dev/asmdisk/asmdisk1
DMDCR_MAL_PATH = /dmdata/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 1

#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 30
DMDCR_ASM_STARTUP_CMD = /opt/dmdbms/bin/dmasmsvr dcr_ini = /dmdata/dsc02/dmdcr.ini

#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 60
DMDCR_DB_STARTUP_CMD = /opt/dmdbms/bin/dmserver path = /dmdata/dsc02_config/dm.ini dcr_ini=/dmdata/dsc02/dmdcr.ini

2.启动DMASM实例(打开四个终端窗口,用dmdba用户连接,依次执行相关脚本)

[dmdba@yzjdmdsc03 ~]# dmcss DCR_INI=/dmdata/dsc01/dmdcr.ini
[dmdba@yzjdmdsc03 ~]# dmasmsvr DCR_INI=/dmdata/dsc01/dmdcr.ini
和
[dmdba@yzjdmdsc03 ~]# dmcss DCR_INI=/dmdata/dsc02/dmdcr.ini
[dmdba@yzjdmdsc03 ~]# dmasmsvr DCR_INI=/dmdata/dsc02/dmdcr.ini

注意;
其中在运行dmcss DCR_INI=/dmdata/dmdcr.ini命令时,会报如下错误

dmcss: error while loading shared libraries: libdmcalc.so: cannot open shared object file: No such file or directory

解决方法如下,执行此命令:

[root@yzjdmdsc03 ~]# ln -s /opt/dmdbms/bin/*.so  /lib64

启动结果如下,只在控制节点显示:

DMCSS V8
DMCSS IS READY
[CSS]: 设置EP CSS0[0]为控制节点

[ASM]: 设置EP ASM0[0]为控制节点

[ASM]: 设置命令[START NOTIFY], 目标站点 ASM0[0], 命令序号[2]

[ASM]: 设置命令[EP START], 目标站点 ASM0[0], 命令序号[3]

[ASM]: 设置命令[NONE], 目标站点 ASM0[0], 命令序号[0]

[ASM]: 设置命令[EP START], 目标站点 ASM1[1], 命令序号[5]

[ASM]: 设置命令[NONE], 目标站点 ASM1[1], 命令序号[0]

[ASM]: 设置命令[EP OPEN], 目标站点 ASM0[0], 命令序号[8]

[ASM]: 设置命令[EP OPEN], 目标站点 ASM1[1], 命令序号[9]

[ASM]: 设置命令[NONE], 目标站点 ASM0[0], 命令序号[0]

[ASM]: 设置命令[NONE], 目标站点 ASM1[1], 命令序号[0]

3创建DMASM磁盘组

[dmdba@yzjdmdsc03 ~]# dmasmtool DCR_INI=/dmdata/dmdcr.ini

ASM>create diskgroup 'DMLOG' asmdisk '/dev/asmdisk/asmdisk3'
ASM>create diskgroup 'DMDATA' asmdisk '/dev/asmdisk/asmdisk5'

四、配置数据库

1.编写dminit.ini文件,保存到/dmdata目录

[dmdba@yzjdmdsc03 dmdata]$ vim 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/asmdisk/dcrdisk01 #dcr 磁盘路径,目前不支持 asm,只能是裸设备
dcr_seqno = 0
auto_overwrite = 1
[GRP_DSC01] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
config_path = /dmdata/dsc01_config
port_num = 5236
mal_host = 172.16.6.193
mal_port = 9342
log_path = +DMLOG/log/dsc01_log01.log
log_path = +DMLOG/log/dsc01_log02.log
[GRP_DSC02] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
config_path = /dmdata/dsc02_config
port_num = 5237
mal_host = 172.16.6.194
mal_port = 9344
log_path = +DMLOG/log/dsc02_log01.log
log_path = +DMLOG/log/dsc02_log02.log

2.初始化数据库,生成dsc01_config和dsc02_config两个目录

[dmdba@yzjdmdsc03 ~]# dminit control=/dmdata/dminit.ini

3.手工启动数据库

[dmdba@yzjdmdsc03 ~]#  dmserver /dmdata/dsc01_config/dm.ini dcr_ini=/dmdata/dsc01/dmdcr.ini
[dmdba@yzjdmdsc03 ~]#  dmserver /dmdata/dsc02_config/dm.ini dcr_ini=/dmdata/dsc02/dmdcr.ini

4.配置服务名配置dm_svc.conf服务名文件

[root@yzjdmdsc03 ~]# vim /etc/dm_svc.conf
dsc=(192.168.6.193:5236,192.168.6.194:5237)
SWITCH_TIME=(10000)
SWITCH_INTERVAL=(100)
TIME_ZONE=(480)
LANGUAGE=(cn)

五、注册服务

1.注册DMCSS服务
[root@yzjdmdsc03 ~]# /opt/dmdbms/script/root/dm_service_installer.sh -t dmcss -dcr_ini /dmdata/dmdcr.ini -p DmCss1
[root@yzjdmdsc03 ~]# /opt/dmdbms/script/root/dm_service_installer.sh -t dmcss -dcr_ini /dmdata/dmdcr.ini -p DmCss2

2.注册DMASM服务
[root@yzjdmdsc03 ~]# /opt/dmdbms/script/root/dm_service_installer.sh -t dmasmsvr -dcr_ini /dmdata/dmdcr.ini -p DmAsmsvr1 -y DmCSSServiceDmCss1
[root@yzjdmdsc03 ~]# /opt/dmdbms/script/root/dm_service_installer.sh -t dmasmsvr -dcr_ini /dmdata/dmdcr.ini -p DmAsmsvr2 -y DmCSSServiceDmCss2

3.注册数据库启动服务
[root@yzjdmdsc03 ~]#  /opt/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /dmdata/dsc01_config/dm.ini -dcr_ini /dmdata/dmdcr.ini -p GRP_DSC01 -y DmASMSvrServiceDmAsmsvr1
[root@yzjdmdsc03 ~]#  /opt/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /dmdata/dsc02_config/dm.ini -dcr_ini /dmdata/dmdcr.ini -p GRP_DSC02 -y DmASMSvrServiceDmAsmsvr2

六、启停数据库

启动DMCSS和DMASM 服务
注册服务之后,当操作系统重启时,数据DMCSS和DMASM服务会随着操作系统的启动而启动,数据库此时,也会被拉起来。
在停止数据库时,建议手动停止。按依赖顺序,先停数据库服务,然后再停DMASM服务,最后停DMCSS服务

一节点启动
[root@yzjdmdsc03 ~]# service  DmCSSServiceDmCss1 start
[root@yzjdmdsc03 ~]# service  DmASMSvrServiceDmAsmsvr1 start
二节点启动          
[root@yzjdmdsc03 ~]# service  DmCSSServiceDmCss2 start
[root@yzjdmdsc03 ~]# service  DmASMSvrServiceDmAsmsvr2 start
 
启动DMDB服务,分别在两个节点启动
[root@yzjdmdsc03 ~]# service  DmServiceGRP_DSC01 start 
[root@yzjdmdsc02 ~]# service  DmServiceGRP_DSC02 start
 
 
停止DMDB服务,分别在两个节点启动
[root@yzjdmdsc03 ~]# service  DmCSSServiceDmCss1 stop
[root@yzjdmdsc03 ~]# service  DmASMSvrServiceDmAsmsvr1 stop
 
一节点停止
[root@yzjdmdsc03 ~]# service  DmASMSvrServiceDmAsmsvr1 stop
[root@yzjdmdsc03 ~]# service  DmCSSServiceDmCss1 stop
二节点停止           
[root@yzjdmdsc03 ~]# service  DmASMSvrServiceDmAsmsvr2 stop
[root@yzjdmdsc03 ~]# service  DmCSSServiceDmCss2 stop