使用VM模拟部署DM共享存储(DSC)集群

准备两个虚拟机CentOS1(192.168.202.133)和CentOS2(192.168.202.152),还需一个裸盘,没有的话可以以在虚拟机添加硬盘的方式模拟裸盘。

 

一、环境准备

1、新建两台虚拟机

选择新建虚拟机,设置ISO镜像文件,磁盘大小12G,将虚拟磁盘存储为单个文件。虚拟机内存设置为2GB。两个虚拟机操作系统、内存大小等完全一样。

启动好后 systemctl stop firewalld   关闭防火墙

ifconfig 查ip地址

如果没安装ifconfig,则yum install ifconfig

如果还失败,则yum search ifconfig

查到后执行 yum install net-tools.x86_64

这样就可以用ifconfig了

注意:我之前试过先创建虚拟机,选择稍后安装操作系统,然后新建硬盘,添加完硬盘后再创建操作系统,结果启动后找不到我新建的硬盘,建议还是先安装操作系统,启动没问题后再关闭虚拟机,然后新建硬盘。

2、在CentOS1创建新硬盘

注意:必须在虚拟机关闭的状态下,才能进行虚拟机的设置。

编辑虚拟机或者直接点硬盘(SCSI)都可以,选择添加硬盘,虚拟磁盘类型选SCSI(S),创建新虚拟硬盘。磁盘大小20G,将虚拟磁盘存储为单个文件,硬盘自己命名,最好单独存储到一个文件夹,不要选择默认。

 

必须勾选立即分配所有磁盘空间

 

下图是我的存储目录,第三个是虚拟硬盘。

 

3、在CentOS2添加之前创建的硬盘

注意:必须在虚拟机关闭的状态下,才能进行虚拟机的设置。

 

4、修改vmx文件

我只添加了一个SCSI硬盘,打开CentOS2的vmx配置文件,加入如下信息:

disk.locking="FALSE"

scsi0:1.SharedBus="Virtual"

说明:

scsi n:m.SharedBus="Virtual"

n和m是SCSI的设备编号,可以在配置文件中找到需要共享的SCSI设备的信息。

5、查看硬盘有没有加入

 

 

二、安装达梦数据库管理系统

1、创建用户组、用户

[root@dameng home]# groupadd dinstall

[root@dameng home]# useradd -g dinstall dmdba

[root@dameng home]# passwd dmdba

PWD : dmdba

2、安装和创建响应目录

上传iso文件或者DMInstall.bin,我是直接上传的DMInstall.bin,放在/home下

chown -R dmdba:dinstall /home/DMInstall.bin

chmod -R 755 /home/DMInstall.bin

切换dmdba登录

[dmdba@dameng home]#  ./DMInstall.bin -i

请选择安装语言(C/c:中文 E/e:英文) [C/c]:c

是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n

是否设置时区? (Y/y:是 N/n:否) [Y/y]:y

请选择设置时区 [21]:21

请选择安装类型的数字序号 [1 典型安装]:1

请选择安装目录 [/opt/dmdbms]:/home/dmdba

手动创建响应的目录

数据库管理系统安装在/home/dmdba目录下

cd /home/dmdba

mkdir dmdbms

cd dmdbms

mkdir BAK

mkdir config(目录存放所有配置文件)

mkdir arch_0(存放归档日志)

mkdir arch_0_remote(存放远程归档)

cd ../

chown -R dmdba:dinstall dmdbms

chmod -R 755 dmdbms

注意:我这步没做好,最好先创建dmdbms,然后把数据库安装到dmdbms中

3、在共享磁盘上划分裸设备

1)开始划分

注意:用root用户

在一个节点上划分即可。

a) 输入 fdisk /dev/sdb

b) 依次输入 n  p  1 回车 +100M 回车,完成第一块磁盘划分

c) 依次输入 n  p  2 回车 +100M 回车,完成第二块磁盘划分

d) 依次输入 n  p  3 回车 +2048M 回车,完成第三块磁盘划分

e) 依次输入 n  p  4 回车回车回车,完成第四块磁盘划分

f) 输入w命令,将裸设备划分的设置进行保存

g)两个节点都执行一下语句完成裸设备绑定

partprobe /dev/sdb  重读分区表

systemctl restart systemd-udev-trigger.service

h)fdisk -l 查看划分情况(两个节点都看)

 

注意:我第一次划分的时候,第四步输错了,把+2048M输成+2048,导致后面使用 DMASMCMD 工具初始化的时候报错,如下图所示:

 

解决方法是把3和4删掉重建。

同样使用fdisk /dev/sdb命令 不是fdisk /dev/sdb1,输入m并回车,

输入d并回车

选择要删除的分区,分别删除3和4。

删除后再重新分区3和4,如下:

依次输入 n  p  3 回车 +2048M 回车,完成第三块磁盘划分

依次输入 n  p  4 回车回车回车,完成第四块磁盘划分

输入w命令,将裸设备划分的设置进行保存。

最后执行

partprobe /dev/sdb  重读分区表

systemctl restart systemd-udev-trigger.service

2)编辑/etc/udev/rules.d/60-raw.rules 文件,增加以下语句:

2台服务器均需增加以下语句,用root用户

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="dmdba", GROUP="dinstall", MODE="660"

4、准备dmdcr_cfg.ini配置文件

放在 /home/dmdba/dmdbms/config 目录下,两个节点均需要, 后续 DMASMCMD工具执行 init 语句会使用到。

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.202.133

DCR_EP_PORT = 9341

[GRP_CSS]

DCR_EP_NAME = CSS1

DCR_EP_HOST = 192.168.202.152

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.202.133

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.202.152

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、使用 DMASMCMD 工具初始化磁盘组

1)在其中一个节点上启动dmasmcmd工具

su dmdba

cd /home/dmdba/bin

./dmasmcmd

2)依次输入以下命令(只需在一台机器执行即可)

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/dmdba/dmdbms/config/dmdcr_cfg.ini' identified by 'abcd'

ASM>init votedisk '/dev/raw/raw2' from '/home/dmdba/dmdbms/config/dmdcr_cfg.ini'

6、配置dmasvrmal.ini文件(两个节点都一样)

存放目录 home/dmdba/dmdbms/config

[MAL_INST1]

MAL_INST_NAME = ASM0

MAL_HOST = 192.168.202.133

MAL_PORT = 7236

[MAL_INST2]

MAL_INST_NAME = ASM1

MAL_HOST = 192.168.202.152

MAL_PORT = 7237

7、准备 dmdcr.ini 配置文件

存放目录 home/dmdba/dmdbms/config

DMASM 的两个节点分别配置 dmdcr.ini,dmdcr_path 相同,dmasvrmal.ini 文件内容也相同,dmdcr_seqno 分别为 0 和 1。path中分别是dsc0_config和dsc1_config。

CentOS1的:

DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/home/dmdba/dmdbms/config/dmasvrmal.ini
DMDCR_SEQNO = 0
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /home/bin/dmasmsvr dcr_ini=/home/dmdba/dmdbms/config/dmdcr.ini
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /home/bin/dmserver path=/home/dmdba/dmdbms/dsc0_config/dm.ini dcr_ini=/home/dmdba/dmdbms/config/dmdcr.ini

CentOS2的:

DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/home/dmdba/dmdbms/config/dmasvrmal.ini
DMDCR_SEQNO = 1
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /home/bin/dmasmsvr dcr_ini=/home/dmdba/dmdbms/config/dmdcr.ini
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /home/bin/dmserver path=/home/dmdba/dmdbms/dsc1_config/dm.ini dcr_ini=/home/dmdba/dmdbms/config/dmdcr.ini

注意:红框圈中的不能换行。

8、启动DMCSS、DMASM服务

在两台虚拟机分别前台启动,方便查看启动信息。

cd /home/dmdba/bin

./dmcss DCR_INI=/home/dmdba/dmdbms/config/dmdcr.ini

启动成功效果如下:

 

注意:启动第二个节点的时候报了个错,如下:

 

解决方式如下:

 

切换一个会话,因为是前台启动,退出的话也关闭css了。

cd /home/dmdba/bin

./dmasmsvr DCR_INI=/home/dmdba/dmdbms/config/dmdcr.ini

启动成功效果如下:

9、使用 dmasmtool 工具创建 DMASM 磁盘组

选择一个节点,启动 dmasmtool 工具。

cd /home/dmdba/bin

./dmasmtool DCR_INI=/home/dmdba/dmdbms/config/dmdcr.ini

输入下列语句创建 DMASM 磁盘组:

#创建日志磁盘组

create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'

#创建数据磁盘组

create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'

注意:刚开始启动的时候报错了,原因是我133重启过,防火墙又自动启动了。

systemctl disable firewalld.service  防火墙禁止开机重启

 

查看日志信息如下:

 

根据日志信息判断应该是网络的问题。

刚开始没想到是防火墙的问题,因为我记得我关了,忘记中间有重启过,也没设置防火墙禁止开机重启。

测试方式是在133这台机器上创建个数据库,用152去连接,发现连不上,我本地也连不上133的数据库,只有133自己可以连接。也猜测过是selinux的问题,后来发现不是。

10、准备 dminit.ini 配置文件(一个节点即可)

存放目录 home/dmdba/dmdbms/config

我是放在133这个节点上。

11、使用 dminit 初始化 DB 环境

在133上启动dminit工具初始化数据库。

./dminit control=/home/dmdba/dmdbms/config/dminit.ini

dminit执行完成后,会在config_path目录(/home/dmdba/dmdbms/config/rac0_config和rac1_config)下生成配置文件dm.ini和dmmal.ini。

注:初始化数据库完成之后,将133节点上生成的rac1_config文件拷贝到152的/home/dmdba/dmdbms/config目录下,然后将133上/home/dmdba/dmdbms/config目录下的rac1_config文件夹删掉。

注意:初始化的时候遇到如下问题:

 

原因是dcr文件里面的实例名与dminit里面不匹配。

dmdcr_cfg.ini配置如下:

 

dmdcr.ini配置如下:

 

12、配置远程归档

先将两个节点上的dm.ini中的ARCH_INI设置为1,然后配置dmarch.ini文件

1)节点133:

存放目录 /home/dmdba/dmdbms/config/dsc0_config

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = /home/dmdba/dmdbms/arch_0

ARCH_FILE_SIZE = 128

ARCH_SPACE_LIMIT = 10240

[ARCH_REMOTE1]

ARCH_TYPE = REMOTE

ARCH_DEST = DSC1

ARCH_INCOMING_PATH =/home/dmdba/dmdbms/arch_0_remote

ARCH_FILE_SIZE = 128

ARCH_SPACE_LIMIT = 10240

2)节点152:

存放目录 /home/dmdba/dmdbms/config/dsc1_config

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = /home/dmdba/dmdbms/arch_1

ARCH_FILE_SIZE = 128

ARCH_SPACE_LIMIT = 10240

[ARCH_REMOTE1]

ARCH_TYPE = REMOTE

ARCH_DEST = DSC0

ARCH_INCOMING_PATH =/home/dmdba/dmdbms/arch_1_remote

ARCH_FILE_SIZE = 128

ARCH_SPACE_LIMIT = 10240

13、启动数据库服务

1)启动133节点的

./dmserver /home/dmdba/dmdbms/config/dsc0_config/dm.ini dcr_ini=/home/dmdba/dmdbms/config/dmdcr.ini

2)启动152节点的

./dmserver /home/dmdba/dmdbms/config/dsc1_config/dm.ini dcr_ini=/home/dmdba/dmdbms/config/dmdcr.ini

14、注册服务

1)注册命令

root用户登录

cd /home/dmdba/script/root

节点1:

./dm_service_installer.sh -t dmcss -dcr_ini /home/dmdba/dmdbms/config/dmdcr.ini -p CSS1

./dm_service_installer.sh -t dmasmsvr    -dcr_ini /home/dmdba/dmdbms/config/dmdcr.ini -p ASM1 -y DmCSSServiceCSS1

./dm_service_installer.sh -t dmserver -dcr_ini /home/dmdba/dmdbms/config/dmdcr.ini -dm_ini /home/dmdba/dmdbms/config/dsc0_config/dm.ini -p DB1 -y DmASMSvrServiceASM1

节点2:

./dm_service_installer.sh -t dmcss -dcr_ini /home/dmdba/dmdbms/config/dmdcr.ini -p CSS2

./dm_service_installer.sh -t dmasmsvr    -dcr_ini /home/dmdba/dmdbms/config/dmdcr.ini -p ASM2 -y DmCSSServiceCSS2

./dm_service_installer.sh -t dmserver -dcr_ini /home/dmdba/dmdbms/config/dmdcr.ini -dm_ini /home/dmdba/dmdbms/config/dsc1_config/dm.ini -p DB2 -y DmASMSvrServiceASM2

2)启动命令

节点1:

systemctl start DmCSSServiceCSS1

systemctl start DmASMSvrServiceASM1

systemctl start DmServiceDB1

节点2:

systemctl start DmCSSServiceCSS2

systemctl start DmASMSvrServiceASM2

systemctl start DmServiceDB2

15、配置监视器

监视器放在第三方机器上,为 windows 操作系统,dmcssm.ini 配置文件路径为 D:\DCA\cssm。

1)dmcssm.ini内容

#和 dmdcr_cfg.ini 中的 DCR_OGUID 保持一致

CSSM_OGUID = 63635

#配置所有 CSS 的连接信息,

#和 dmdcr_cfg.ini 中 CSS 配置项的 DCR_EP_HOST 和 DCR_EP_PORT 保持一致

CSSM_CSS_IP = 192.168.202.133:9341

CSSM_CSS_IP = 192.168.202.152:9343

CSSM_LOG_PATH =E:\DCA\cssm\log

#监视器日志文件存放路径

CSSM_LOG_FILE_SIZE = 32

#每个日志文件最大 32M

CSSM_LOG_SPACE_LIMIT = 0 

#不限定日志文件总占用空间

2)启动监视器

进入E:\dmdbms\bin目录

cmd

dmcssm.exe INI_PATH=E:\DCA\cssm\dmcssm.ini

 

16、备份还原

我测试的是从归档还原,因为操作频繁,时间短,所以还原前最好checkpoint一下,让数据进入归档文件。

如下面的例子,我先备份一下,再创建一张表test2并插入数据,如果是从备份集还原的话,test2是不存在的,如果是从归档还原的话,则会有test2。

说明:本例归档存储在节点上,不是存储在共享盘上。

BACKUP DATABASE BACKUPSET '/home/dmdba/dmdbms/BAK/db_full_bak_for_dsc2';

create table test2(id int,name varchar);
insert into test2 values(1,'test');
insert into test2 values(1,'test2');
commit;

checkpoint(100);

./dmrman dcr_ini=/home/dmdba/dmdbms/config/dmdcr.ini
restore DATABASE '/home/dmdba/dmdbms/config/dsc1_config/dm.ini' FROM BACKUPSET '/home/dmdba/dmdbms/BAK/db_full_bak_for_dsc2';
recover DATABASE '/home/dmdba/dmdbms/config/dsc1_config/dm.ini' with archivedir '/home/dmdba/dmdbms/arch_1','/home/dmdba/dmdbms/arch_1_remote';
recover DATABASE '/home/dmdba/dmdbms/config/dsc1_config/dm.ini' update db_magic;

 

更多资讯请上达梦技术社区了解: https://eco.dameng.com

 

posted @ 2021-07-29 18:04  xiaowu222  阅读(585)  评论(0编辑  收藏  举报