概念

达梦大规模并行计算集群(DM MPP)是达梦数据库面向海量数据分析场景推出的无共享(Shared-Nothing)分布式架构:它将数据通过哈希或随机方式水平分片到多台独立主机的本地存储,每个节点拥有完整的CPU、内存与磁盘资源,仅通过高速网络交换中间结果;协调节点接收用户SQL后自动完成语句解析、执行计划拆分与任务调度,各计算节点并行扫描、关联、聚合,最后汇总返回,实现PB级数据秒级响应;系统支持在线扩容、节点故障自动重试及数据多副本冗余,兼顾高性能、高可用与线性扩展能力,满足金融、运营商、政务等领域对超大规模数据仓库的严苛需求。

配置

机器

IP

实例名

实例对外端口

MAL端口

MAL守护进程端口

守护进程端口

OGUID

守护组

安装目录

实例归档

归档上限

A

192.168.159.101

EP01

5236

5336

5436

5536

45331

GRP1

/home/dmdba/dmdbms

/dmdata/data

10240

A

192.168.159.101

EP02

5237

5337

5437

5537

45332

GRP2

/home/dmdba/dmdbms

/dmdata/data

10240

B

192.168.159.102

EP01_1

5236

5336

5436

5536

45331

GRP1

/home/dmdba/dmdbms

/dmdata/data

10240

B

192.168.159.102

EP02_1

5237

5337

5437

5537

45332

GRP2

/home/dmdba/dmdbms

/dmdata/data

10240

操作概要

本环境部署了达梦数据库(DM)高可用 MPP 集群,采用双机双实例架构,包含两个守护组(GRP1 和 GRP2),每组由一个主库与一个备库组成,实现数据实时同步与自动故障切换。

一、环境概览

节点 A(192.168.159.101):运行主库 EP01(端口 5236,OGUID 45331,属 GRP1)和 EP02(端口 5237,OGUID 45332,属 GRP2)。

节点 B(192.168.159.102):运行对应的物理备库 EP01_1 与 EP02_1,配置完全对称。

所有实例均启用 MAL 通信、归档(含本地与实时归档)、MPP 分布式功能,并通过守护进程(dmwatcher)实现主备自动切换。

二、关键操作流程

初始化与配置:使用 dminit 创建四个独立实例,分别配置 dm.ini、dmmal.ini、dmarch.ini、dmmpp.ini 及 dmwatcher.ini,确保跨节点通信与日志同步路径正确。

主备同步建立:通过 dmrman 对主库 EP01/EP02 执行全量备份,将备份集拷贝至节点 B,并在备库上执行 restore + recover + update db_magic,完成物理复制初始化。

角色设定:主库设为 PRIMARY 模式并设置对应 OGUID;备库设为 STANDBY 模式,同样配置 OGUID,确保归属正确的守护组。

服务注册与启动:以 mount 模式注册数据库服务,并注册守护进程服务,先后启动数据库实例与守护进程。

MPP 集群整合:所有节点的 dmmpp.ini 仅定义主库(EP01、EP02)参与 MPP 计算,通过 dmctlcvt 生成控制文件,使集群具备分布式查询能力。

连接与负载均衡:配置 /etc/dm_svc.conf 定义 MPP_CLUSTER 服务名,包含全部四个实例地址,客户端可通过该服务名透明访问,请求自动分发。

三、分布式表验

创建哈希、随机、全复制、范围、LIST 等多种分布策略的表,结合 SP_GET_EP_COUNT() 验证数据在 EP01 与 EP02(当前主库)间的分布逻辑。即使发生故障切换,因 MPP 配置基于逻辑实例名,应用层通过服务名连接仍能透明访问最新主库,保障分布式查询连续性。

综上,该方案实现了达梦数据库 MPP 架构下的高可用、自动故障转移与分布式计算能力,适用于对性能与可靠性要求较高的企业级场景。

四、故障切换验证

手动停止节点 A 上的 EP02 实例后,GRP2 守护组检测到主库故障,在超时(INST_ERROR_TIME=10 秒)后自动将 EP02_1 提升为新主库,业务可继续写入。

此时原主库 EP02 恢复后,会自动以备库身份加入集群,从新主库 EP02_1 同步增量日志,形成“主备角色反转”状态。

通过监视器(dmmonitor)可实时查看各组主备状态及切换日志,确保高可用机制正常运行。

带主备MPP集群搭建过程

创建实例

创建实例EP01(主库)

/home/dmdba/dmdbms/bin/dminit \
  PATH='/dmdata/data' INSTANCE_NAME=EP01 DB_NAME=EP01 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=512 \
  CHARSET=0 CASE_SENSITIVE=1 PORT_NUM=5236 SYSDBA_PWD=Dameng@123 SYSAUDITOR_PWD=Dameng@123

创建实例EP02(主库)

/home/dmdba/dmdbms/bin/dminit \
  PATH='/dmdata/data' INSTANCE_NAME=EP02 DB_NAME=EP02 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=512 \
  CHARSET=0 CASE_SENSITIVE=1 PORT_NUM=5237 SYSDBA_PWD=Dameng@123 SYSAUDITOR_PWD=Dameng@123

创建实例EP01_1(备库)

/home/dmdba/dmdbms/bin/dminit \
  PATH='/dmdata/data' INSTANCE_NAME=EP01_1 DB_NAME=EP01_1 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=512 \
  CHARSET=0 CASE_SENSITIVE=1 PORT_NUM=5236 SYSDBA_PWD=Dameng@123 SYSAUDITOR_PWD=Dameng@123

创建实例EP02_1(备库)

/home/dmdba/dmdbms/bin/dminit \
  PATH='/dmdata/data' INSTANCE_NAME=EP02_1 DB_NAME=EP02_1 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=512 \
  CHARSET=0 CASE_SENSITIVE=1 PORT_NUM=5237 SYSDBA_PWD=Dameng@123 SYSAUDITOR_PWD=Dameng@123

A机器注册服务

su root
cd /home/dmdba/dmdbms/script/root
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/EP01/dm.ini -p DMSERVER01
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/EP02/dm.ini -p DMSERVER02

B机器注册服务

su root
cd /home/dmdba/dmdbms/script/root
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/EP01_1/dm.ini -p DMSERVER01
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/EP02_1/dm.ini -p DMSERVER02

启动服务

systemctl start DmServiceDMSERVER01.service
systemctl start DmServiceDMSERVER02.service

配置文件

修改dm.ini

vim /dmdata/data/EP01/dm.ini
vim /dmdata/data/EP02/dm.ini
vim /dmdata/data/EP01_1/dm.ini
vim /dmdata/data/EP02_1/dm.ini
ALTER_MODE_STATUS      =      0      #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS      =      2      #不允许备库 OFFLINE 表空间
MAL_INI                =      1      #打开 MAL 系统
ARCH_INI               =      1      #打开归档配置
MPP_INI                =      1      #启用 MPP 配置

配置dmmal.ini

vim /dmdata/data/EP01/dmmal.ini
vim /dmdata/data/EP02/dmmal.ini
vim /dmdata/data/EP01_1/dmmal.ini
vim /dmdata/data/EP02_1/dmmal.ini
MAL_CHECK_INTERVAL           =    5      #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL       =    5      #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME               = EP01             #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST                    = 192.168.159.101  #MAL 系统监听 TCP 连接的 IP 地址​
MAL_PORT                    = 5336             #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST               = 192.168.159.101  #实例的对外服务 IP 地址
MAL_INST_PORT               = 5236             #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT                 = 5436             #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT            = 5536             #实例监听守护进程 TCP 连接的端口
​
[MAL_INST2]
MAL_INST_NAME               = EP02
MAL_HOST                    = 192.168.159.101 
MAL_PORT                    = 5337             
MAL_INST_HOST               = 192.168.159.101  
MAL_INST_PORT               = 5237             
MAL_DW_PORT                 = 5437             
MAL_INST_DW_PORT            = 5537             

[MAL_INST3]
MAL_INST_NAME               = EP01_1
MAL_HOST                    = 192.168.159.102  
MAL_PORT                    = 5336             
MAL_INST_HOST               = 192.168.159.102  
MAL_INST_PORT               = 5236             
MAL_DW_PORT                 = 5436             
MAL_INST_DW_PORT            = 5536             

[MAL_INST4]
MAL_INST_NAME               = EP02_1
MAL_HOST                    = 192.168.159.102  
MAL_PORT                    = 5337             
MAL_INST_HOST               = 192.168.159.102  
MAL_INST_PORT               = 5237             
MAL_DW_PORT                 = 5437             
MAL_INST_DW_PORT            = 5537             

EP01配置dmarch.ini

vim /dmdata/data/EP01/dmarch.ini
ARCH_WAIT_APPLY           = 0        
[ARCHIVE_LOCAL1]
ARCH_TYPE            = LOCAL        
ARCH_DEST            = /dmdata/data/EP01/arch  
ARCH_FILE_SIZE       = 512
ARCH_SPACE_LIMIT     = 10240
ARCH_FLUSH_BUF_SIZE  = 2    
ARCH_HANG_FLAG       = 1
[ARCHIVE_REALTIME1]
ARCH_TYPE            = REALTIME
ARCH_DEST            = EP01_1

EP02配置dmarch.ini

vim /dmdata/data/EP02/dmarch.ini
ARCH_WAIT_APPLY           = 0        
[ARCHIVE_LOCAL1]
ARCH_TYPE            = LOCAL        
ARCH_DEST            = /dmdata/data/EP02/arch  
ARCH_FILE_SIZE       = 512
ARCH_SPACE_LIMIT     = 10240
ARCH_FLUSH_BUF_SIZE  = 2    
ARCH_HANG_FLAG       = 1
[ARCHIVE_REALTIME1]
ARCH_TYPE            = REALTIME
ARCH_DEST            = EP02_1

EP01_1配置dmarch.ini

vim /dmdata/data/EP01_1/dmarch.ini
ARCH_WAIT_APPLY           = 0        
[ARCHIVE_LOCAL1]
ARCH_TYPE            = LOCAL        
ARCH_DEST            = /dmdata/data/EP01_1/arch  
ARCH_FILE_SIZE       = 512
ARCH_SPACE_LIMIT     = 10240
ARCH_FLUSH_BUF_SIZE  = 2    
ARCH_HANG_FLAG       = 1
[ARCHIVE_REALTIME1]
ARCH_TYPE            = REALTIME
ARCH_DEST            = EP01

EP02_1配置dmarch.ini

vim /dmdata/data/EP02_1/dmarch.ini
ARCH_WAIT_APPLY           = 0        
[ARCHIVE_LOCAL1]
ARCH_TYPE            = LOCAL        
ARCH_DEST            = /dmdata/data/EP02_1/arch  
ARCH_FILE_SIZE       = 512
ARCH_SPACE_LIMIT     = 10240
ARCH_FLUSH_BUF_SIZE  = 2    
ARCH_HANG_FLAG       = 1
[ARCHIVE_REALTIME1]
ARCH_TYPE            = REALTIME
ARCH_DEST            = EP02

配置dmmpp.ini

vim /dmdata/data/EP01/dmmpp.ini
vim /dmdata/data/EP02/dmmpp.ini
vim /dmdata/data/EP01_1/dmmpp.ini
vim /dmdata/data/EP02_1/dmmpp.ini
[SERVICE_NAME1] 
MPP_SEQ_NO = 0 
MPP_INST_NAME = EP01
 
[SERVICE_NAME2] 
MPP_SEQ_NO = 1 
MPP_INST_NAME = EP02

A机器转换dmmpp.ini文件

cd /home/dmdba/dmdbms/bin
./dmctlcvt TYPE=2 SRC=/dmdata/data/EP01/dmmpp.ini  DEST=/dmdata/data/EP01/dmmpp.ctl
./dmctlcvt TYPE=2 SRC=/dmdata/data/EP02/dmmpp.ini  DEST=/dmdata/data/EP02/dmmpp.ctl

B机器转换dmmpp.ini文件

cd /home/dmdba/dmdbms/bin
./dmctlcvt TYPE=2 SRC=/dmdata/data/EP01_1/dmmpp.ini  DEST=/dmdata/data/EP01_1/dmmpp.ctl
./dmctlcvt TYPE=2 SRC=/dmdata/data/EP02_1/dmmpp.ini  DEST=/dmdata/data/EP02_1/dmmpp.ctl

A机器配置dmwatcher

vim /dmdata/data/EP01/dmwatcher.ini
[GRP1]
DW_TYPE               = GLOBAL       #全局守护类型
DW_MODE               = AUTO         #自动切换模式
DW_ERROR_TIME         = 10           #远程守护进程故障认定时间
INST_RECOVER_TIME     = 60           #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME       = 10           #本地实例故障认定时间
INST_OGUID            = 45331        #守护系统唯一 OGUID 值
INST_INI              = /dmdata/data/EP01/dm.ini #配置文件路径
INST_AUTO_RESTART     = 1            #打开实例的自动启动功能
INST_STARTUP_CMD      = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD   = 0            #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD  = 0            #指定备库重演日志的时间阈值,默认关闭
​
[GRP2]
​DW_TYPE               = GLOBAL    
DW_MODE               = AUTO      
DW_ERROR_TIME         = 10        
INST_RECOVER_TIME     = 60        
INST_ERROR_TIME       = 10         
INST_OGUID            = 45332      
INST_INI              = /dmdata/data/EP02/dm.ini 
INST_AUTO_RESTART     = 1           
INST_STARTUP_CMD      = /home/dmdba/dmdbms/bin/dmserver 
RLOG_SEND_THRESHOLD   = 0            
RLOG_APPLY_THRESHOLD  = 0            

B机器配置dmwatcher

vim /dmdata/data/EP01_1/dmwatcher.ini
[GRP1]
DW_TYPE               = GLOBAL       #全局守护类型
DW_MODE               = AUTO         #自动切换模式
DW_ERROR_TIME         = 10           #远程守护进程故障认定时间
INST_RECOVER_TIME     = 60           #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME       = 10           #本地实例故障认定时间
INST_OGUID            = 45331        #守护系统唯一 OGUID 值
INST_INI              = /dmdata/data/EP01_1/dm.ini #配置文件路径
INST_AUTO_RESTART     = 1            #打开实例的自动启动功能
INST_STARTUP_CMD      = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD   = 0            #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD  = 0            #指定备库重演日志的时间阈值,默认关闭
​
[GRP2]
​DW_TYPE               = GLOBAL    
DW_MODE               = AUTO      
DW_ERROR_TIME         = 10         
INST_RECOVER_TIME     = 60         
INST_ERROR_TIME       = 10       
INST_OGUID            = 45332     
INST_INI              = /dmdata/data/EP02_1/dm.ini 
INST_AUTO_RESTART     = 1        
INST_STARTUP_CMD      = /home/dmdba/dmdbms/bin/dmserver 
RLOG_SEND_THRESHOLD   = 0         
RLOG_APPLY_THRESHOLD  = 0           

两机器停止服务

systemctl stop DmServiceDMSERVER01.service
systemctl stop DmServiceDMSERVER02.service
cd /home/dmdba/dmdbms/bin/service_template/
./DmAPService start

EP01备份

/home/dmdba/dmdbms/bin/dmrman
backup database '/dmdata/data/EP01/dm.ini' full backupset '/dmdata/data/EP01/bak/dmbackup';

拷贝

scp -r /dmdata/data/EP01/bak/dmbackup root@192.168.159.102:/dmdata/data/EP01_1/bak

EP02备份

/home/dmdba/dmdbms/bin/dmrman
backup database '/dmdata/data/EP02/dm.ini' full backupset '/dmdata/data/EP02/bak/dmbackup';

拷贝

scp -r /dmdata/data/EP02/bak/dmbackup root@192.168.159.102:/dmdata/data/EP02_1/bak

EP01_1恢复备份

su dmdba
/home/dmdba/dmdbms/bin/dmrman
restore database '/dmdata/data/EP01_1/dm.ini' from backupset '/dmdata/data/EP01_1/bak/dmbackup';
recover database '/dmdata/data/EP01_1/dm.ini' from backupset '/dmdata/data/EP01_1/bak/dmbackup';
recover database '/dmdata/data/EP01_1/dm.ini' update db_magic;

EP02_1恢复备份

su dmdba
/home/dmdba/dmdbms/bin/dmrman
restore database '/dmdata/data/EP02_1/dm.ini' from backupset '/dmdata/data/EP02_1/bak/dmbackup';
recover database '/dmdata/data/EP02_1/dm.ini' from backupset '/dmdata/data/EP02_1/bak/dmbackup';
recover database '/dmdata/data/EP02_1/dm.ini' update db_magic;

A机器注册服务

su root
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -p EP01 -dm_ini /dmdata/data/EP01/dm.ini -m mount
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -p EP02 -dm_ini /dmdata/data/EP02/dm.ini -m mount
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dmdata/data/EP01/dmwatcher.ini

B机器注册服务

su root
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -p EP01_1 -dm_ini /dmdata/data/EP01_1/dm.ini -m mount
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -p EP02_1 -dm_ini /dmdata/data/EP02_1/dm.ini -m mount
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dmdata/data/EP01_1/dmwatcher.ini

A机器启动服务

/home/dmdba/dmdbms/bin/DmServiceEP01 start
/home/dmdba/dmdbms/bin/DmServiceEP02 start

B机器启动服务

/home/dmdba/dmdbms/bin/DmServiceEP01_1 start
/home/dmdba/dmdbms/bin/DmServiceEP02_1 start

A机器修改参数

/home/dmdba/dmdbms/bin/disql 'SYSDBA/"Dameng@123"@localhost:5236'
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_OGUID(45331);
ALTER DATABASE PRIMARY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
/home/dmdba/dmdbms/bin/disql 'SYSDBA/"Dameng@123"@localhost:5237'
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_OGUID(45332);
ALTER DATABASE PRIMARY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

B机器修改参数

/home/dmdba/dmdbms/bin/disql 'SYSDBA/"Dameng@123"@localhost:5236'
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_OGUID(45331);
ALTER DATABASE STANDBY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
/home/dmdba/dmdbms/bin/disql 'SYSDBA/"Dameng@123"@localhost:5237'
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_OGUID(45332);
ALTER DATABASE STANDBY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

两机器启动守护进程

/home/dmdba/dmdbms/bin/DmWatcherServiceWatcher start

配置dmmonitor.ini

vim /dmdata/data/EP01_1/dmmonitor.ini
MON_DW_CONFIRM              = 1              #确认监视器模式
MON_LOG_PATH                = home/dmdba/dmdbms/log  #监视器日志文件存放路径
MON_LOG_INTERVAL            = 60             #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE           = 32             #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT         = 0              #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID              = 45331          #组 GRP1 的唯一 OGUID 值 
MON_DW_IP                   = 192.168.159.101:5436
MON_DW_IP                   = 192.168.159.102:5436
[GRP2]
MON_INST_OGUID              = 45332          #组 GRP2 的唯一 OGUID 值 
MON_DW_IP                   = 192.168.159.101:5437
MON_DW_IP                   = 192.168.159.102:5437

启动监视器

/home/dmdba/dmdbms/bin/dmmonitor /dmdata/data/EP01_1/dmmonitor.ini

验证分布列是否自动分发

创建哈希分布表,分布列为C1

CREATE TABLE T_HASH(C1 INT, C2 CHAR(10))DISTRIBUTED BY HASH (C1);
INSERT INTO T_HASH VALUES (1, 'A'), (2, 'B'), (3, 'C'), (4, 'D'), (5, 'E'), (6, 'F'), (7, 'G');
SP_SET_SESSION_MPP_SELECT_LOCAL(0);
SELECT SF_GET_SESSION_MPP_SELECT_LOCAL();
CALL SP_GET_EP_COUNT('SYSDBA','T_HASH');

创建随机分布表

CREATE TABLE T_RANDOM(C1 INT, C2 CHAR(10))DISTRIBUTED RANDOMLY;
INSERT INTO T_RANDOM VALUES (1, 'A'), (2, 'B'), (3, 'C'), (4, 'D'), (5, 'E'), (6, 'F'), (7, 'G');
CALL SP_GET_EP_COUNT('SYSDBA','T_RANDOM');

创建复制分布表

CREATE TABLE T_FULLY(C1 INT, C2 CHAR(10))DISTRIBUTED FULLY;
INSERT INTO T_FULLY VALUES (1, 'A'), (2, 'B'), (3, 'C'), (4, 'D'), (5, 'E'), (6, 'F'), (7, 'G');
CALL SP_GET_EP_COUNT('SYSDBA','T_FULLY');

创建范围分布表,分布列为C1

CREATE TABLE T_RANGE (C1 INT, C2 CHAR(10)) DISTRIBUTED BY RANGE (C1) (VALUES EQU OR LESS THAN (100) ON EP01, VALUES LESS THAN(MAXVALUE) ON EP02);
INSERT INTO T_RANGE VALUES (50, 'A'), (150, 'B'), (25, 'C'), (300, 'D'), (75, 'E');
CALL SP_GET_EP_COUNT('SYSDBA','T_RANGE');

创建LIST分布表,分布列为C1

CREATE TABLE T_LIST(C1 INT, C2 CHAR(10)) DISTRIBUTED BY LIST (C1) (VALUES(3) ON EP01,VALUES(4) ON EP02);
INSERT INTO T_LIST VALUES (3, 'A'), (4, 'B'), (4, 'C'), (3, 'D'), (4, 'E');
CALL SP_GET_EP_COUNT('SYSDBA','T_LIST');

创建哈希分布表的范围水平分区表

CREATE TABLE T_HASH_RANGE_PARTITION (C1 INT, C2 CHAR(10), C3 CHAR(10))
PARTITION BY RANGE(C1)
(
PARTITION PART_1 VALUES LESS THAN(0) ,
PARTITION PART_2 VALUES LESS THAN(10) ,
PARTITION PART_3 VALUES LESS THAN(100) ,
PARTITION PART_4 VALUES LESS THAN(MAXVALUE)
)
DISTRIBUTED BY HASH (C1);
INSERT INTO T_HASH_RANGE_PARTITION VALUES (-5, 'A', 'X'), (5, 'B', 'Y'), (50, 'C', 'Z'), (500, 'D', 'W');
CALL SP_GET_EP_COUNT('SYSDBA','T_HASH_RANGE_PARTITION');

通过服务名连接

配置dm_svr.conf文件

vi /etc/dm_svc.conf

TIME_ZONE=(480)
LANGUAGE=(CN)
login_mode=(1)
MPP_CLUSTER=(192.168.159.101:5236,192.168.159.101:5237,192.168.159.102:5236,192.168.159.102:5237)

测试

for i in {1..6}; do
  /home/dmdba/dmdbms/bin/disql 'SYSDBA/"Dameng@123"@MPP_CLUSTER' <<'EOF'
select sf_get_self_ep_seqno();
exit
EOF
  sleep 10
done

会轮询节点1和节点0,正常。

故障模拟

停止节点EP02

恢复机器

此时EP02_1是主库,EP02是备库。

https://eco.dameng.com

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐