一、环境规划
1.机器规划
本次DSC集群部署使用两台虚拟机,分别命名为dm101和dm102,部署在同一台物理主机上,通过VirtualBox虚拟化平台进行管理和运行。两台虚拟机配置相同,均安装银河麒麟操作系统。
2.IP与端口规划
每台虚拟机配置两块网卡:enp0s3用于外部业务访问(Host-Only模式),enp0s8用于集群内部心跳通信。DSC集群涉及多个服务端口,需提前规划以避免冲突。
3.磁盘规划
DSC集群需要共享存储,通过VirtualBox创建三个VHD虚拟硬盘作为共享磁盘,同时挂载到dm101和dm102两台虚拟机上。
4.目录规划
为便于管理和维护,对关键目录进行统一规划。
二、环境信息
1.操作系统版本
本次实践使用的操作系统为银河麒麟高级服务器操作系统V10
2.达梦数据库版本
本次安装使用的达梦数据库版本为DM8 V8 64位版本(我的安装包是dm8_20260428_x86_kylin10_sp3_64)
2.3 其他软件版本
虚拟化平台:Oracle VM VirtualBox7.1.6
远程管理工具:MobaXterm
数据库管理工具:达梦数据库管理工具
三、DSC集群安装
1.关机状态下添加共享磁盘。
在磁盘设置页面,创建磁盘,位置放在虚拟机所在的同一个文件夹中,存放新建磁盘的文件夹可以命名为:s_disks
新建的第一个磁盘的文件命名为:dmdcr,预先进行分配空间,2GB,磁盘文件类型为VHD(虚拟硬盘),勾选“预先分配全部空间” ,完成后修改其属性为:可共享,并应用
新建的第二个磁盘的文件命名为:dmvote,预先进行分配空间,2GB,磁盘文件类型为VHD(虚拟硬盘),勾选“预先分配全部空间”,完成后修改其属性为:可共享,并应用
新建的第三个磁盘的文件命名为:dmdata,预先进行分配空间,10GB,磁盘文件类型为VHD(虚拟硬盘),勾选“预先分配全部空间”,完成后修改其属性为:可共享,并应用
2.在两台虚拟机配置页面,“存储”中的控制器中将刚刚新建的三个磁盘都加
入,完成后启动两台虚拟机。
3.查看磁盘UUID
mobaxterm将101和102分别启动。双机编辑模式查看新增磁盘的uuid:
/lib/udev/scsi_id -g -u /dev/sd* (其中替换成b、c、d分别再运行)
lsblk查看磁盘信息检查一遍。此处非常重要!一定要搞清楚哪个才是data磁盘,避免后续的安装过程由于重命名错误而导致分配成2G,使空间不足。
4.新增udev,并重命名磁盘。
4.1绑定UUID并生成规则
先复制服务平台运维手册的内容在dm101中完成uuid绑定:
(注意删除复制过来的 >> $curr/88-dm-asmdevices.rules)
4.2创建udev规则文件
新建一个udev规则配置文件: vi /etc/udev/rules.d/99raw.rules
将刚刚完成uuid绑定运行出来的内容复制在现在打开的编辑界面(注意dm101和dm102都要进行这个操作)。
一定要看一下bcd分别对应的是磁盘vote,磁盘dcr还是磁盘data
根据我lsblk后的结果看,可知应该将diskb改成vote,将diskc改成dcr,将diskd改成data
4.3检查udev是否生效
完成后检查是否生效(同样是根据手册命令来):
(注意dm101和dm102都要进行这个操作)
ll /dev/dm/asm查看一下磁盘设备是否修改成功:
4.4 udev配置参数说明
KERNEL:匹配内核设备名,如 sd* 表示所有以 sd 开头的块设备。
SUBSYSTEM:限定设备子系统类型,block 表示只匹配块设备。
PROGRAM:调用 scsi_id 命令获取磁盘的 UUID。
RESULT:与 PROGRAM 配合使用,匹配 scsi_id 返回的 UUID 值,UUID 必须准确,不同虚拟机 UUID 不同。
SYMLINK:创建符号链接,如 /dev/dm/asm-dcr,将不稳定的设备名固定为有意义的名字。
OWNER / GROUP:设置设备文件的属主和属组,通常为 dmdba:dinstall,确保数据库进程有读写权限。
4.5注意事项
(1)每个磁盘的UUID是全局唯一的,通过/lib/udev/scsi_id -g -u命令获取,必须确保获取的UUID与实际磁盘一一对应。
(2)dm101和dm102的udev规则必须完全一致,确保两台机器对同一共享磁盘的命名相同。
(3)设备文件的所有者必须设置为dmdba,否则ASM服务无法正常访问共享磁盘。
(4)修改规则文件后需要执行udevadm trigger或重启系统使规则生效。
(5)配置完成后务必执行ll /dev/dm/asm*验证符号链接是否正确创建。
至此共享集群配置完成,开始部署dsc
7.启动CSS服务。
在dm101、dm102中分别输入:dmcss dcr_ini=dmdcr.ini
8.启动DMASM服务。
在dm101和dm102中分别进入dmdba用户后,cd dmdsc后ll查看文件
dmasmsvr dcr_ini=dmdcr.ini使asm启动后,创建asm磁盘组。
在dm101的dmdba用户下执行dmasmtool dcr_ini=/home/dmdba/dmdsc/dmdcr.ini
进入ASM后输入:create diskgroup ‘DMDATA’ asmdisk ‘/dev/dm/asm-data’
9.创建初始化实例的配置文件。
在dm101中vi /home/dmdba/dmdsc/dminit.ini,用服务平台的创建实例内容进行修改后直接复制使用
创建实例dminit control=/home/dmdba/dmdsc/dminit.ini
cd dmdsc后ll查看文件
拷贝至dm102:scp -r DSC1/ 192.168.56.102:/home/dmdba/dmdsc
在dm102中进行查看是否成功,即cd dmdsc/DSC1/后查看文件情况
10.启动实例。
在dm101中执行:
dmserver /home/dmdba/dmdsc/DSC0/dm.ini dcr_ini=/home/dmdba/dmdsc/dmdcr.ini
在dm102中执行:
dmserver /home/dmdba/dmdsc/DSC1/dm.ini dcr_ini=/home/dmdba/dmdsc/dmdcr.ini
等待system is ready,即启动成功。
11.在dm管理工具中连接101和102,分别执行:SELECT * from SYS.GV$INSTANCE查看实例。
(注意:此处之前的主备集群的dmserver和dmwatcher可能会占用5236端口,所以需要杀死其占用此端口的进程并将自启动服务关闭,以免产生新进程继续占用 5236端口)
12.配置dsc监视器。
在dm102中进入dmdba用户,cd dmdsc,然后vi dmcssm.ini,将服务平台手册配置dsc监视器中的命令进行修改后复制进去:
CSSM_OGUID = 210715
CSSM_CSS_IP = 10.0.0.101:11286
CSSM_CSS_IP = 10.0.0.102:11286
CSSM_LOG_PATH = …/log
CSSM_LOG_FILE_SIZE = 512
CSSM_LOG_SPACE_LIMIT = 2048
然后dmcssm dmcssm.ini启动监视器,show后看到有3个组的css、asm、db
13.注册服务。
exit退至root用户后,在dm101、dm102中分别依次输入:
/opt/dmdbms/script/root/dm_service_installer.sh -t dmcss -dcr_ini /home/dmdba/dmdsc/dmdcr.ini -p CSS
/opt/dmdbms/script/root/dm_service_installer.sh -t dmasmsvr -dcr_ini /home/dmdba/dmdsc/dmdcr.ini -y DmCSSServiceCSS.service -p ASM
/opt/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /home/dmdba/dmdsc/DSC0/dm.ini -dcr_ini /home/dmdba/dmdsc/dmdcr.ini -y DmASMSvrServiceASM.service -p DSC
(注意此处,如果是dm101则是DSC0,如果是dm102则是DSC1)
14.在监视器里停止db和asm,进行测试。
dmdba用户中cd dmdsc,
dmcssm dmcssm.ini,ep stop GRP_DSC,ep stop GRP_ASM
15.修改dcr配置文件,让css自动拉起asm和db。
即在dm101和dm102中分别vi dmdcr.ini,添加:
DMDCR_ASM_RESTART_INTERVAL = 10 #CSS 认定 ASM 故障重启的时间
DMDCR_ASM_STARTUP_CMD = DmASMSvrServiceASM start
DMDCR_DB_RESTART_INTERVAL = 20 ##CSS 认定 DSC 故障重启的时间,设置为 0 不自动拉起
DMDCR_DB_STARTUP_CMD = DmServiceDSC start
在dm101、dm102中分别执行DmCSSServiceCSS start
在dm102中ll查看文件,然后dmcssm dmcssm.ini启动监视器。
在监视器里看到real open即完成启动
(注意不要拼写错误命令,否则监视器里的[CSS0]和[CSS1]会一直交替出现)
在dm管理工具中再次运行,可以发现自动拉起成功。
四、安装心得
1、新建的磁盘在进行重命名的时候一定要lsblk后看清楚哪一个是data磁盘,看大小,10G的是data,2G的是dcr/vote,如果将2G的磁盘重命名成了data,后面在ASM 磁盘初始化的时候会没有内存。由于重命名错误导致的空间分配错误的报错:
可以在dm管理工具中SELECT * from V$err_info查看错误码对应的含义。
2、在实验环境中,为简化配置和避免端口冲突导致的连接问题,可以选择关闭防火墙。
2.1几种关闭防火墙的方法:
(1)临时关闭防火墙(立即生效,重启后恢复)
systemctl stop firewalld.service
(2)永久关闭防火墙(重启后仍保持关闭)
systemctl disable firewalld.service
(3)同时停止并禁用防火墙
systemctl stop firewalld.service systemctl disable firewalld.service
(4)查看防火墙状态 systemctl status firewalld.service
2.2如果不能关闭防火墙,就需要手动放行端口。
判断需要开放哪些端口的方法如下:
(1)数据库服务端口:达梦数据库默认监听端口为5236,用于客户端连接和SQL执行,必须开放。
(2) CSS服务端口:DSC集群CSS节点间通信端口,根据dmdcr_cfg.ini中的DCR_EP_PORT参数确定,在我的环境中为11286。
(3) ASM服务端口:DSC集群ASM服务端口,根据dmdcr_cfg.ini中的DCR_EP_PORT参数确定,在我的环境中为11276。
(4) MAL通信端口:DSC集群内部实例间通信使用,根据配置文件中的MAL_PORT参数确定。在我的环境中,ASM的MAL端口为11266,数据库实例的MAL端口为11246。
同时,在配置文件中时注意提到了哪些端口后面注意手动放行,或者使用netstat -tlnp命令查看当前监听的所有端口。
(1) 放行单个端口(立即生效,重启后失效),例如:
firewall-cmd --add-port=5236/tcp
(2) 放行多个端口(永久生效),例如:
firewall-cmd --permanent --add-port=5236/tcp
firewall-cmd --permanent --add-port=11286/tcp
firewall-cmd --permanent --add-port=11276/tcp
firewall-cmd --permanent --add-port=11266/tcp
firewall-cmd --permanent --add-port=11246/tcp
firewall-cmd --reload
3、在安装共享集群启动实例的时候,主备集群的dmserver以及dmwatcher由于之前开了自启动服务,一直有进程占用5236端口,所以我采用了将主备集群自启动服务关闭的方法。
4、安装过程中尤其要注意不要拼写错误,不然很难发现错误原因,单词拼写以及vi编辑器里的内容拼写都要仔细一点,否则会因为很多次的拼写问题到处查找报错原因。
4.1错误拼写示范
拼写错误导致的报错:
正确拼写:
注意:在dmdcr.ini配置文件中,自动拉起参数需要与对应的服务名正确匹配,否则CSS将无法找到对应的服务进行启动,不能自动拉起ASM和DB服务,即会一直在尝试拉起的过程中。补充图中参数说明:
ASM服务对应的实际服务名为DmASMSvrServiceASM。
数据库服务对应的实际服务名为DmServiceDSC。
DMDCR_ASM_RESTART_INTERVAL和DMDCR_DB_RESTART_INTERVAL参数分别表示ASM、DB故障重启检测间隔,即表示 CSS每隔多少秒检查一次对应的服务状态,如果检测到故障则触发重启。
4.2排查方法
(1)将配置文件内容与运维手册模板进行逐行逐字符比对,特别是要关注大小写和空格。
(2)查看报错信息,如果有报错码则在dm管理工具中SELECT * from V$err_info查看错误码对应的含义。
(3)使用grep搜索:在配置文件中搜索关键参数名,确认是否存在拼写错误。
文章
阅读量
获赞
