ITPub博客

首页 > 数据库 > 国内数据库 > 达梦DMTDD透明分布式数据库部署测试

达梦DMTDD透明分布式数据库部署测试

原创 国内数据库 作者:鱼塘顽主 时间:2022-04-14 18:41:29 0 删除 编辑

DMTDD 部署测试记录

一、安装计划

DM 透明分布式数据库(DM Transparent Distributed Database,简称DMTDD),由计算层、日志层、存储层和目录服务器构成。其中,日志层(DRS、DRAS)、存储层(DSS)和目录服务器(DCS)的各组件共同构成分布式文件系统DFS。本次以“DFS+DMDSC”架构为例进行部署测试。

通过本次实验,加深对主备守护集群(DCS日志服务器集群)和DMDSC(共享存储集群)的认识,了解DFS分布式文件系统架构。

 

说明:为节省系统资源,快速部署测试环境,使用Centos+docker进行部署。

系统环境:CentOS_7 + Docker

数据库版本:dm8_20210712_x86_rh6_64_ent_8.1.2.38_pack1


openjdk-8u265容器镜像在docker hub官网下载。

config.rar : 自行到达梦官网下载软件安装包,将解压后的 DMInstall.bin文件放到mkdocker目录下


集群架构如图:                                              

 

网络规划:

172.18.0.10       DSC1       crm0 (实例)

172.18.0.11       DSC2       crm1 (实例)

172.18.0.20       DCS1

172.18.0.21       DCS1

172.18.0.30       DRS1

172.18.0.31       DRS2

172.18.0.32       DRAS

172.18.0.40       DSS1

172.18.0.41       DSS2

 

/DSC 系统路径规划


Linux 系统目录

映射Docker内路径

说明

1

/DSC/data1

dsc1 :/dm8/data

dsc1 数据库文件目录

2

/DSC/data2

dsc2 :/dm8/data

dsc2 数据库文件目录

3

/DSC/config

共享:/dm8/config

配置文件准备目录

 

/DCS 系统路径规划


Linux 系统目录

映射Docker内路径

说明

1

/DCS/dcs1/data

dcs1 :/dm8/data

dcs1 数据库文件目录

2

/DCS/dcs1/archlog

dcs1 :/dm8/archlog

归档目录 (好像未用到)

3

/DCS/dcs1/data

dcs2 :/dm8/data

dcs2 数据库文件目录

4

/DCS/dcs1/archlog

dcs2 :/dm8/archlog

归档目录

5

/DCS/backup

共享:/dm8/backup

备份目录

6

/DCS/config

共享:/dm8/config

配置文件准备目录

 

/DRS 系统路径规划


Linux 系统目录

映射Docker内路径

说明

1

/DRS/drs1

drs1 :/dm8/data

drs1 数据库文件目录

2

/DRS/drs1_archlog

drs1 :/dm8/archlog

本地归档目录

3

/DRS/drs2

drs2 :/dm8/data

drs2 数据库文件目录

4

/DRS/drs2_archlog

drs2 :/dm8/archlog

本地归档目录

5

/DRS/dras

dras :/dm8/data

dras 数据库文件目录

6

/DRS/config

共享:/dm8/config

配置文件准备目录

 

/DSS 系统路径规划


Linux 系统目录

映射Docker内路径

说明

1

/DSS/dss1

dss1 :/dm8/data

dss1 数据库文件目录

2

/DSS/dss2

dss1 :/dm8/archlog

dss2 数据库文件目录

 

 


 

二、部署目录服务器DCS

1 、启动两个DCS容器

 

# 创建内网网段

docker network ls

docker network create --subnet=172.18.0.0/16   mynetwork

 

# 启动镜像

docker run -it --name dcs1 --hostname   DCS1 --net mynetwork --ip 172.18.0.20 -v /DCS/config:/dm8/config -v   /DCS/dcs1/data:/dm8/data -v /DCS/dcs1/archlog:/dm8/archlog -v   /DCS/backup:/dm8/backup -d dem_dm8:v01 /bin/bash

 

docker run -it --name dcs2 --hostname   DCS2 --net mynetwork --ip 172.18.0.21 -v /DCS/config:/dm8/config -v   /DCS/dcs2/data:/dm8/data -v /DCS/dcs2/archlog:/dm8/archlog -v   /DCS/backup:/dm8/backup -d dem_dm8:v01 /bin/bash

 

 

2 、数据库初始化

 

# 进入容器

docker exec -it dcs1/2 bash

chown dmdba:dinstall -R /dm8/data   /dm8/archlog /dm8/backup /dm8/config

 

# 分别运行初始化脚本(详见《DM8数据库主备集群测试记录》)(两节点)

init_dcs1.sh

init_dcs2.sh

 

# 启动监视器查看主备集群状态

./dmmonitor /dm8/config/dmmonitor.ini

 

# 登录DCS1节点初始化dcs(主节点)

./disql SYSDBA/SYSDBA@172.18.0.20:5236

SP_DFS_DCS_INIT(1);    -- 初始化DCS环境

 

#DCS1 节点配置:

--1 、手动停止守护进程,修改dmwatcher.ini,添加DCS相关配置项

DCS_STARTUP_CMD = /dm8/bin/dmdcs

DCS_INI = server=localhost:5236   path=/dm8/data/dcs1/dcs.ini

DCS_PORT = 7778

 

 

--2 、配置dcs.ini,在dcs1节点的/dm8/data/dcs1目录配置dcs.ini

INSTANCE_NAME = dcs1

DW_PORT_NUM = 7778

 

#DCS2 节点配置:

--1 、手动停止守护进程,修改dmwatcher.ini,添加DCS相关配置项

DCS_STARTUP_CMD = /dm8/bin/dmdcs

DCS_INI = server=localhost:5236   path=/dm8/data/dcs2/dcs.ini

DCS_PORT = 7778

--2 、配置dcs.ini,在dcs2节点的/dm8/data/dcs2目录配置dcs.ini

INSTANCE_NAME = dcs2

DW_PORT_NUM = 7778

 

# 分别创建主备DCS的dcs.key(两节点)

su - dmdba

./dmdcs -init=1 USER=SYSDBA   PASSWORD=SYSDBA PATH=dcs.key

 

# 最后启动守护进程(两节点)

/etc/init.d/DmWatcherServiceDCS1   start

/etc/init.d/DmWatcherServiceDCS2   start

 

 

 

三、部署存储节点

创建存储层节点DSS1和DSS2

 

# 启动DSS1镜像

docker run -it --name dss1 --hostname   DSS1 --net mynetwork --ip 172.18.0.40 -v /DSS/dss1:/dm8/data -d dem_dm8:v01   /bin/bash

docker exec -it dss1 bash

 

# 在DSS1上初始化SS1并启动:

chown dmdba:dinstall -R /dm8/data

su - dmdba

cd /dm8/bin

./dmdssinit path=/dm8/data inst=SS1   port=35300 REGION_SIZE=2 DBF_SIZE=10240 RLOG_SIZE=128

./dmdss path=/dm8/data/SS1/dss.ini   &

 

 

# 启动DSS2镜像

docker run -it --name dss2 --hostname   DSS2 --net mynetwork --ip 172.18.0.41 -v /DSS/dss2:/dm8/data -d dem_dm8:v01   /bin/bash

 

# 在DSS1上初始化SS1并启动:

docker exec -it dss2 bash

chown dmdba:dinstall -R /dm8/data

su - dmdba

cd /dm8/bin

./dmdssinit path=/dm8/data inst=SS2   port=35300 REGION_SIZE=2 DBF_SIZE=10240 RLOG_SIZE=128

./dmdss path=/dm8/data/SS2/dss.ini   &

 

 

四、添加FD和在FD中添加DSS节点

1 、在/DCS/config中提前准备DMDFS1.INI文件,DCS的连接信息保存在DMDFS1.INI中。当dcs1出现故障无法连接时,dcstool会尝试连接dcs2执行命令。

#dmdfs1.ini 文件

[dcs1]

DFS_HOST = 172.18.0.20

DFS_PORT = 3333

[dcs2]

DFS_HOST = 172.18.0.21

DFS_PORT = 3333

 

2 、使用DMDCSTOOL工具链接到DCS(主)上,添加创建容灾域,并将存储节点添加到新建的容灾域中。

 

docker exec -it dcs1 bash

su - dmdba

cd /dm8/bin

./dmdcstool   dfs_ini=/dm8/config/dmdfs1.ini

 

add micro fault domain fd1

add micro storage server SS1   ('172.18.0.40' : 35300) in fd1

add micro fault domain fd2

add micro storage server SS2   ('172.18.0.41' : 35300) in fd2

alter storage server refresh size

alter storage server open

 

五、部署日志服务器DRS

“ 一主一备一DRAS”模式下,每个日志组包含一个主DRS、一个备DRS和一个DRAS。其中DRAS是可选模块。当主DRS发生故障时,备DRS可以接替主DRS继续提供服务。当备DRS出现异常时,DRAS接替备DRS继续接收来自主DRS的日志进行备份归档

 

 

1 、启动DRAS

docker run -it --name dras --hostname   DRAS --net mynetwork --ip 172.18.0.32 -v /DRS/config:/dm8/config -v   /DRS/dras:/dm8/data -d dem_dm8:v01 /bin/bash

docker exec -it dras bash

chown dmdba:dinstall -R /dm8/data   /dm8/config

su - dmdba

/dm8/bin/dmdras   PATH=/dm8/config/dras1.ini &

/dm8/bin/dmdras   PATH=/dm8/config/dras2.ini &

 

 

2 、启动DRS

docker run -it --name drs1 --hostname   DRS1 --net mynetwork --ip 172.18.0.30 -v /DRS/config:/dm8/config -v   /DRS/drs1:/dm8/data -v /DRS/drs1_archlog:/dm8/archlog -d dem_dm8:v01   /bin/bash

docker exec -it drs1 bash

chown dmdba:dinstall -R /dm8/data   /dm8/archlog /dm8/config

su - dmdba

/dm8/bin/dmdrs   path=/dm8/config/drs1_p.ini &

/dm8/bin/dmdrs   path=/dm8/config/drs2_p.ini &

 

docker run -it --name drs2 --hostname   DRS2 --net mynetwork --ip 172.18.0.31 -v /DRS/config:/dm8/config -v   /DRS/drs2:/dm8/data -v /DRS/drs2_archlog:/dm8/archlog -d dem_dm8:v01   /bin/bash

docker exec -it drs2 bash

chown dmdba:dinstall -R /dm8/data   /dm8/archlog /dm8/config

su - dmdba

/dm8/bin/dmdrs path=/dm8/config/drs1_s.ini   &

/dm8/bin/dmdrs   path=/dm8/config/drs2_s.ini &

 

 

 

六、添加Group日志组和在Group中添加DRS和DRAS

使用DMDCSTOOL工具连接到DCS(主)上,创建rlog日志组,将刚创建的DRS和DRAS节点添加到日志组当中。

 

docker exec -it dcs1 bash

su - dmdba

cd /dm8/bin

./dmdcstool dfs_ini=/dm8/config/dmdfs1.ini

-- 添加grp的数量与计算节点个数即数据库实例数对应

add group grp1

add rlog server DRS1_P ('172.18.0.30'   : 3330) group grp1 primary

add rlog server DRS1_S ('172.18.0.31'   : 3330) group grp1 standby

add rlog archivement server DRAS1   ('172.18.0.32' : 3330) group grp1

 

add group grp2

add rlog server DRS2_P ('172.18.0.30'   : 3331) group grp2 primary

add rlog server DRS2_S ('172.18.0.31'   : 3331) group grp2 standby

add rlog archivement server DRAS2   ('172.18.0.32' : 3331) group grp2

 

 

 

七、部署计算层

1 、启动DSC1和DSC2镜像

 

docker run -it -p 3526:35610 --name   dsc1 --hostname DSC1 --net mynetwork --ip 172.18.0.10 -v   /DSC/config:/dm8/config -v /DSC/data:/dm8/data -d dem_dm8:v01 /bin/bash

 

docker run -it -p 3527:35611 --name   dsc2 --hostname DSC2 --net mynetwork --ip 172.18.0.11 -v   /DSC/config:/dm8/config -v /DSC/data:/dm8/data -d dem_dm8:v01 /bin/bash

 

 

 

 

2 、使用dmasmcmd工具初始化dcr盘和vtd盘(单节点执行)

 

su - dmdba

cd /dm8/bin

./dmasmcmd   dfs_ini=/dm8/config/dmdfs.ini

#DMTDD 中的emptyfile、dcrdisk和votedisk均限制为32M,不支持SIZE取其他值

create emptyfile   '/dm8/data/dsc/asmdisks/dcr.asm' size 32

create emptyfile   '/dm8/data/dsc/asmdisks/vtd.asm' size 32

create dcrdisk   '/dm8/data/dsc/asmdisks/dcr.asm' 'dcr' 32

create votedisk   '/dm8/data/dsc/asmdisks/vtd.asm' 'vtd' 32

init dcrdisk '/dm8/data/dsc/asmdisks/dcr.asm'   from '/dm8/config/dmdcr_cfg.ini' identified by 'hust4400'

init votedisk   '/dm8/data/dsc/asmdisks/vtd.asm' from '/dm8/config/dmdcr_cfg.ini'

# 将本地文件系统中的库共享文件dcr/vtd存入RS

init ddfsdcr '$/asmdisks/dcr.asm'   from '/dm8/data/dsc/asmdisks/dcr.asm'

init ddfsvtd '$/asmdisks/vtd.asm'   from '/dm8/data/dsc/asmdisks/vtd.asm'

 

 

3 、初始化DS库

 

docker exec -it dsc1 bash

chown dmdba:dinstall -R /dm8/config   /dm8/data

su - dmdba

cd /dm8/bin

./dminit   control=/dm8/config/dminit.ini

 

#/dm8/data/dsc 路径下生成crm0和crm1目录,将crm1拷贝至dsc2节点

 

#1 、修改dmdfs.ini

-- 成功初始化DS库后,在/dm/data/dsc/crm0和/dm/data/dsc/crm1路径下会自动生成dmdfs.ini,其中配置的日志服务器的连接信息就是dminit.ini中指定的主DRS的信息。这里需要手动修改/dm/data/dsc/crm0/dmdfs.ini和/dm/data/dsc/crm1/dmdfs.ini,将主DRS的连接信息调整为DS所在日志组的主备DRS的信息。

 

DFS_COPY_NUM = 3

DFS_HB_INTERVAL = 60

DFS_SWITCH_TIMES = 5

DFS_SWITCH_INTERVAL = 2000

[drs1_p]

DFS_HOST = 172.18.0.30

DFS_PORT = 3330

[drs1_s]

DFS_HOST = 172.18.0.31

DFS_PORT = 3330

 

 

DFS_COPY_NUM = 3

DFS_HB_INTERVAL = 60

DFS_SWITCH_TIMES = 5

DFS_SWITCH_INTERVAL = 2000

[drs2_p]

DFS_HOST = 172.18.0.30

DFS_PORT = 3331

[drs2_s]

DFS_HOST = 172.18.0.31

DFS_PORT = 3331

 

#2 、配置dmdcr.ini

-- 在/dm8/data/dsc/下分crm0和crm1目录创建dmdcr.ini文件。

 

dmdcr0.ini :

DMDCR_PATH = $/asmdisks/dcr.asm

DMDCR_SEQNO = 0

#DB 重启参数,命令行方式启动

DMDCR_DB_RESTART_INTERVAL = 30

DMDCR_DB_STARTUP_CMD =   /dm8/bin/dmserver    path=/dm8/data/dsc/crm0/dm.ini dcr_ini=/dm8/data/dsc/crm0/dmdcr0.ini

 

 

dmdcr1.ini :

DMDCR_PATH = $/asmdisks/dcr.asm

DMDCR_SEQNO = 1

DMDCR_DB_RESTART_INTERVAL = 30

DMDCR_DB_STARTUP_CMD =   /dm8/bin/dmserver    path=/dm8/data/dsc/crm1/dm.ini dcr_ini=/dm8/data/dsc/crm1/dmdcr1.ini

 

 

 

 

4 、向DMTDD添加数据库服务器

 

# 启动dmdcstool,连接DCS:

docker exec -it dcs1 bash

su - dmdba

cd /dm8/bin

./dmdcstool   dfs_ini=/dm8/config/dmdfs1.ini

 

add data server crm0 group grp1   database db_dsc arch_dir '/dm8/data/dsc/arch_dsc0'

 

add data server crm1 group grp2   database db_dsc arch_dir '/dm8/data/dsc/arch_dsc1'

 

 

 

5 、启动DSC1和DSC2的css服务

 

# 启动CSS0

docker exec -it dsc1 bash

su - dmdba

cd /dm8/bin

./dmcss dcr_ini=/dm8/data/dsc/crm0/dmdcr0.ini   dfs_ini=/dm8/data/dsc/crm0/dmdfs.ini &

 

# 启动CSS1

docker exec -it dsc2 bash

su - dmdba

cd /dm8/bin

./dmcss   dcr_ini=/dm8/data/dsc/crm1/dmdcr1.ini dfs_ini=/dm8/data/dsc/crm1/dmdfs.ini   &

 

 

 

 


 

八、DMTDD测试记录

1 、故障记录

启动DSC时发现DSC1和DSC2节点的dmserver进程异常退出,分别查看DSC和DRS节点日志。

 

# 登录dsc1节点查看日志

cat dm_CSS0_202204.log

# 在查看DRS节点日志

cat dm_DRS2_P_202204.log

确认是磁盘空间不足导致。添加虚拟机磁盘扩容LVM后消除故障。

 

 

2 、创建测试用户

 

# 创建表空间报错

create tablespace CRM_DATA datafile   'crm_data_01.dbf' size 64 autoextend on next 16;

查看官网资料,DMTDD存储文件的表空间。添加表空间的SQL语法进行了调整:

CREATE TABLESPACE ts_name DATAFILE   path SIZE size [COPY copy_num] [MICRO|GREAT]

CREATE TABLESPACE CRM_DATA DATAFILE   '$/crm/crm_data_01.dbf' size 1024 autoextend on next 32 copy 1 micro;

CREATE TABLESPACE CRM_INDEX DATAFILE   '$/crm/crm_index_01.dbf' size 128 autoextend on next 16 copy 1 micro;

create user crm identified by "*"   default TABLESPACE "CRM_DATA" default INDEX TABLESPACE   "CRM_INDEX";

grant PUBLIC to crm;

grant RESOURCE to crm;

 

 

3 、查看存储层目录和文件

# 使用dmdcstool工具链接DCS,查看DSS存储的目录及数据文件

docker exec -it dcs1 bash

su - dmdba

cd /dm8/bin

./dmdcstool   dfs_ini=/dm8/config/dmdfs1.ini

 

 


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70015510/viewspace-2887170/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2022-03-20

  • 博文量
    5
  • 访问量
    2874