注册
达梦第六课-DW集群增删节点测试
专栏/技术分享/ 文章详情 /

达梦第六课-DW集群增删节点测试

WXY是对称的 2025/06/20 227 0 0
摘要

DW集群增删节点操作

一、 动态删除DW集群备节点

1. 关闭监视器

DmMonitorServiceMonitor stop

2. 注释监视器中需要删除的备节点

vim dmmonitor.ini
#MON_DW_IP     = 192.168.20.33:5239     #集群内部节点3

3. 关闭守护进程

DmWatcherServiceWatcher stop

4. 修改mal中需要删除的实例的信息(所有节点)。

#注释掉配置文件中的内容

#[MAL_INST3]
#MAL_INST_NAME            = DM3
#MAL_HOST                 = 192.168.20.33
#MAL_PORT                 = 5238
#MAL_INST_HOST            = 192.168.30.33
#MAL_INST_PORT            = 5236
#MAL_DW_PORT              = 5239
#MAL_INST_DW_PORT         = 5237

生效配置

SF_MAL_CONFIG(1,0);
SF_MAL_CONFIG_APPLY();
SF_MAL_CONFIG(0,0);

5. 修改主库为mount状态

//临时修改ALTER_MODE_STATUS,允许用户手动修改模式状态,动态添加完毕后需要再改回原值
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); 
//临时关闭守护进程活动状态检测,允许用户手动修改模式状态,动态添加完毕后需要再改回原值
SQL> SP_SET_PARA_VALUE(1, 'DW_INACTIVE_INTERVAL', 0);
//修改数据库为MOUNT状态
SQL> ALTER DATABASE MOUNT;

6. 修改备库为mount状态

//临时修改ALTER_MODE_STATUS,允许用户手动修改模式状态,动态添加完毕后需要再改回原值
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); 
//临时关闭守护进程活动状态检测,允许用户手动修改模式状态,动态添加完毕后需要再改回原值
SQL> SP_SET_PARA_VALUE(1, 'DW_INACTIVE_INTERVAL', 0);
//修改数据库为MOUNT状态
SQL> ALTER DATABASE MOUNT;

7. 删除所有实例中的下线节点的归档

SQL> ALTER DATABASE DELETE ARCHIVELOG 'DEST= DM3, TYPE= REALTIME';
SQL> select * from v$arch_status;

LINEID     ARCH_TYPE ARCH_DEST               ARCH_STATUS ARCH_SRC
---------- --------- ----------------------- ----------- --------
1          LOCAL     /home/dmdba/dmdbms/arch VALID       DM2
2          REALTIME  DM1                     NULL        DM2

used time: 1.703(ms). Execute id is 308.
SQL> 

8. 关闭所有节点

#关闭所有节点,否则不会自动更新动态性能视图信息。

Shutdown  immediate

9. 启动所有节点,先启动备库再启动主库

#手动修改原系统中所有实例为 OPEN 状态
#必须先修改备库,再修改主库,否则可能会引发主备数据同步失败导致主库挂起。

//将ALTER_MODE_STATUS改回原值
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); 
//修改数据库为OPEN状态
SQL> ALTER DATABASE OPEN FORCE;
//将ALTER_MODE_STATUS改回原值
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); 
//将DW_INACTIVE_INTERVAL改回原值,本例中为60
SQL> SP_SET_PARA_VALUE(1, 'DW_INACTIVE_INTERVAL', 60);

10. 启动守护进程

DmWatcherServiceWatcher start

11. 启动监视器

DmMonitorServiceMonitor start

#查看集群状态

Show global info 

image.png

12. 登录主库插入数据

[dmdba@localhost DM1]$ disql sysdba/Dameng123

服务器[LOCALHOST:5236]:处于主库打开状态
登录使用时间 : 6.047(ms)
disql V8
SQL> select * from v$instance ;

行号     NAME INSTANCE_NAME INSTANCE_NUMBER HOST_NAME             SVR_VERSION                DB_VERSION          START_TIME          STATUS$ MODE$   OGUID
---------- ---- ------------- --------------- --------------------- -------------------------- ------------------- ------------------- ------- ------- -----------
           DSC_SEQNO   DSC_ROLE BUILD_VERSION                     BUILD_TIME
           ----------- -------- --------------------------------- --------------------
1          DM1  DM1           1               localhost.localdomain DM Database Server x64 V8  DB Version: 0x7000d 2025-06-06 10:28:10 OPEN    PRIMARY 45331
           0           NULL     03134284368-20250430-272000-20149 May  6 2025 11:47:00


已用时间: 2.635(毫秒). 执行号:1601.
SQL> insert into t1 values(333,'dropD3');
影响行数 1

已用时间: 2.972(毫秒). 执行号:1602.
SQL> commit ;
操作已执行
已用时间: 1.956(毫秒). 执行号:1603.
SQL> select * from t1 ;

行号     ID          NAME
---------- ----------- ----------
1          1           a
2          2           3
3          3           dm2
4          4           dm3d
5          5           dm3d
6          5           dm3d
7          6           dm3d
8          7           dm3d
9          8           dm3d
10         8           dm3d
11         111         dm2insert1

行号     ID          NAME
---------- ----------- ------------
12         2222        sefwefwefwef
13         2333        ad
14         333         dropD3

14 rows got

已用时间: 3.175(毫秒). 执行号:1604.
SQL>

13. 登录备库查看同步状况

SQL> select * from t1 ;
SQL> select * from t1 ;

LINEID     ID          NAME
---------- ----------- ----------
1          1           a
2          2           3
3          3           dm2
4          4           dm3d
5          5           dm3d
6          5           dm3d
7          6           dm3d
8          7           dm3d
9          8           dm3d
10         8           dm3d
11         111         dm2insert1

LINEID     ID          NAME
---------- ----------- ------------
12         2222        sefwefwefwef
13         2333        ad
14         333         dropD3

14 rows got

used time: 0.649(ms). Execute id is 301.
SQL>

14. 查看MAL信息

select * from V$MAL_LINK_STATUS   ;
select * from v$dm_mal_ini;

二、 动态增加DW集群节点

1. 备份主库数据

SQL> BACKUP DATABASE BACKUPSET 'BACKUP_FILE_TO_DM3';

2. 初始化备库

已有,略

3. 还原数据库

#拷贝生成的备份集目录 BACKUP_FILE_TO_DM3 到 DM3上/home/dmdba/dmdbms/data/DM3/bak 目录,使用 DMRMAN 工具脱机还原。

scp -r BACKUP_FILE_TO_DM3/ root@192.168.20.33:/home/dmdba/dmdbms/data/DM3/bak
./dmrman CTLSTMT="RESTORE DATABASE '/home/dmdba/dmdbms/data/DM3/dm.ini' FROM BACKUPSET '/home/dmdba/dmdbms/data/DM3/bak/BACKUP_FILE_TO_DM3'"
./dmrman CTLSTMT="RECOVER DATABASE '/home/dmdba/dmdbms/data/DM3/dm.ini' FOR STANDBY FROM BACKUPSET '/home/dmdba/dmdbms/data/DM3/bak/BACKUP_FILE_TO_DM3'"
./dmrman  CTLSTMT="RECOVER DATABASE '/home/dmdba/dmdbms/data/DM3/dm.ini' UPDATE DB_MAGIC"

4. 配置新备库

#配置 dm.ini
#在 DW3 机器上配置备库的实例名为 DM3,dm.ini 主要参数修改如下:

ALTER_MODE_STATUS = 0 	##不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 		##不允许备库OFFLINE表空间
MAL_INI = 1 					##打开MAL系统
ARCH_INI = 1 					##打开归档配置
RLOG_SEND_APPLY_MON = 64 		##统计最近64次的日志重演信息

#配置 dmmal.ini
#基于原配置,所有节点均添加DM3的配置

MAL_CHECK_INTERVAL         = 5  #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL     = 5  #判定 MAL 链路断开的时间
MAL_TEMP_PATH              = /home/dmdba/dmdbms/data/malpath/  #临时文件目录
MAL_BUF_SIZE               = 256  #单个 MAL 缓存大小,单位 MB
MAL_SYS_BUF_SIZE           = 2048  #MAL 总大小限制,单位 MB
MAL_COMPRESS_LEVEL         = 0  #MAL 消息压缩等级,0 表示不压缩

[MAL_INST1]
MAL_INST_NAME            = DM1  #实例名,和 dm.ini 的 INSTANCE_NAME 一致
MAL_HOST                 = 192.168.20.31  #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT                 = 5238  #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST            = 192.168.30.31  #实例的对外服务 IP 地址
MAL_INST_PORT            = 5236  #实例对外服务端口,和 dm.ini 的 PORT_NUM 一致
MAL_DW_PORT              = 5239  #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT         = 5237  #实例监听守护进程 TCP 连接的端口

[MAL_INST2]
MAL_INST_NAME            = DM2
MAL_HOST                 = 192.168.20.32
MAL_PORT                 = 5238
MAL_INST_HOST            = 192.168.30.32
MAL_INST_PORT            = 5236
MAL_DW_PORT              = 5239
MAL_INST_DW_PORT         = 5237

[MAL_INST3]
MAL_INST_NAME            = DM3
MAL_HOST                 = 192.168.20.33
MAL_PORT                 = 5238
MAL_INST_HOST            = 192.168.30.33
MAL_INST_PORT            = 5236
MAL_DW_PORT              = 5239
MAL_INST_DW_PORT         = 5237

#配置 dmarch.ini
#所有节点项目交叉配置

[ARCHIVE_REALTIME2]
#实时归档类型
        ARCH_TYPE            = REALTIME
#实时归档目标实例名
        ARCH_DEST            = DM2

#配置 dmwatcher.ini

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

5. 以 Mount 方式启动备库

dmserver  /home/dmdba/dmdbms/data/DM3/dm.ini  mount

6. 设置 OGUID,修改数据库模式

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);

7. 动态添加 MAL 配置(当前集群)

SF_MAL_CONFIG(1,0);
SF_MAL_INST_ADD('MAL_INST3','DM3','192.168.20.33',5238,'192.168.30.33',5236,5239,0,5237);
SF_MAL_CONFIG_APPLY();
SF_MAL_CONFIG(0,0);

8. 动态添加归档配置(先主后备)

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); 
SP_SET_PARA_VALUE(1, 'DW_INACTIVE_INTERVAL', 0);
ALTER DATABASE MOUNT;
ALTER DATABASE ADD ARCHIVELOG 'DEST=DM3, TYPE= REALTIME';

9. 启动当前集群所有实例(先备后主)

ALTER DATABASE OPEN FORCE;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); 
SP_SET_PARA_VALUE(1, 'DW_INACTIVE_INTERVAL', 60);

10. 修改监视器 dmmonitor.ini

vi /home/dmdba/dmdbms/data/DM3/dmmonitor.ini
MON_DW_IP     = 192.168.20.33:5239     #集群内部节点3

11. 启动所有守护进程以及监视器

DmWatcherServiceWatcher start
DmMonitorServiceMonitor start

12. 查看状态

Show global info 

image.png

13. 主库插入数据并查看

[dmdba@localhost DM1]$ disql sysdba/Dameng123

服务器[LOCALHOST:5236]:处于主库打开状态
登录使用时间 : 3.710(ms)
disql V8
SQL> delete from t1 ;
影响行数 14

已用时间: 3.362(毫秒). 执行号:2801.
SQL> insert into t1 values(1,'dm3');
影响行数 1

已用时间: 17.488(毫秒). 执行号:2802.
SQL> commit ;
操作已执行
已用时间: 3.445(毫秒). 执行号:2803.
SQL> select * from t1;

行号     ID          NAME
---------- ----------- ----
1          1           dm3

已用时间: 2.129(毫秒). 执行号:2804.
SQL>

14. 从库查看数据

[dmdba@localhost DM2]$ disql SYSDBA/Dameng123

Server[LOCALHOST:5236]:mode is standby, state is open
login used time : 3.593(ms)
disql V8
SQL> select * from t1;

LINEID     ID          NAME
---------- ----------- ----
1          1           dm3

used time: 0.981(ms). Execute id is 701.


[dmdba@localhost DM3]$ disql sysdba/Dameng123

Server[LOCALHOST:5236]:mode is standby, state is open
login used time : 5.278(ms)
disql V8
SQL> select * from t1;

LINEID     ID          NAME
---------- ----------- ----
1          1           dm3

used time: 1.968(ms). Execute id is 1.
SQL>

三、 总结:

删除节点只需要对节点进行下线,然后修改相应的归档和mal即可。
增加节点主要是动态添加相关的mal信息以及归档日志,然后调整监视器即可。
此次测试为本人根据官方文档中的内容尝试测试,有部分问题为能解决,后续深入学习后再进行尝试修复。
由于当前集群为3节点变为2节点后,又从2节点增加到3节点,3节点变成2节点后,数据库动态性能视图中的v$dm_mal_ini没有动态更新,另外动态增加MAL信息的操作没有成功,这里有些问题:
SF_MAL_INST_ADD(‘MAL_INST3’,‘DM3’,‘192.168.20.33’,5238,‘192.168.30.33’,5236,5239,0,5237);
[-803]:非法INI配置值.
已用时间: 0.474(毫秒). 执行号:0.

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服