达梦DSC集群相关概念:
本文以实际操作,以及搭建过程中避坑为主~
目录
(node1 作为服务端 node2 node3作为客户端)
11.使用 dmasmtool 工具创建 DMASM 磁盘组
1.添加用户
为了更好的管理用户与资源消耗,我们可以添加一个用户组专门处理达梦数据库.
#创建dinstall用户组
groupadd -g 1001 dinstall
#创建dmdba用户并添加到dinstall用户组
useradd -g dinstall -d /home/dmdba -s /bin/bash -m dmdba
#给dmdba用户添加密码
echo 'dameng123' | passwd --stdin dmdba
#创建/opt/dmdbms 未来达梦数据库的安装路径
mkdir -p /opt/dmdbms
#修改达梦数据库的安装路径的用户用户组权限
chown -R dmdba:dinstall /opt/dmdbms
2.使用root账户修改配置
vim /etc/security/limits.conf (因为后续安装达梦数据库时打开文件数量超过了默认值)
#配置文件末尾添加
dmdba soft nofile 65536
dmdba hard nofile 65536
ulimit -a 查看dmdba用户是否打开文件数设置成功
3.关闭防火墙
#检查防火墙状态
firewall-cmd --state
#停止并禁用防火墙
systemctl stop firewalld
systemctl disable firewalld
4.解压安装包,挂载镜像文件
官网下载地址如下,可根据自己情况选择对应的cpu架构和操作系统
下载后将下载的iso文件上传到服务器,挂载并进行安装
#将/opt/software/dm8 路径下的iso文件 挂载到/mnt路径下
mount -o loop /opt/software/dm8/dm8_20230418_x86_rh6_64.iso /mnt
cd /mnt
ll
总用量 1069534
-r-xr-xr-x. 1 root root 2909114 4月 18 13:20 DM8 Install.pdf
-r-xr-xr-x. 1 root root 1092293558 4月 18 13:23 DMInstall.bin
#执行安装
./DMInstall.bin -i
请选择安装语言(C/c:中文 E/e:英文) [C/c]:C
解压安装程序.........
欢迎使用达梦数据库安装程序
是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:
请输入Key文件的路径地址 [dm.key]:
请输入key文件路径!
是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n
是否设置时区? (Y/y:是 N/n:否) [Y/y]:Y
设置时区:
[ 1]: GTM-12=日界线西
[ 2]: GTM-11=萨摩亚群岛
[ 3]: GTM-10=夏威夷
[ 4]: GTM-09=阿拉斯加
[ 5]: GTM-08=太平洋时间(美国和加拿大)
[ 6]: GTM-07=亚利桑那
[ 7]: GTM-06=中部时间(美国和加拿大)
[ 8]: GTM-05=东部部时间(美国和加拿大)
[ 9]: GTM-04=大西洋时间(美国和加拿大)
[10]: GTM-03=巴西利亚
[11]: GTM-02=中大西洋
[12]: GTM-01=亚速尔群岛
[13]: GTM=格林威治标准时间
[14]: GTM+01=萨拉热窝
[15]: GTM+02=开罗
[16]: GTM+03=莫斯科
[17]: GTM+04=阿布扎比
[18]: GTM+05=伊斯兰堡
[19]: GTM+06=达卡
[20]: GTM+07=曼谷,河内
[21]: GTM+08=中国标准时间
[22]: GTM+09=汉城
[23]: GTM+10=关岛
[24]: GTM+11=所罗门群岛
[25]: GTM+12=斐济
[26]: GTM+13=努库阿勒法
[27]: GTM+14=基里巴斯
请选择设置时区 [21]:21
安装类型:
1 典型安装
2 服务器
3 客户端
4 自定义
请选择安装类型的数字序号 [1 典型安装]:1
所需空间: 1815M
请选择安装目录 [/opt/dmdbms]:/opt/module/dm8
可用空间: 11G
是否确认安装路径(/opt/module/dm8)? (Y/y:是 N/n:否) [Y/y]:y
安装前小结
安装位置: /opt/module/dm8
所需空间: 1815M
可用空间: 11G
版本信息:
有效日期:
安装类型: 典型安装
是否确认安装? (Y/y:是 N/n:否):y
请选择安装语言(C/c:中文 E/e:英文) [C/c]:C
解压安装程序.........
欢迎使用达梦数据库安装程序
是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:
请输入Key文件的路径地址 [dm.key]:
请输入key文件路径!
是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n
是否设置时区? (Y/y:是 N/n:否) [Y/y]:Y
设置时区:
[ 1]: GTM-12=日界线西
[ 2]: GTM-11=萨摩亚群岛
[ 3]: GTM-10=夏威夷
[ 4]: GTM-09=阿拉斯加
[ 5]: GTM-08=太平洋时间(美国和加拿大)
[ 6]: GTM-07=亚利桑那
[ 7]: GTM-06=中部时间(美国和加拿大)
[ 8]: GTM-05=东部部时间(美国和加拿大)
[ 9]: GTM-04=大西洋时间(美国和加拿大)
[10]: GTM-03=巴西利亚
[11]: GTM-02=中大西洋
[12]: GTM-01=亚速尔群岛
[13]: GTM=格林威治标准时间
[14]: GTM+01=萨拉热窝
[15]: GTM+02=开罗
[16]: GTM+03=莫斯科
[17]: GTM+04=阿布扎比
[18]: GTM+05=伊斯兰堡
[19]: GTM+06=达卡
[20]: GTM+07=曼谷,河内
[21]: GTM+08=中国标准时间
[22]: GTM+09=汉城
[23]: GTM+10=关岛
[24]: GTM+11=所罗门群岛
[25]: GTM+12=斐济
[26]: GTM+13=努库阿勒法
[27]: GTM+14=基里巴斯
请选择设置时区 [21]:21
安装类型:
1 典型安装
2 服务器
3 客户端
4 自定义
请选择安装类型的数字序号 [1 典型安装]:1
所需空间: 1815M
请选择安装目录 [/opt/dmdbms]:/opt/module/dm8
可用空间: 11G
是否确认安装路径(/opt/module/dm8)? (Y/y:是 N/n:否) [Y/y]:y
安装前小结
安装位置: /opt/module/dm8
所需空间: 1815M
可用空间: 11G
版本信息:
有效日期:
安装类型: 典型安装
是否确认安装? (Y/y:是 N/n:否):y
安装前小结
安装位置: /opt/module/dm8
所需空间: 1815M
可用空间: 11G
版本信息:
有效日期:
安装类型: 典型安装
是否确认安装? (Y/y:是 N/n:否):y
2023-10-10 09:21:48
[INFO] 安装达梦数据库...
2023-10-10 09:21:48
[INFO] 安装 基础 模块...
2023-10-10 09:21:55
[INFO] 安装 服务器 模块...
2023-10-10 09:21:56
[INFO] 安装 客户端 模块...
2023-10-10 09:22:02
[INFO] 安装 驱动 模块...
2023-10-10 09:22:04
[INFO] 安装 手册 模块...
2023-10-10 09:22:05
[INFO] 安装 服务 模块...
2023-10-10 09:22:06
[INFO] 移动日志文件。
2023-10-10 09:22:06
[INFO] 正在启动DmAPService服务...
2023-10-10 09:22:07
[INFO] 启动DmAPService服务成功。
2023-10-10 09:22:07
[INFO] 安装达梦数据库完成。
安装达梦数据库后此时一定不要进行数据库初始化!!!
5.创建共享磁盘
(node1 作为服务端 node2 node3作为客户端)
以node1上的/dev/sdb磁盘为例进行演示
step1:对node1上的/dev/sdb磁盘进行分区
#使用fdisk命令 对/dev/vdb磁盘进行分区
fdisk /dev/vdb
依次输入 n > p > 1 回车> +50G >回车,完成第一块磁盘划分 #log(未来存放达梦数据库的联机日志)
依次输入 n > p > 2 回车> +50G >回车,完成第二块磁盘划分 #voting disk(未来存放集群活动信息)
依次输入 n > p > 3 回车> +1T >回车,完成第三块磁盘划分 #data(未来存放达梦数据库的数据)
依次输入 n > p > 4 回车> +50G >回车,完成第四块磁盘划分 #DCR (未来存放集群成员信息)
使用iscsi技术进行node1节点磁盘的共享操作(相关iscsi概念后续会详细讲解,本章仅操作演示)
step2:node1服务端节点相关操作
#下载target工具
[root@server ~]# yum -y install targetcli
#设置开机自启
[root@server ~]# systemctl enable target
#开启target服务
[root@server ~]# systemctl start target
#进入target客户端
[root@server ~]# targetcli
#查看当前target客户端内的内容
/> ls
o- / ..................................................................... [...]
o- backstores .......................................................... [...]
| o- block .............................................. [Storage Objects: 0]
| o- fileio ............................................. [Storage Objects: 0]
| o- pscsi .............................................. [Storage Objects: 0]
| o- ramdisk ............................................ [Storage Objects: 0]
o- iscsi ........................................................ [Targets: 0]
o- loopback ..................................................... [Targets: 0]
#1.进入/backstores/block路径 创建后端存储
/backstores/block create dev=/dev/vdb name=dm
#2.进入/iscsi/路径 创建target标签 iqn.xxxx-xx是固定格式 后面的域名反写可随意更改
/> iscsi/ create iqn.2023-10.com.dm
#3.进行lun关联(将第一步的存储后端添加到标签中)
/> iscsi/iqn.2023-10.com.dm/tpg1/luns create /backstores/block/dm
#4.新建 ACL (相当于客户端识别node1节点的密令)
/> iscsi/iqn.2023-10.com.dm/tpg1/acls create iqn.2023-10.com.dm:client
#5.设置iSCSI服务端的监听IP地址和端口号(默认的0.0.0.0代表服务端所有ip可以提供对外被监听的服务,删除后可根据实际情况更改)
/> iscsi/iqn.2023-10.com.dm/tpg1/portals/ delete 0.0.0.0 3260
Deleted network portal 0.0.0.0:3260
/> iscsi/iqn.2023-10.com.dm/tpg1/portals/ create 172.25.234.16
#6.退出
/> exit
Global pref auto_save_on_exit=true
Configuration saved to /etc/target/saveconfig.json
# 如果配置错误可清空tartgetcli配置 ###非操作步骤
clearconfig confirm=True
# 重启target服务
[root@server ~]# systemctl restart target
# 设置target服务开机启动
[root@server ~]# systemctl enable target
# 关闭防火墙
[root@server ~]# systemctl stop firewalld.service
Using default IP port 3260
step3:node2、node3客户端节点相关操作
#安装iscsi-initiator-utils
[root@client ~] yum install -y iscsi-initiator-utils
#编辑配置文件 /etc/iscsi/initiatorname.iscsi,修改名称为服务端中客户端密令的名字
[root@client ~]# vi /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2023-06.com.dm:client
[root@CentOS7-NTP ~]# sudo systemctl status iscsid ##查看iscsi服务状态
[root@CentOS7-NTP ~]# sudo systemctl restart iscsid ##启动iscsi服务
[root@CentOS7-NTP ~]# sudo systemctl enable iscsid ##设置iscsi服务开机启动
# 发现共享设备 172.25.234.16为服务端ip
sudo iscsiadm -m discovery -t st -p 172.25.234.16
# 连接共享设备 iqn.2023-10.com.dm 为服务端设置的target
sudo iscsiadm -m node -T iqn.2023-10.com.dm -p 172.25.234.16 -l
Logging in to [iface: default, target: iqn.2023-10.com.dfjx:client, portal: 192.168.75.102,3260] (multiple)
Login to [iface: default, target: iqn.2023-10.com.dfjx:client, portal: 192.168.75.102,3260] successful.
#设置开机自动挂载 iqn.2023-10.com.dm 为服务端设置的target
iscsiadm -m node -T iqn.2023-10.com.dm -p 172.25.234.16:3260 --op update -n node.startup -v automatic
配置好客户端之后 发现 -> 登录连接 ->设置开机后自动连接,可在node1和node2上使用fdisk -l
或者lsblk命令来查看客户端是否已经共享到node1节点的磁盘
6.UDEV裸设备绑定
使用UDEV进行共享磁盘本地裸设备绑定,是因为磁盘名会因为节点不同按顺序命名,如果不固定下来后续配置文件会出现混乱
#将共享磁盘绑定裸设备
vi /etc/udev/rules.d/60-raw.rules
(这个是centos7的udev配置路径,其他的可自行查询)
#两台节点都要执行
ACTION=="add", KERNEL=="vdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="vdb2", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="vdb3", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="vdb4", RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", KERNEL=="raw[1-4]", OWNER="damdba", GROUP="dinstall", MODE="660"
[root@loaclhost ~]# vi /etc/rc.local
追加以下内容:
chown dmdba.dinstall /dev/raw/raw*
#重启udev服务
sudo udevadm control --reload-rules
sudo systemctl restart systemd-udev-trigger.service
#重启客户端节点
[root@loaclhost ~]# reboot
#查看绑定的裸设备大小,如果可以查看到则说明绑定成功
sudo blockdev --getsize64 /dev/raw/raw* 命令查看裸设备大小
7.配置dmdcr_cfg.ini
vi /opt/dmdbms/config/dmdcr_cfg.ini
#根据实际情况修改ip和路径,两节点都需要配置
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 = 172.25.234.13
DCR_EP_PORT = 9341
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 172.25.234.18
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 = 172.25.234.13
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 = 172.25.234.18
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
8.创建ASM磁盘
#使用 DMASMCMD 工具初始化(一个节点执行) #最大磁盘的给数据
#在/opt/dmdbms/bin下执行
./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 '/opt/dmdbms/config/dmdcr_cfg.ini' identified by 'dm123'
init votedisk '/dev/raw/raw2' from '/opt/dmdbms/config/dmdcr_cfg.ini'
9.配置dmasvrmal.ini
#两客户端节点都需要执行,MAL是ASM集群的通讯配置
vi /opt/dmdbms/config/dmasvrmal.ini
[MAL_INST1]
MAL_INST_NAME = ASM0
MAL_HOST = 172.25.234.13
MAL_PORT = 7236
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 172.25.234.18
MAL_PORT = 7236
10.配置dmdcr.ini配置文件
两客户端节点都需要配置
node1配置
vi /opt/dmdbms/config/dmdcr.ini
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/opt/dmdbms/config/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 0 #0为节点一
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 0 #默认为0,不自动拉起ASM,可设置自动拉起秒数
DMDCR_ASM_STARTUP_CMD = /opt/dmdbms/bin/dmasmsvr dcr_ini=/opt/dmdbms/config/dmdcr.ini
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 0 #默认为0,不自动拉起DB,可设置自动拉起秒数
DMDCR_DB_STARTUP_CMD = /opt/dmdbms/bin/dmserver path=/opt/dmdbms/config/dsc0_config/dm.ini dcr_ini=/dmdata/dmdcr.ini
node2配置
vi /opt/dmdbms/config/dmdcr.ini
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/opt/dmdbms/config/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 1 #1为节点2
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 0 #默认为0,不自动拉起ASM,可设置自动拉起秒数
DMDCR_ASM_STARTUP_CMD = /opt/dmdbms/bin/dmasmsvr dcr_ini=/opt/dmdbms/config/dmdcr.ini
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 0 #默认为0,不自动拉起DB,可设置自动拉起秒数
DMDCR_DB_STARTUP_CMD = /opt/dmdbms/bin/dmserver path=/opt/dmdbms/config/dsc1_config/dm.ini dcr_ini=/dmdata/dmdcr.ini
11.启动CSS服务和ASM服务
#方式一:没有配置自动拉起
#手动启动CSS服务,两节点分别执行
./dmcss DCR_INI=/opt/dmdbms/config/dmdcr.ini
#手动启动CASM服务,两节点分别执行
./dmasmsvr DCR_INI=/opt/dmdbms/config/dmdcr.ini
#方式二:配置了自动拉起
# 两节点分别执行CSS服务启动命令,ASM服务和DB会自动拉起
./dmcss DCR_INI=/opt/dmdbms/config/dmdcr.ini
CSS下 show 看到CSS和ASM 状态为working即为成功
11.使用 dmasmtool 工具创建 DMASM 磁盘组
#选择一个节点执行
./dmasmtool DCR_INI=/opt/dmdbms/config/dmdcr.ini
create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'
create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'
12.配置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/raw/raw1 #dcr 磁盘路径,目前不支持 asm,只能是裸设备
dcr_seqno = 0
auto_overwrite = 1
charset =0 #字符集为 GBK
case_sensitive = 1 #大小写敏感
page_size =32
[DSC0] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
config_path = /opt/dmdbms/config/dsc0_config
port_num = 5236
mal_host = 172.25.234.13
mal_port = 9236
log_path = +/opt/dmdbms/config/dsc0_log01.log
log_path = +/opt/dmdbms/config/dsc0_log02.log
[DSC1] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
config_path = /opt/dmdbms/config/dsc1_config
port_num = 5236
mal_host = 172.25.234.18
mal_port = 9236
log_path = +/opt/dmdbms/config/dsc1_log01.log
log_path = +/opt/dmdbms/config/dsc1_log02.log
13.选择一个节点,启动 dminit 工具初始化数据库。
./dminit control=/opt/dmdbms/config/dminit.ini
dminit 执行完成后,生成两个(/dmdata/dsc0_config 和/dmdata/dsc1_config)配置文件 ,将/data/dsc1_config 目录拷贝到另外一个节点相同目录下
scp -r /opt/dmdbms/config/dsc1_config/ shtxjyz@172.25.234.18:/opt/dmdbms/config
14.启动达梦
node1节点启动 dmserver
./dmserver /opt/dmdbms/config/dsc0_config/dm.ini dcr_ini=/opt/dmdbms/config/dmdcr.ini
node2节点启动 dmserver
./dmserver /opt/dmdbms/config/dsc1_config/dm.ini dcr_ini=/opt/dmdbms/config/dmdcr.ini
15.测试
(1)任意一节点登录数据库,select * from v$dsc_ep_info;查看集群状态
(2)再css下输入show查看个集群工作状态