达梦数据库带主备MPP集群搭建
概念
达梦大规模并行计算集群(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是备库。
更多推荐
所有评论(0)