一、安装计划
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
配置文件:
集群架构如图:
网络规划:
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、创建docker镜像启动两个DCS容器
#99-dmdba-limits.conf
dmdba soft nproc 10240
dmdba hard nproc 10240
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba hard data unlimited
dmdba soft data unlimited
dmdba hard fsize unlimited
dmdba soft fsize unlimited
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft stack 65536
dmdba hard stack 65536
#dminstall.xml
<?xml version="1.0"?>
<DATABASE>
<!-- 安装数据库的语言配置,安装中文版配置ZH,英文版配置EN,不区分大小写。不允许为空 -->
<LANGUAGE>EN</LANGUAGE>
<!-- 安装程序的时区配置,默认值为+08:00,范围:-12:59 ~ +14:00 -->
<TIME_ZONE>+08:00</TIME_ZONE>
<!-- key 文件路径 -->
<KEY></KEY>
<!-- 安装程序组件类型,取值0、1、2,0 表示安装全部,1 表示安装服务器,2 表示安装客户端 。默认为0 -->
<INSTALL_TYPE>0</INSTALL_TYPE>
<!-- 安装路径,不允许为空 -->
<INSTALL_PATH>/dm8</INSTALL_PATH>
<!-- 是否初始化库,取值Y/N、y/n,不允许为空 -->
<INIT_DB>N</INIT_DB>
</DATABASE>
FROM openjdk:8u265-jdk
ADD ./DMInstall.bin /opt/
ADD ./dminstall.xml /opt/
ADD ./99-dmdba-limits.conf /etc/security/limits.d/
RUN rm -rf /etc/localtime \
&& ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& groupadd dinstall \
&& useradd -g dinstall -ms /bin/bash dmdba \
&& mkdir /dm8 \
&& chown dmdba:dinstall /dm8
USER dmdba
ENV DM_HOME=/dm8
ENV LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$DM_HOME/bin
RUN /opt/DMInstall.bin -q /opt/dminstall.xml
USER root
RUN rm -rf /opt/*
WORKDIR /
#在官网下载DM8软件安装包,解压后将DMInstall.bin文件和上面三个文件放到mkdocker目录下 /home/config/mkdocker #创建内网网段 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 #分别运行初始化脚本 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 |
#init_dcs1.sh
#!/bin/bash
chown dmdba:dinstall -R /dm8/data /dm8/archlog /dm8/backup
su - dmdba<<EOF
cd /dm8/bin
./dminit CONTROL=/dm8/config/dcs_1_dm.ini
cp -if /dm8/config/dcs_1_dmarch.ini /dm8/data/dcs1/dmarch.ini
cp -if /dm8/config/dmmal.ini /dm8/data/dcs1/dmmal.ini
cp -if /dm8/config/dmwatcher_1.ini /dm8/data/dcs1/dmwatcher.ini
#以上文件提前写好,参照官网文档
chown dmdba:dinstall /dm8/data/dcs1/*.ini
find /dm8/data/dcs1/ -type f -name "dm.ini" | xargs sed -i 's/MAL_INI = 0/MAL_INI = 1/g'
find /dm8/data/dcs1/ -type f -name "dm.ini" | xargs sed -i 's/ALTER_MODE_STATUS = 1/ALTER_MODE_STATUS = 0/g'
find /dm8/data/dcs1/ -type f -name "dm.ini" | xargs sed -i 's/ENABLE_OFFLINE_TS = 1/ENABLE_OFFLINE_TS = 2/g'
EOF
cd /dm8/script/root
./dm_service_installer.sh -t dmwatcher -p DCS1 -watcher_ini /dm8/data/dcs1/dmwatcher.ini
./dm_service_installer.sh -t dmserver -p DCS1 -dm_ini /dm8/data/dcs1/dm.ini
/etc/init.d/DmServiceDCS1 start
/dm8/bin/DmAPService start
/etc/init.d/DmServiceDCS1 stop
su - dmdba<<EOF
/dm8/bin/dmrman CTLSTMT="backup database '/dm8/data/dcs1/dm.ini' backupset '/dm8/backup/';"
EOF
nohup /dm8/bin/dmserver /dm8/data/dcs1/dm.ini mount > /tmp/dm.out 2>&1 &
for((i=1;i<=10;i++));do
text=`cat /tmp/dm.out|grep "SYSTEM IS READY"`
if [ -n "$text" ] ; then
break
fi
sleep 1
done
su - dmdba<<EOF
/dm8/bin/disql SYSDBA/SYSDBA -e "sp_set_oguid(453331);"
/dm8/bin/disql SYSDBA/SYSDBA -e "alter database primary;"
EOF
ps -ef|grep dmserver|grep -v grep |awk '{print $2}'|xargs kill -9
#rm -rf /tmp/dm.out
sleep 3
exit
#init_dcs2.sh
#!/bin/bash
chown dmdba:dinstall -R /dm8/data /dm8/archlog /dm8/backup
su - dmdba<<EOF
cd /dm8/bin
./dminit CONTROL=/dm8/config/dcs_2_dm.ini
cp -if /dm8/config/dcs_2_dmarch.ini /dm8/data/dcs2/dmarch.ini
cp -if /dm8/config/dmmal.ini /dm8/data/dcs2/dmmal.ini
cp -if /dm8/config/dmwatcher_2.ini /dm8/data/dcs2/dmwatcher.ini
#以上文件提前写好,参照官网文档
chown dmdba:dinstall /dm8/data/dcs2/*.ini
find /dm8/data/dcs2/ -type f -name "dm.ini" | xargs sed -i 's/MAL_INI = 0/MAL_INI = 1/g'
find /dm8/data/dcs2/ -type f -name "dm.ini" | xargs sed -i 's/ALTER_MODE_STATUS = 1/ALTER_MODE_STATUS = 0/g'
find /dm8/data/dcs2/ -type f -name "dm.ini" | xargs sed -i 's/ENABLE_OFFLINE_TS = 1/ENABLE_OFFLINE_TS = 2/g'
EOF
cd /dm8/script/root
./dm_service_installer.sh -t dmwatcher -p DCS2 -watcher_ini /dm8/data/dcs2/dmwatcher.ini
./dm_service_installer.sh -t dmserver -p DCS2 -dm_ini /dm8/data/dcs2/dm.ini
/etc/init.d/DmServiceDCS2 start
/dm8/bin/DmAPService start
/etc/init.d/DmServiceDCS2 stop
su - dmdba<<EOF
/dm8/bin/dmrman CTLSTMT="restore database '/dm8/data/dcs2/dm.ini' from backupset '/dm8/backup/';"
/dm8/bin/dmrman CTLSTMT="recover database '/dm8/data/dcs2/dm.ini' update DB_MAGIC;"
EOF
nohup /dm8/bin/dmserver /dm8/data/dcs2/dm.ini mount > /tmp/dm.out 2>&1 &
for((i=1;i<=10;i++));do
text=`cat /tmp/dm.out|grep "SYSTEM IS READY"`
if [ -n "$text" ] ; then
break
fi
sleep 1
done
su - dmdba<<EOF
/dm8/bin/disql SYSDBA/SYSDBA -e "sp_set_oguid(453331);"
/dm8/bin/disql SYSDBA/SYSDBA -e "alter database standby;"
EOF
ps -ef|grep dmserver|grep -v grep |awk '{print $2}'|xargs kill -9
#rm -rf /tmp/dm.out
sleep 3
exit
三、部署存储节点
创建存储层节点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 & #参照官网文档提前编写dras1.ini和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的信息。 #crm0 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 #crm1 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
|
4、模拟故障
以下模拟节点故障: #使用CSSM监视器查看应用层状态
#模拟故障,直接将DSC2节点关闭
重启节点后集群恢复 |
更多技术内容请访问社区:https://eco.dameng.com