达梦DMDSC集群搭建

介绍

DM 共享存储数据库集群的英文全称 DM Data Shared Cluster ,简称 DMDSC

DM 共享存储数据库集群,允许多个数据库实例同时访问、操作同一数据库,具有高可用、高性能、负载均衡等特性。 DMDSC 支持故障自动切换和故障自动重加入,某一个数据库实例故障后,不会导致数据库服务无法提供。

系统结构图:

前期准备

两台服务器、每台服务器至少 2 块网卡、内存至少 2GB 、三块共享存储磁盘、提前安装 dm 软件。

网络配置

###public 
192.168.31.200 dsc01
192.168.31.58  dsc02
###priv
192.168.33.200 dsc01-priv
192.168.33.58  dsc02-priv

存储配置

fdisk -l
Disk /dev/sde: 2147 MB, 2147483648 bytes, 4194304 sectors
Disk /dev/sdf: 2147 MB, 2147483648 bytes, 4194304 sectors
Disk /dev/sdg: 2147 MB, 2147483648 bytes, 4194304 sectors
Disk /dev/sdh: 10.7 GB, 10737418240 bytes, 20971520 sectors

存储规划

VOTE 2G  /dev/sde---/dev/dm/asm-diske 
DCR  2G  /dev/sdf---/dev/dm/asm-diskf
ARCH 2G  /dev/sdg---/dev/dm/asm-diskg
DATA 10G /dev/sdh---/dev/dm/asm-diskh

磁盘绑定

如没有配置多路径,采用 UUID 绑定多个 LUN 存储,可以通过 fdisk -l 命令查看 LUN 设备,这里以共享存储盘为 sde sdf sdg sdh 为例。

绑定设备的 UUID 。创建 uuid.sh 文件,使用脚本生成配置文件。

ls /etc/udev/rules.d/88-dm-asmdevices.rules

for i in e f g h;
do
echo "KERNEL==\"sd?\",SUBSYSTEM==\"block\", PROGRAM==\"/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name\",RESULT==\"`/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i`\", SYMLINK+=\"dm/asm-disk$i\",OWNER=\"dmdba\", GROUP=\"dinstall\",MODE=\"0660\"" >> /etc/udev/rules.d/88-dm-asmdevices.rules
done

脚本执行成功后,会生成绑定配置文件 88-dm-asmdevices.rules ,可以根据自己的需求进行修改别名 SYMLINK ,本文档修改如下:

cat /etc/udev/rules.d/88-dm-asmdevices.rules
KERNEL=="sd?",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="1ATA_VBOX_HARDDISK_VB4bbc185c-adebce47", SYMLINK+="dm/asm-diske",OWNER="dmdba", GROUP="dinstall",MODE="0660"
KERNEL=="sd?",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="1ATA_VBOX_HARDDISK_VB5286a6b0-e686bf8e", SYMLINK+="dm/asm-diskf",OWNER="dmdba", GROUP="dinstall",MODE="0660"
KERNEL=="sd?",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="1ATA_VBOX_HARDDISK_VB45416f69-4a1e1728", SYMLINK+="dm/asm-diskg",OWNER="dmdba", GROUP="dinstall",MODE="0660"
KERNEL=="sd?",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="1ATA_VBOX_HARDDISK_VBc8102a7b-c9fec5b3", SYMLINK+="dm/asm-diskh",OWNER="dmdba", GROUP="dinstall",MODE="0660"

配置部署文件。生成配置文件后,把 88-dm-asmdevices.rules 配置文件 cp DSC 的每个节点上。

检查生效。

1 )重启服务器,建议使用该方法。

2 )如果无法重启,执行下述命令。

udevadm control --reload-rules
systemctl restart systemd-udev-trigger.service

[root@dsc01 ~]# ls -lrth /dev/dm/asm-disk*
lrwxrwxrwx 1 root root 6 Dec  8 15:01 /dev/dm/asm-diske -> ../sde
lrwxrwxrwx 1 root root 6 Dec  8 15:01 /dev/dm/asm-diskh -> ../sdh
lrwxrwxrwx 1 root root 6 Dec  8 15:01 /dev/dm/asm-diskf -> ../sdf
lrwxrwxrwx 1 root root 6 Dec  8 15:01 /dev/dm/asm-diskg -> ../sdg

3 )授权

chown  dmdba:dinstall /dev/dm/asm-* -R

4 )检查生效

blockdev --getsize64 /dev/dm/asm-diske
blockdev --getsize64 /dev/dm/asm-diskh
blockdev --getsize64 /dev/dm/asm-diskf
blockdev --getsize64 /dev/dm/asm-diskg

结果如下

[root@dsc01 ~]# blockdev --getsize64 /dev/dm/asm-diske
2147483648
[root@dsc01 ~]# blockdev --getsize64 /dev/dm/asm-diskh
10737418240
[root@dsc01 ~]# blockdev --getsize64 /dev/dm/asm-diskf
2147483648
[root@dsc01 ~]# blockdev --getsize64 /dev/dm/asm-diskg
2147483648

配置 dmdcr_cfg.ini

dsc01 dsc02 机器配置相同。

[dmdba@dsc01 ~]$ mkdir /dm/dmdbms/dsc_config
vi /dm/dmdbms/dsc_config/dmdcr_cfg.ini
DCR_N_GRP                 = 3     ##集群环境有多少个 GROUP,范围:1~16
DCR_VTD_PATH               = /dev/dm/asm-diske   ##规划为 vote 的磁盘
DCR_OGUID        = 210715   ## 消息标识,一个组里面只有一个。
 
[GRP]  #新建一个 GROUP
  DCR_GRP_TYPE             = CSS  ##组类型(CSS/ASM/DB)
  DCR_GRP_NAME           = GRP_CSS  ##组名
  DCR_GRP_N_EP            = 2  ##组内节点个数
  DCR_GRP_DSKCHK_CNT     = 65  ##磁盘心跳容错时间,单位:秒
[GRP_CSS]
  DCR_EP_NAME             = CSS0   ##CSS 节点名
  DCR_EP_HOST              = 192.168.33.200   ##心跳地址
  DCR_EP_PORT              = 11286   ##CSS 端口
[GRP_CSS]
  DCR_EP_NAME            = CSS1
  DCR_EP_HOST             = 192.168.33.58
  DCR_EP_PORT             = 11286
 
[GRP]
  DCR_GRP_TYPE              = ASM
  DCR_GRP_NAME           = GRP_ASM
  DCR_GRP_N_EP             = 2
  DCR_GRP_DSKCHK_CNT     = 61
[GRP_ASM]
  DCR_EP_NAME   = ASM0  ##ASM 节点名,和 dmasvrmal 的 MAL_INST_NAME 一致
  DCR_EP_SHM_KEY         = 42424  ##共享内存标识
  DCR_EP_SHM_SIZE        = 1024  ##共享内存大小
  DCR_EP_HOST               = 192.168.33.200  ##心跳地址
  DCR_EP_PORT               = 11276  ##ASM 端口
  DCR_EP_ASM_LOAD_PATH   = /dev/dm
[GRP_ASM]
  DCR_EP_NAME              = ASM1
  DCR_EP_SHM_KEY         = 42425
  DCR_EP_SHM_SIZE        = 1024
  DCR_EP_HOST               = 192.168.33.58
  DCR_EP_PORT               = 11277
  DCR_EP_ASM_LOAD_PATH   = /dev/dm
[GRP]
  DCR_GRP_TYPE              = DB
  DCR_GRP_NAME           = GRP_DSC
  DCR_GRP_N_EP             = 2
  DCR_GRP_DSKCHK_CNT     = 57
[GRP_DSC]
  DCR_EP_NAME             = DSC0  ##实例名,和 dm.ini 的 INSTANCE_NAME 一致
  DCR_EP_SEQNO           = 0  ##组内序号,不能重复
  DCR_EP_PORT              = 5237  ##实例端口,和 dm.ini 的 PORT_NUM 一致
  DCR_CHECK_PORT       = 11256   ##DCR 检查端口
[GRP_DSC]
  DCR_EP_NAME             = DSC1
  DCR_EP_SEQNO           = 1
  DCR_EP_PORT              = 5237
  DCR_CHECK_PORT       = 11257

初始化磁盘组

dsc01 机器上进行如下操作。

/dm/dmdbms/bin/dmasmcmd
ASM>create votedisk '/dev/dm/asm-diske' 'vote'
ASM>create dcrdisk '/dev/dm/asm-diskf' 'dcr'
ASM>init dcrdisk '/dev/dm/asm-diskf' from '/dm/dmdbms/dsc_config/dmdcr_cfg.ini' identified by 'hust4400'
ASM>init votedisk '/dev/dm/asm-diske' from '/dm/dmdbms/dsc_config/dmdcr_cfg.ini'
ASM>create asmdisk '/dev/dm/asm-diskh' 'DATA0'
ASM>create asmdisk '/dev/dm/asm-diskg' 'ARCH0'

配置 dmasvrmal.ini

vi /dm/dmdbms/dsc_config/dmasvrmal.ini
[MAL_INST0]
MAL_INST_NAME            = ASM0
MAL_HOST                  = 192.168.33.200  #心跳地址
MAL_PORT                  = 11266  #MAL 监听端口
[MAL_INST1]
MAL_INST_NAME            = ASM1
MAL_HOST                  = 192.168.33.58
MAL_PORT                  = 11266

配置 dmdcr.ini 文件

dsc01 机器配置 dmdcr.ini dmdcr_seqo 0

vi /dm/dmdbms/dsc_config/dmdcr.ini
DMDCR_PATH                   = /dev/dm/asm-diskf
DMDCR_MAL_PATH           = /dm/dmdbms/dsc_config/dmasvrmal.ini
DMDCR_SEQNO                  = 0
DMDCR_AUTO_OPEN_CHECK        = 111
DMDCR_ASM_TRACE_LEVEL        = 2
 
##DMDCR_ASM_RESTART_INTERVAL   = 60  #CSS 认定 ASM 故障重启的时间
##DMDCR_ASM_STARTUP_CMD     = /dm/dmdbms/dsc_config/DmAsmService_DSC0 start
##DMDCR_DB_RESTART_INTERVAL    = 60   ##CSS 认定 DSC 故障重启的时间,设置为 0 不自动拉起
##DMDCR_DB_STARTUP_CMD      = /dm/dmdbms/dsc_config/DmService_DSC0 start

dsc02 机器配置 dmdcr.inidmdcr_seqo 1

vi /dm/dmdbms/dsc_config/dmdcr.ini
DMDCR_PATH                   = /dev/dm/asm-diskf
DMDCR_MAL_PATH               = /dm/dmdbms/dsc_config/dmasvrmal.ini
DMDCR_SEQNO                  = 1
DMDCR_AUTO_OPEN_CHECK        = 111
DMDCR_ASM_TRACE_LEVEL        = 2
 
##DMDCR_ASM_RESTART_INTERVAL   = 60
##DMDCR_ASM_STARTUP_CMD        = /dm/dmdbms/dsc_config/DmAsmServiceDSC1 start
##DMDCR_DB_RESTART_INTERVAL    = 60   
##DMDCR_DB_STARTUP_CMD         = /dm/dmdbms/dsc_config/DmServiceDSC1 start

注意

当前为手动拉起 dsc01 机器和 dsc02 机器的 ASM DMSERVER 服务。待集群配置完成后,再修改为自动拉起(删除 dmdcr.ini 中的“ ## ”号即可)。

启动 DMCSS DMASM 服务

2 个节点分别启动 dmcss 命令:

前台启动,执行 ctrl+c 后服务会退出

/dm/dmdbms/bin/dmcss DCR_INI=/dm/dmdbms/dsc_config/dmdcr.ini

2 个节点分别启动 dmasmsvr 命令:

前台启动,执行 ctrl+c 后服务会退出

/dm/dmdbms/bin/dmasmsvr DCR_INI=/dm/dmdbms/dsc_config/dmdcr.ini

创建 ASM

## dsc01 节点启动 dmasmtool 工具

/dm/dmdbms/bin/dmasmtool DCR_INI=/dm/dmdbms/dsc_config/dmdcr.ini

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

## 创建数据磁盘组

ASM> create diskgroup 'DMDATA' asmdisk '/dev/dm/asm-diskh'

## 创建归档磁盘组

ASM> create diskgroup 'DMARCH' asmdisk '/dev/dm/asm-diskg'

初始化 DB 环境

dsc01 dsc02 机器配置相同。

创建 dminit.ini 文件

[dmdba@~]# vi /dm/dmdbms/dsc_config/dminit.ini
DB_NAME                  = DSC
SYSDBA_PWD               = 1
SYSTEM_PATH              = +DMDATA/data
SYSTEM                   = +DMDATA/data/SYSTEM.dbf
SYSTEM_SIZE              = 300
ROLL                     = +DMDATA/data/ROLL.dbf
ROLL_SIZE                = 300
MAIN                     = +DMDATA/data/MAIN.dbf
MAIN_SIZE                = 300
CTL_PATH                 = +DMDATA/data/dm.ctl
CTL_SIZE                 = 8
LOG_SIZE                 = 300
DCR_PATH                 = /dev/dm/asm-diskf
DCR_SEQNO                = 0
AUTO_OVERWRITE           = 1
PAGE_SIZE                = 32
EXTENT_SIZE              = 16
BLANK_PAD_MODE           = 1
 
[DSC0]
CONFIG_PATH              = /dm/dmdbms/dsc_config/DCS0
PORT_NUM                 = 5237
MAL_HOST                 = 192.168.33.200
MAL_PORT                 = 11246
LOG_PATH                 = +DMDATA/DSC0_LOG01.log
LOG_PATH                 = +DMDATA/DSC0_LOG02.log
[DSC1]
CONFIG_PATH              = /dm/dmdbms/dsc_config/DCS1
PORT_NUM                 = 5237
MAL_HOST                 = 192.168.33.58
MAL_PORT                 = 11246
LOG_PATH                 = +DMDATA/DSC1_LOG01.log
LOG_PATH                 = +DMDATA/DSC1_LOG02.log

dsc01 节点执行初始化 db 命令

[dmdba@dsc01 dsc_config]$ /dm/dmdbms/bin/dminit control=/dm/dmdbms/dsc_config/dminit.ini
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2023-07-20
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
 
 log file path: +DMDATA/DSC0_LOG01.log
 
 log file path: +DMDATA/DSC0_LOG02.log
 
 log file path: +DMDATA/DSC1_LOG01.log
 
 log file path: +DMDATA/DSC1_LOG02.log
 
FILE "/dm/dmdbms/dsc_config/DCS0/dm.ini" has already existed
FILE "/dm/dmdbms/dsc_config/DCS0/sqllog.ini" has already existed
FILE "/dm/dmdbms/dsc_config/DCS1/dm.ini" has already existed
FILE "/dm/dmdbms/dsc_config/DCS1/sqllog.ini" has already existed
FILE "+DMDATA/data/SYSTEM.dbf" has already existed
FILE "+DMDATA/data/dm.ctl" has already existed
FILE "+DMDATA/DSC0_LOG01.log" has already existed
FILE "+DMDATA/DSC0_LOG02.log" has already existed
FILE "+DMDATA/DSC1_LOG01.log" has already existed
FILE "+DMDATA/DSC1_LOG02.log" has already existed
write to dir [+DMDATA/data/DSC].
create dm database success. 2022-12-08 17:52:12

拷贝文件到 dsc02 节点

scp -r /dm/dmdbms/dsc_config/DCS1 dmdba@192.168.33.58:/dm/dmdbms/dsc_config/

启动数据库

##dsc01 机器
/dm/dmdbms/bin/dmserver /dm/dmdbms/dsc_config/DCS0/dm.ini dcr_ini=/dm/dmdbms/dsc_config/dmdcr.ini
##dsc02 机器
/dm/dmdbms/bin/dmserver /dm/dmdbms/dsc_config/DCS1/dm.ini dcr_ini=/dm/dmdbms/dsc_config/dmdcr.ini

检查数据库

[dmdba@dsc01 ~]$ disql SYSDBA/Dameng123:5237
 
Server[LOCALHOST:5237]:mode is normal, state is open
login used time : 95.307(ms)
disql V8

检查集群

SQL> select * from V$dsc_ep_info;
 
LINEID     EP_NAME EP_SEQNO    EP_GUID              EP_TIMESTAMP         EP_MODE      EP_STATUS
---------- ------- ----------- -------------------- -------------------- ------------ ---------
1          DSC0    0           9684163              9684477              Control Node OK
2          DSC1    1           9725549              9725768              Normal Node  OK
 
used time: 468.386(ms). Execute id is 55000.

检查文件路径

SQL> select path from v$datafile;
 
LINEID     PATH                      
---------- --------------------------
1          +DMDATA/data/SYSTEM.dbf
2          +DMDATA/data/ROLL.dbf
3          +DMDATA/data/DSC/TEMP0.DBF
4          +DMDATA/data/MAIN.dbf
 
used time: 233.157(ms). Execute id is 55002.
 
SQL> select path from v$rlogfile;
 
LINEID     PATH                  
---------- ----------------------
1          +DMDATA/DSC0_LOG01.log
2          +DMDATA/DSC0_LOG02.log
 
used time: 272.908(ms). Execute id is 55005.

检查 实例

SQL> select name,instance_name,host_name from v$instance;
 
LINEID     NAME INSTANCE_NAME HOST_NAME
---------- ---- ------------- ---------
1          DSC0 DSC0          dsc01
 
used time: 822.051(ms). Execute id is 55100.
 
SQL> select name,instance_name,host_name from v$instance;
 
LINEID     NAME INSTANCE_NAME HOST_NAME
---------- ---- ------------- ---------
1          DSC1 DSC1          dsc02
 
used time: 17.985(ms). Execute id is 7.

检查 ASM

SQL> select group_id,group_name,TOTAL_SIZE from v$asmgroup;
 
LINEID     GROUP_ID    GROUP_NAME TOTAL_SIZE 
---------- ----------- ---------- -----------
1          0           DMDATA     10239
2          1           DMARCH     2047
3          125         VOTE       2048
4          126         DCR        2048
 
used time: 907.805(ms). Execute id is 55007.
 
SQL> select disk_name,disk_path from v$asmdisk;
 
LINEID     DISK_NAME  DISK_PATH        
---------- ---------- -----------------
1          DMASMDATA0 /dev/dm/asm-diskh
2          DMASMARCH0 /dev/dm/asm-diskg
3          DMASMvote  /dev/dm/asm-diske
4          DMASMdcr   /dev/dm/asm-diskf
 
used time: 433.907(ms). Execute id is 55008.
 
SQL> select * from V$ASMATTR;
 
LINEID     AU_SIZE     EXTENT_SIZE LOCAL_CODE LOCAL_LANG USE_SHM EXTENT_ARR_SIZE
---------- ----------- ----------- ---------- ---------- ------- ---------------
1          1048576     4           PG_GB18030 EN         TRUE    12351936
 
used time: 77.872(ms). Execute id is 55013.
 
SQL> select file_id,type,path from v$asmfile;
 
LINEID     FILE_ID              TYPE      PATH                    
---------- -------------------- --------- ------------------------
1          2147483649           DIRECTORY +DMDATA
2          2147483650           DIRECTORY +DMDATA/data
3          2147483651           DIRECTORY +DMDATA/data/DSC
4          2147483652           DIRECTORY +DMDATA/data/DSC/bak
5          2147483653           FILE      +DMDATA/data/dm.ctl
6          2147483679           FILE      +DMDATA/DSC0_LOG01.log
7          2147483680           FILE      +DMDATA/DSC0_LOG02.log
8          2147483681           FILE      +DMDATA/DSC1_LOG01.log
9          2147483682           FILE      +DMDATA/DSC1_LOG02.log
10         2147483661           FILE      +DMDATA/data/SYSTEM.dbf
11         2147483659           DIRECTORY +DMDATA/data/DSC/ctl_bak
12         2147483685           FILE      +DMDATA/data/MAIN.dbf
13         2147483662           FILE      +DMDATA/data/DSC/dm_service.prikey
14         2147483684           FILE      +DMDATA/data/DSC/ctl_bak/dm_20221208175156_758750.ctl
15         2147483686           FILE      +DMDATA/data/ROLL.dbf
16         2147483687           DIRECTORY +DMDATA/data/DSC/HMAIN
17         2147483688           FILE      +DMDATA/data/DSC/TEMP0.DBF
18         2147483689           FILE      +DMDATA/data/DSC/TEMP1.DBF
19         2147483692           FILE      +DMDATA/data/DSC/rep_conflict.log
20         2147483691           FILE      +DMDATA/data/DSC/ctl_bak/dm_20221208180445_380829.ctl
21         2147483694           FILE      +DMDATA/data/DSC/ctl_bak/dm_20221208180608_533426.ctl
22         2164260865           DIRECTORY +DMARCH
23         4244635649           DIRECTORY +VOTE
24         4244635650           FILE      +VOTE/VOTE
25         4261412865           DIRECTORY +DCR
26         4261412866           FILE      +DCR/DCR
 
26 rows got
 
used time: 485.758(ms). Execute id is 55009.

检查 DCR

SQL> select * from V$DCR_INFO;
 
LINEID     VERSION     N_GROUP     VTD_PATH          UDP_FLAG    UDP_OGUID            DCR_PATH         
---------- ----------- ----------- ----------------- ----------- -------------------- -----------------
1          259         3           /dev/dm/asm-diske 0           210715               /dev/dm/asm-diskf
 
used time: 923.717(ms). Execute id is 55010.
 
SQL> select * from  V$DCR_GROUP;
 
LINEID     GROUP_TYPE GROUP_NAME N_EP        DSKCHK_CNT  NETCHK_TIME
---------- ---------- ---------- ----------- ----------- -----------
1          CSS        GRP_CSS    2           65          0
2          ASM        GRP_ASM    2           61          0
3          DB         GRP_DSC    2           57          0
 
used time: 903.076(ms). Execute id is 55011.
 
 
SQL> select * from V$DCR_EP;
 
LINEID     GROUP_NAME EP_NAME EP_SEQNO    EP_HOST        EP_PORT     UDP_PORT    SHM_KEY     SHM_SIZE    ASM_LOAD_PATH
---------- ---------- ------- ----------- -------------- ----------- ----------- ----------- ----------- -------------
1          GRP_CSS    CSS0    0           192.168.33.200 11286       0           0           0           NULL
2          GRP_CSS    CSS1    1           192.168.33.58  11286       0           0           0           NULL
3          GRP_ASM    ASM0    0           192.168.33.200 11276       0           42424       1024        /dev/dm
4          GRP_ASM    ASM1    1           192.168.33.58  11277       0           42425       1024        /dev/dm
5          GRP_DSC    DSC0    0                          5237        0           0           0           NULL
6          GRP_DSC    DSC1    1                          5237        0           0           0           NULL
 
6 rows got

创建测试数据

SQL> create table t1(id int,time datetime);
executed successfully
used time: 535.329(ms). Execute id is 55016.
SQL> insert into t1 values(1,now());
affect rows 1
 
used time: 0.908(ms). Execute id is 55017.
 
SQL> commit;
executed successfully
used time: 502.314(ms). Execute id is 55019.
 
SQL> select * from t1;
 
LINEID     ID          TIME                      
---------- ----------- --------------------------
1          1           2022-12-08 18:24:26.540339
 
used time: 00:00:01.008. Execute id is 55018.

登录另一个节点,可以正常查到数据

[dmdba@dsc02 ~]$ disql SYSDBA/Dameng123:5237
SQL> select * from t1;
 
LINEID     ID          TIME                      
---------- ----------- --------------------------
1          1           2022-12-08 18:24:26.540339
 
used time: 00:00:03.320. Execute id is 2.

注册服务

注册 CSS ASM DMSERVER 后台服务,必须 root 用户执行

##dsc01 机器

/dm/dmdbms/script/root/dm_service_installer.sh -t dmcss -dcr_ini /dm/dmdbms/dsc_config/dmdcr.ini -p CSS
/dm/dmdbms/script/root/dm_service_installer.sh -t dmasmsvr -dcr_ini /dm/dmdbms/dsc_config/dmdcr.ini -y DmCSSServiceCSS.service -p ASM
/dm/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /dm/dmdbms/dsc_config/DCS0/dm.ini -dcr_ini /dm/dmdbms/dsc_config/dmdcr.ini -y DmASMSvrServiceASM.service -m open -p DSC

##dsc02 机器

/dm/dmdbms/script/root/dm_service_installer.sh -t dmcss -dcr_ini /dm/dmdbms/dsc_config/dmdcr.ini -p CSS
/dm/dmdbms/script/root/dm_service_installer.sh -t dmasmsvr -dcr_ini /dm/dmdbms/dsc_config/dmdcr.ini -y DmCSSServiceCSS.service -p ASM
/dm/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /dm/dmdbms/dsc_config/DCS1/dm.ini -dcr_ini /dm/dmdbms/dsc_config/dmdcr.ini -y DmASMSvrServiceASM.service -m open -p DSC

查看服务

[root@dsc01 ~]# systemctl list-unit-files |grep -E "DmA|DmCSS|DmS"
DmAPService.service                           enabled 
DmASMSvrServiceASM.service                    enabled 
DmCSSServiceCSS.service                       enabled 
DmServiceDSC.service                          enabled

集群启动和关闭

启动集群

启动 CSS

[root@dsc01 ~]# systemctl start DmCSSServiceCSS.service
[root@dsc02 ~]# systemctl start DmCSSServiceCSS.service

对应进程

[root@dsc01 ~]# ps -ef|grep -i dmc
dmdba    25475     1  0 18:51 ?        00:00:00 /dm/dmdbms/bin/dmcss dcr_ini=/dm/dmdbms/dsc_config/dmdcr.ini -noconsole

启动 ASM

[root@dsc01 ~]# systemctl start DmASMSvrServiceASM.service
[root@dsc02 ~]# systemctl start DmASMSvrServiceASM.service

对应进程

[root@dsc01 ~]# ps -ef|grep -i dmasm
dmdba    25612     1  2 18:53 ?        00:00:01 /dm/dmdbms/bin/dmasmsvr dcr_ini=/dm/dmdbms/dsc_config/dmdcr.ini -noconsole

启动数据库

[root@dsc01 ~]# systemctl start DmServiceDSC
[root@dsc02 ~]# systemctl start DmServiceDSC

对应进程

[root@dsc01 ~]# ps -ef|grep -i dms
dmdba    25875     1  1 18:55 ?        00:00:00 /dm/dmdbms/bin/dmserver path=/dm/dmdbms/dsc_config/DCS0/dm.ini dcr_ini=/dm/dmdbms/dsc_config/dmdcr.ini -noconsole

关闭集群

关闭数据库

[root@dsc01 ~]# systemctl stop DmServiceDSC
[root@dsc02 ~]# systemctl stop DmServiceDSC

关闭 ASM

[root@dsc01 ~]# systemctl stop DmASMSvrServiceASM.service
[root@dsc02 ~]# systemctl stop DmASMSvrServiceASM.service

关闭 CSS

[root@dsc01 ~]# systemctl stop DmCSSServiceCSS.service
[root@dsc02 ~]# systemctl stop DmCSSServiceCSS.service

其他操作

关闭服务自动启动

systemctl disable DmCSSServiceCSS.service
systemctl disable DmASMSvrServiceASM.service
systemctl disable DmServiceDSC
systemctl disable DmAPService.service
 
[root@dsc01 ~]# systemctl list-unit-files |grep -E "DmA|DmCSS|DmS"
DmAPService.service                           disabled
DmASMSvrServiceASM.service                    disabled
DmCSSServiceCSS.service                       disabled
DmServiceDSC.service                          disabled

删除服务

/dm/dmdbms/script/root/dm_service_uninstaller.sh -n DmCSSServiceCSS
/dm/dmdbms/script/root/dm_service_uninstaller.sh -n DmASMSvrServiceASM
/dm/dmdbms/script/root/dm_service_uninstaller.sh -n DmServiceDSC

故障处理

错误一:启动 CSS 服务失败

报错如下:

[dmdba@dsc01 ~]$ /dm/dmdbms/bin/dmcss DCR_INI=/dm/dmdbms/dsc_config/dmdcr.ini
/dm/dmdbms/bin/dmcss: error while loading shared libraries: libdmcalc.so: cannot open shared object file: No such file or directory

需要进到 /dm/dmdbms/bin/ 目录下执行,不能直接使用绝对路径

[dmdba@dsc01 bin]$ ./dmcss DCR_INI=/dm/dmdbms/dsc_config/dmdcr.ini
DMCSS V8
DMCSS IS READY
[2022-12-08 16:21:47:027] [CSS]: Set EP CSS0[0] as Control node

错误二:启动 ASM服务失败

报错如下:

[dmdba@dsc01 bin]$ /dm/dmdbms/bin/dmasmsvr DCR_INI=/dm/dmdbms/dsc_config/dmdcr.ini
ASM SELF EPNO:0
DMASMSVR V8
dmasmsvr task worker thread startup
shmget: Invalid argument
create share memory failed[code: -9728], please check shm config and try again, errno:[22]

需要调大 kernel.shmmax

[root@dsc01 mnt]# vi /etc/sysctl.conf
#kernel.shmmax = 858783744

调大 kernel.shmmax

[root@dsc01 mnt]# sysctl -p

错误三:创建数据库失败

报错如下:

[dmdba@dsc01 dsc_config]$ /dm/dmdbms/bin/dminit control=/dm/dmdbms/dsc_config/dminit.ini
......
write to dir [+DMDATA/data/DSC].
fsm_file_add group_id 4, file_id 0, size_in_pages 32768, path +DMDATA/data/MAIN.dbf failed, code -7004
Please check whether exist file or directory with the same name, code:[-7014]
You may get more details in file ../log/dm_DSC0_202212.log
fail to init db.

查看日志 ../log/dm_DSC0_202212.log ,空间不足了 , 减小参数文件里配置的数据文件大小,重新执行

2022-12-08 17:48:55.401 [ERROR] dminit P0000020632 T0000000000000020632  os_file_create_ex->os_asm_file_create: [path: +DMDATA/data/MAIN.dbf]: [CODE:-523] Out of space

错误四:达梦官方文档存在部分错误

1.2.8 初始化 DB 环境

## db0 节点执行初始化 db 命令

[dmdba@~]# vi /dm/dmdbms/bin/dminit control=/dm/dmdbms/dsc_config/init/dminit.ini

没有 vi

1.2.11 注册 CSS ASM DMSERVER 后台服务

[root@~]# /dm/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /dm/dmdbms/dsc_config/DSC0/dm.ini -dcr_ini /dm/dmdbms/dsc_config/dmdcr.ini -y DmASMSvrServiceASM.service -m -p DSC

这里的 -m 后需要接 mount open

参考文档

https://eco.dameng.com/document/dm/zh-cn/ops/DSC-installation-cluster.html
https://eco.dameng.com/document/dm/zh-cn/pm/dsc-monitor.html

###chenjuchao 20221208 20:25###

请使用浏览器的分享功能分享到微信等