目 录
一、虚拟机共享磁盘安装... 4
1.1创建虚拟机... 4
1.2虚拟DB0机添加磁盘... 4
1.3添加.vmx磁盘信息... 9
1.4虚拟DB1机添加磁盘... 10
二、前期准备工作... 13
2.1 硬件准备... 13
2.2 集群规划... 14
2.3 修改主机名... 14
2.4 关闭防火墙... 15
2.5 修改系统参数... 15
三、创建目录并安装数据库... 16
3.1 DB00机器安装数据库... 16
3.2 DB01机器安装数据库... 16
四、存储准备... 17
4.1 划分存储... 17
4.2 挂存储方法1. 17
4.3 挂存储方法2. 18
五、搭建DSC. 19
5.1 配置 dmdcr_cfg.ini. 19
5.2 初始化磁盘组... 20
5.3 配置 dmasvrmal.ini. 21
5.4 配置 dmdcr.ini. 21
5.5 启动CSS、ASM服务... 22
5.6 创建DMASM磁盘组... 23
5.7 配置 dminit.ini. 23
5.8 初始化数据库... 24
5.9 配置 dmarch.ini. 25
5.10 启动DMSERVER服务... 26
5.11 设置后台启动脚本... 26
六、配置监视器... 27
6.1 配置dmcssm.ini. 27
6.2 启动监视器... 28
七、其它配置... 28
7.1 配置 dm_svc.conf. 28
7.2 设置定时备份... 28
7.3 启停集群... 28
八、总结... 29
一、虚拟机共享磁盘安装
1.1创建虚拟机
新建两台虚拟机操作系统相同,命名被DB0/DB1;
m1.2虚拟DB0机添加磁盘
注意:所有机器最好在关机状态下!
添加一块新的硬盘
立即分配所有磁盘空间。
路径要指定目录,后续需要用;
一共添加四块磁盘;
在高级里修改虚拟设备节点;
四块磁盘分别是:
scsi1:0
scsi1:1
scsi2:0
scsi2:1
1.3添加.vmx磁盘信息
分别在两台虚拟机的.vmx文件添加内容如下:
disk.locking="FALSE"
scsi1:0.SharedBus="Virtual"
scsi1:1.SharedBus="Virtual"
scsi2:0.SharedBus="Virtual"
scsi2:1.SharedBus="Virtual"
disk.EnableUUID ="TRUE"
1.4虚拟DB1机添加磁盘
添加一块新的硬盘
选择完成,磁盘添加完成;
启动两台虚拟机,就可以看到相同的磁盘;
二、前期准备工作
2.1 硬件准备
| 服务器 | 2台数据库虚拟机 |
| 操作系统 | Linux DB0 3.10.0-123.el7.x86_64 #1 SMP Mon May 5 11:16:57 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux |
| 网卡 | 每台2块网卡。 |
| 磁盘阵列 | 共享存储,两台虚拟机都连接到同一个存储上(共享存储只需要映射到服务器端fdisk -l可以查看到就行,不需要格式化)。 归档日志和备份数据在本地; |
| 存储规划 | 2G配置文件 2G配置文件 3G存储LOG文件 5G:存放数据文件和Redo日志及配置文件。 将归档日志和备份文件放在数据库本地磁盘。 |
2.2 集群规划
| 名称 | DB0机器 | DB1机器 |
| 业务IP | 192.168.1.132 | 192.168.1.133 |
| 心跳IP | 111.111.111.11 | 111.111.111.12 |
| INSTANCE_NAME dm的INSTANCE_NAME | DSC0 | DSC1 |
| PORT_NUM dm的PORT_NUM | 5236 | 5236 |
| 软件目录 | /opt | /opt |
| 安装目录 | /home/dm/dmdbms | /home/dm/dmdbms |
| 配置文件目录 | /home/dscdata | /home/dscdata |
| 归档日志目录 | /dmdata/dameng/arch_rac0 | /dmdata/dameng/arch_rac1 |
| 远程归档目录 | /dmdata/dameng/arch_rac0_1 | /dmdata/dameng/arch_rac1_0 |
| 备份目录 | /dmbak | /dmbak |
| OGUID | 45330 | |
| 监视器地址 | / | |
| 确认监视器目录 | /home/dm/dmdbms/bin | |
2.3 修改主机名
DB0机器
| [root@ localhost]# hostname DB0 [root@ DB0]# vi /etc/sysconfig/network NETWORKING=yes HOSTNAME= DB0 [root@ DB0]# vi /etc/hosts 127.0.0.1 localhost DB0 localhost4 localhost4.localdomain4 ::1 localhost DB0 localhost6 localhost6.localdomain6 |
DB01机器
| [root@ localhost]# hostname DB1 [root@ DB1]# vi /etc/sysconfig/network NETWORKING=yes HOSTNAME= DB1 [root@ DB1]# vi /etc/hosts 127.0.0.1 localhost DB1 localhost4 localhost4.localdomain4 ::1 localhost DB1 localhost6 localhost6.localdomain6 |
2.4 关闭防火墙
关闭防火墙,并禁止防火墙服务开机自启。
| [root@ DB0]# service iptables stop [root@ DB0]# setup |
注意:两台机器均需要修改。
2.5 修改系统参数
| [root@ DB0]# ulimit –n 65536 [root@ DB0]# vi /etc/security/limits.conf * soft nofile 65536 * hard nofile 65536 [root@ DB0]# vi /etc/profile ulimit -SHn 65536 [root@ DB0]# vi /etc/sysctl.conf vm.swappiness=0 [root@ DB0]# sysctl -p /etc/sysctl.conf [root@ DB0]# vi /etc/security/limits.d/90-nproc.conf * soft nproc unlimited |
注意:两台机器均需要修改。
三、创建目录并安装数据库
3.1 DB0机器安装数据库
创建dmdba用户,并切换到dmdba用户下,数据库安装在/home/dm/dmdbms目录下;过程……略;
3.2 DB1机器安装数据库
创建dmdba用户,并切换到dmdba用户下,数据库安装在/home/dm/dmdbms目录下;过程……略;
四、存储准备
4.1 划分存储
| 用途 | 空间规划 |
| sdd用于存放dcr配置信息 | 2G |
| sde用于存放vote信息 | 2G |
| sdc用于存放redo log | 3G |
| sdb用于存放data | 5G |
存储划分一块裸设备使用fdisk命令来划分否则不用
| # fdisk /dev/sdb 1) 依次输入 np 1 回车 +100M,完成第一块磁盘划分 2) 依次输入 np 2 回车 +100M,完成第二块磁盘划分 3) 依次输入 np 3 回车 +20480M,完成第三块磁盘划分 4) 依次输入 np 回车 回车 回车,完成第四块磁盘划分 5) 输入w命令,将裸设备划分的设置进行保存 |
注意:以上需要在两台机器上执行。
4.2 挂存储方法1
| [root@ DB0]# vi /etc/udev/rules.d/60-raw.rules ACTION=="add", KERNEL=="sdd", RUN+="/bin/raw /dev/raw/raw1 %N" ACTION=="add", KERNEL=="sde", RUN+="/bin/raw /dev/raw/raw2 %N" ACTION=="add", KERNEL=="sdc", RUN+="/bin/raw /dev/raw/raw3 %N" ACTION=="add", KERNEL=="sdb", RUN+="/bin/raw /dev/raw/raw4 %N" ACTION=="add", KERNEL=="raw[1-4]", OWNER="dmdba", GROUP=" dinstall ", MODE="660" [root@ DB0]# reboot 注:如果没有start_udev命令,可重启查看dev/raw下的文件 |
注意:两台设备都需要修改。可通过blockdev --getsize64 /dev/raw/raw1命令查看裸设备大小。如果60-raw.rules文件不存在,直接创建即可。
4.3 挂存储方法2
手动执行类似如下命令;
raw /dev/raw/raw1 /dev/sde
raw /dev/raw/raw2 /dev/sdd
raw /dev/raw/raw3 /dev/sdc
raw /dev/raw/raw4 /dev/sdb
chown dmdba:dinstall /dev/raw/raw*
chmod 660 /dev/raw/raw*
执行完成后;
vi /etc/rc.d/rc.local 添加上述内容;
注意:两台设备都需要执行。
五、搭建DSC
5.1 配置 dmdcr_cfg.ini
在/home/dscdata下新建dmdcr_cfg.ini文件;
| 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.1.132 #业务地址 DCR_EP_PORT = 9341 [GRP_CSS] DCR_EP_NAME = CSS1 DCR_EP_HOST = 192.168.1.133 #业务地址 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 = 111.111.111.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 = 111.111.111.12 #心跳地址 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 |
注意:两台机器该文件相同。
5.2 初始化磁盘组
在DB0机器上启动dmasmcmd工具,依次输入以下命令
| [root@ DB0]# cd /home/dm/dmdbms/bin [root@ DB0]# ./dmasmcmd ASM> create dcrdisk '/dev/raw/raw1' 'dcr' ASM> create votedisk '/dev/raw/raw2' 'vote' ASM> create asmdisk '/dev/raw/raw3' 'LOG0' ASM> create asmdisk '/dev/raw/raw4' 'DATA0' ASM> init dcrdisk '/dev/raw/raw1' from '/home/dscdata/dmdcr_cfg.ini' identified by 'abcd' ASM> init votedisk '/dev/raw/raw2' from '/home/dscdata /config/dmdcr_cfg.ini' |
5.3 配置 dmasvrmal.ini
在/home/dscdata下新建dmasvrmal.ini文件;
| [MAL_INST1] MAL_INST_NAME = ASM0 MAL_HOST = 111.111.111.11 MAL_PORT = 7236 [MAL_INST2] MAL_INST_NAME = ASM1 MAL_HOST = 111.111.111.12 MAL_PORT = 7237 |
注意:两台机器该文件相同。
5.4 配置 dmdcr.ini
在DB0机器的/home/dscdata下新建dmdcr.ini文件;
| DMDCR_PATH = /dev/raw/raw1 DMDCR_MAL_PATH = /home/dscdata/dmasvrmal.ini DMDCR_SEQNO = 0 #ASM重启参数,命令行方式启动 #DMDCR_ASM_RESTART_INTERVAL = 30 #DMDCR_ASM_STARTUP_CMD = service DmASMSvrService start #DB重启参数,命令行方式启动 #DMDCR_DB_RESTART_INTERVAL = 60 #DMDCR_DB_STARTUP_CMD = service DmServiceDSC start |
在DB1机器的/home/dscdata下新建dmdcr.ini文件;
| DMDCR_PATH = /dev/raw/raw1 DMDCR_MAL_PATH = /home/dscdata/dmasvrmal.ini DMDCR_SEQNO = 1 #ASM重启参数,命令行方式启动 #DMDCR_ASM_RESTART_INTERVAL = 30 #DMDCR_ASM_STARTUP_CMD = service DmASMSvrService start #DB重启参数,命令行方式启动 #DMDCR_DB_RESTART_INTERVAL = 60 #DMDCR_DB_STARTUP_CMD = service DmServiceDSC start |
注:dmdcr.ini中先将ASM和DMSERVER配置为手动服务,待所有配置完成后,再修改dmdcr.ini将ASM和DMSERVER配置成自动拉起。
5.5 启动CSS、ASM服务
分别前台启动两台机器的CSS、ASM服务
DB0
| [dmdba@DB0]# ./dmcss DCR_INI=/home/dscdata/dmdcr.ini dmcss V8.1.0.157-Build(2019.05.07-106493)ENT 设置CSS[0]为主CSS [ASM]: 设置EP[0]为主EP [ASM]: 设置命令[START NOTIFY], 目标节点[0], 命令序号[2] [ASM]: 设置命令[EP START], 目标节点[0], 命令序号[3] [ASM]: 设置命令[NONE], 目标节点[0], 命令序号[0] [ASM]: 设置命令[EP START], 目标节点[1], 命令序号[9] [ASM]: 设置命令[NONE], 目标节点[1], 命令序号[0] [ASM]: 设置命令[EP OPEN], 目标节点[0], 命令序号[12] [ASM]: 设置命令[EP OPEN], 目标节点[1], 命令序号[13] [ASM]: 设置命令[NONE], 目标节点[0], 命令序号[0] [ASM]: 设置命令[NONE], 目标节点[1], 命令序号[0] [ASM]: 设置命令[EP REAL OPEN], 目标节点[0], 命令序号[15] [ASM]: 设置命令[EP REAL OPEN], 目标节点[1], 命令序号[16] [ASM]: 设置命令[NONE], 目标节点[0], 命令序号[0] [ASM]: 设置命令[NONE], 目标节点[1], 命令序号[0] |
DB1
| [dmdba@DB1]# ./dmasmsvr DCR_INI=/home/dscdata/dmdcr.ini DMASMSVR V8.1.0.157-Build(2019.05.07-106493)ENT ASM SELF EPNO:0 dmasmsvr task worker thread startup the ASM server is Ready. ... |
5.6 创建DMASM磁盘组
在DB0机器上启动dmasmtool工具,创建DMASM磁盘组
| [dmdba@DB0]# cd /home/dm/dmdbms/bin [dmdba@DB0]#./dmasmtool DCR_INI=/home/dscdata/dmdcr.ini ASM> create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3' ASM> create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4' |
在一台机器执行;
5.7 配置 dminit.ini
在/home/dscdata下新建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 [DSC0] config_path = /home/dscdata/dsc0_config port_num = 5236 mal_host = 192.168.1.132 mal_port = 9340 log_path = +DMLOG/log/dsc0_log01.log log_path = +DMLOG/log/dsc0_log02.log [DSC1] config_path = /home/dscdata /dsc1_config port_num = 5236 mal_host = 192.168.1.133 mal_port = 9341 log_path = +DMLOG/log/dsc1_log01.log log_path = +DMLOG/log/dsc1_log02.log |
注意:只在一台机器配置。
5.8 初始化数据库
在DB0机器上启动dminit工具初始化数据库,然后会在config目录下生成dsc0_config和dsc1_config目录,每个目录下都有dm.ini和dmmal.ini。将DB0机器上生成的dsc1_config目录剪贴到DB1机器的config目录下
| [dmdba@DB0]# ./dminit control=/home/dscdata/dminit.ini V8.1.0.157-Build(2019.05.07-106493)ENT ... create dm database success. 2018-11-01 21:25:31 |
5.9 配置 dmarch.ini
将两台机器上dm.ini中的ARCH_INI设置为1,然后配置dmarch.ini文件
在DB0机器的/home/dscdata/dsc0_config下新建dmarch.ini文件
| [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /dmdata/dameng/arch_rac0 ARCH_FILE_SIZE = 2048 ARCH_SPACE_LIMIT = 51200 [ARCH_REMOTE1] ARCH_TYPE = REMOTE ARCH_DEST = DSC1 ARCH_INCOMING_PATH = /dmdata/dameng/arch_rac0_1 ARCH_FILE_SIZE = 2048 ARCH_SPACE_LIMIT = 51200 |
在DB1机器的/home/dscdata/dsc1_config下新建dmarch.ini文件
| [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /dmdata/dameng/arch_rac1 ARCH_FILE_SIZE = 2048 ARCH_SPACE_LIMIT = 51200 [ARCH_REMOTE1] ARCH_TYPE = REMOTE ARCH_DEST = DSC0 ARCH_INCOMING_PATH = /dmdata/dameng/arch_rac1_0 ARCH_FILE_SIZE = 2048 ARCH_SPACE_LIMIT = 51200 |
5.10 启动DMSERVER服务
DB0机器
| [dmdba@DB0]# ./dmserver /home/dscdata/dsc0_config/dm.ini dcr_ini=/home/dscdata/dmdcr.ini |
DB1机器
| [dmdba@DB1]# ./dmserver /home/dscdata/dsc1_config/dm.ini dcr_ini=/home/dscdata/dmdcr.ini |
5.11 设置后台启动脚本
DMCSS后台服务脚本,DMASM后台服务启动脚本,实例DMSERVER后台启动脚本。
DB0机器
| [root@DB0]# cp /home/dm/dmdbms/bin/service_template/DmASMSvrService /etc/rc.d/init.d/DmASMSvrService [root@DB0]# cp /home/dm/dmdbms/bin/service_template/DmCSSService /etc/rc.d/init.d/DmCSSService [root@DB0]# cp /home/dm/dmdbms/bin/service_template/DmService /etc/rc.d/init.d/DmServiceDSC [root@DB0]# vi /etc/rc.d/init.d/DmASMSvrService INI_PATH="/home/dscdata/dmdcr.ini" [root@DB0]# vi /etc/rc.d/init.d/DmCSSService INI_PATH="/home/dscdata/dmdcr.ini" [root@DB0]# vi /etc/rc.d/init.d/DmServiceDSC INI_PATH="/home/dscdata/dsc0_config/dm.ini" DCR_INI_PATH="/home/dscdata/dmdcr.ini" |
DB01机器
| [root@ DB1]# cp /home/dm/dmdbms/bin/service_template/DmASMSvrService /etc/rc.d/init.d/DmASMSvrService [root@ DB1]# cp /home/dm/dmdbms/bin/service_template/DmCSSService /etc/rc.d/init.d/DmCSSService [root@ DB1]# cp /home/dm/dmdbms/bin/service_template/DmService /etc/rc.d/init.d/DmService [root@ DB1]# vi /etc/rc.d/init.d/ DmASMSvrService INI_PATH="/home/dscdata/dmdcr.ini" [root@ DB1]# vi /etc/rc.d/init.d/DmCSSService INI_PATH="/home/dscdata/dmdcr.ini" [root@ DB1]# vi /etc/rc.d/init.d/DmService INI_PATH="/homne/dsdata/dsc1_config/dm.ini" DCR_INI_PATH="/home/dscdata/dmdcr.ini" |
六、配置监视器
6.1 配置dmcssm.ini
将dmcssm.ini放在数据库安装目录的bin目录下,内容如下:
| CSSM_OGUID = 45330 CSSM_CSS_IP = 192.168.1.132:9341 CSSM_CSS_IP = 192.168.1.133:9343 CSSM_LOG_PATH = ../log CSSM_LOG_FILE_SIZE = 256 CSSM_LOG_SPACE_LIMIT = 1024 |
6.2 启动监视器
| [dmdba@localhost]# ./dmcssm INI_PATH=dmcssm.ini |
七、其它配置
7.1 配置 dm_svc.conf
| TIME_ZONE=(480) LANGUAGE=(cn) dm=(192.168.1.132:5236,192.168.1.133:5236) SWITCH_TIME=(10000) SWITCH_INTERVAL=(1000) loadBalance=(true) loadBalanceFreq=(60000) loadBalancePercent=(10) LOGIN_ENCRYPT=0 |
7.2 设置定时备份
机器上设置定时备份,放置路径为/opt/dsc/bak,注意更改dm.ini文件中的相关路径。
7.3 启停集群
启动顺序:
DB0机器:service DmCSSService start
DB1机器:service DmCSSService start
说明:必须同时启动两台机器服务,根据目前脚本配置,CSS启动后30秒自动拉起DmASMSvrService,ASM启动后1分钟自动拉起DmServiceDSC,可以通过进程查看,3个服务都启动后DSC可以正常访问。
停止顺序:
DB0机器:systemctl stop DmService (service stop)
DB1机器:systemctl stop DmService (service DmService stop)
DB0机器:systemctl stop DmASMSvrService (service DmASMSvrService stop)
DB1机器:systemctl stop DmASMSvrService (service DmASMSvrService stop)
DB0机器:systemctl stop DmCSSService (service DmCSSService stop)
DB1机器:systemctl stop DmCSSService (service DmCSSService stop)
说明:必须同时停止两台设备的达梦服务,根据目前脚本配置,CSS启动后30秒自动拉起DmASMSvrService,ASM启动后1分钟自动拉起DmServiceDSC,所以停止DmService和DmASMSvrService后要尽快停下一个服务,避免被自动拉起,同时DmASMSvrService服务在任意一个节点停止会停两台机器的ASM服务,为了保险起见也可以两边都停止下,全部停止后要检查后台进程是否全部停止。
八、总结
DM共享存储数据库集群,是允许多个数据库实例同时访问、操作同一数据库,具有高可用、高性能、负载均衡等特性。DMDSC支持故障自动切换和故障自动重加入,某一个数据库实例故障后,不会导致数据库服务无法提供。
本次安装遇到的问题和注意事项:
1、DMASM 的两个节点分别配置 dmdcr.ini,DMDCR_PATH 相同、dmasvrmal.ini 文件内容也相同、DMDCR_SEQNO 两台分别配置 0 和 1。
2、绑定磁盘的所属用户是dmdba。
3、注册,初始化实例,绑定磁盘等都在一台机器上完成。
4、所有配置文件也在一个节点写好发送过去进行修改以免造成不一致。
、本次安装DMDSC遇到重启服务器ASM服务不能正常启动,经排查raw权限不对,在服务器重启后裸设备会重新绑定,重新赋权。



