暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【江月】达梦主备集群扩容新增备库步骤

原创 春江花月夜 2024-12-16
110

将1主1备,变成1主2备。
如果是生产环境,建议将心跳ip与业务ip隔离使用不同的网段网卡

一、环境规划

主库 备库 监视器 扩容新增备库
业务ip 192.168.100.147 192.168.100.148 192.168.100.149
心跳ip 192.168.100.147 192.168.100.148 192.168.100.149
实例名 dmpri dmstb dmstb2
实例端口 5236 5236 5236
MAL端口 5336 5336 5336
MAL守护进程端口 5436 5436 5436
守护进程端口 5536 5536 5536
OGUID 45331 45331 45331
守护组 GRP1 GRP1 GRP1
安装目录 /DM8/dmapp /DM8/dmapp /DM8/dmapp
实例目录 /DM8/dmdata /DM8/dmdata /DM8/dmdata
归档上限 51200 51200 51200

二、软件部署

在新环境上部署达梦软件
步骤略

三、搭建扩容备库

var_dm_pri_name=dmpri #主库
var_dm_stb_name1=dmstb #原备库
var_dm_stb_name2=dmstb2 #新增备库

3.1 原环境做全备

#drman备份,可以是主库,也可以是备库
BACKUP DATABASE BACKUPSET '/DM8/dmbak/${var_dm_pri_name}';

#备份完拷贝到新机器里
scp -r /DM8/dmbak/${var_dm_pri_name}/* dmdba@192.168.100.149:/DM8/dmbak/${var_dm_stb_name2}
#如果有最近的全备也可以不做备份

3.2 新库配置

#初始化备库实例
dminit PATH=/DM8/dmdata/ DB_NAME=${var_dm_stb_name2} INSTANCE_NAME=${var_dm_stb_name2} PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 CHARSET=1

#恢复数据
dmrman CTLSTMT="RESTORE DATABASE '/DM8/dmdata/${var_dm_stb_name2}/dm.ini' FROM BACKUPSET '/DM8/dmbak/${var_dm_stb_name2}'"
dmrman CTLSTMT="RECOVER DATABASE '/DM8/dmdata/${var_dm_stb_name2}/dm.ini' FROM BACKUPSET '/DM8/dmbak/${var_dm_stb_name2}'"
dmrman CTLSTMT="RECOVER DATABASE '/DM8/dmdata/${var_dm_stb_name2}/dm.ini' UPDATE DB_MAGIC"

#编辑dmarch.ini
vi /DM8/dmdata/${var_dm_stb_name2}/dmarch.ini
ARCH_WAIT_APPLY          = 0
[ARCHIVE_LOCAL]
ARCH_TYPE                = LOCAL
ARCH_DEST                = /DM8/dmarc/${var_dm_stb_name2}
ARCH_FILE_SIZE           = 1024
ARCH_SPACE_LIMIT         = 51200
[ARCHIVE_REALTIME1]
ARCH_TYPE                = REALTIME
ARCH_DEST                = ${var_dm_pri_name}
[ARCHIVE_REALTIME2]
ARCH_TYPE                = REALTIME
ARCH_DEST                = ${var_dm_stb_name1}

#编辑dm.ini,修改以下4个参数的值
vi /DM8/dmdata/${var_dm_stb_name2}/dm.ini
ALTER_MODE_STATUS = 0                  #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS  = 2                 #不允许备库 OFFLINE 表空间
MAL_INI = 1                            #打开 MAL 系统
ARCH_INI = 1                           #打开归档配置

#编辑dmmal.ini
vi /DM8/dmdata/${var_dm_stb_name2}/dmmal.ini
MAL_CHECK_INTERVAL       = 10                    #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL   = 10                    #判定 MAL 链路断开的时间
#MAL_TEMP_PATH            = /DM8/dmdata/malpath  #临时文件目录,默认放在temp.dbf
MAL_BUF_SIZE             = 512                   #单个 MAL 缓存大小,单位 MB
MAL_SYS_BUF_SIZE         = 2048                  #MAL 总大小限制,单位 MB
MAL_COMPRESS_LEVEL       = 0                     #MAL 消息压缩等级,0 表示不压缩

[MAL_INST1]
MAL_INST_NAME            = ${var_dm_pri_name}    #实例名,和 dm.ini 的 INSTANCE_NAME 一致
MAL_HOST                 = 192.168.100.147       #MAL 系统监听 TCP 连接的 IP 地址 如192.168.1.1
MAL_PORT                 = 5336                  #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST            = 192.168.100.147       #实例的对外服务 IP 地址 如172.16.1.1
MAL_INST_PORT            = 5236                  #实例对外服务端口,和 dm.ini 的 PORT_NUM 一致
MAL_DW_PORT              = 5436                  #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT         = 5536                  #实例监听守护进程 TCP 连接的端口

[MAL_INST2]
MAL_INST_NAME            = ${var_dm_stb_name1}
MAL_HOST                 = 192.168.100.148       #192.168.1.2
MAL_PORT                 = 5336
MAL_INST_HOST            = 192.168.100.148       #172.16.1.2
MAL_INST_PORT            = 5236
MAL_DW_PORT              = 5436
MAL_INST_DW_PORT         = 5536

[MAL_INST3]
MAL_INST_NAME            = ${var_dm_stb_name2}
MAL_HOST                 = 192.168.100.149       #192.168.1.2
MAL_PORT                 = 5336
MAL_INST_HOST            = 192.168.100.149       #172.16.1.2
MAL_INST_PORT            = 5236
MAL_DW_PORT              = 5436
MAL_INST_DW_PORT         = 5536


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


#切换到root注册服务
/DM8/dmapp/script/root/dm_service_installer.sh -t dmserver -p ${var_dm_stb_name2} -dm_ini /DM8/dmdata/${var_dm_stb_name2}/dm.ini
/DM8/dmapp/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /DM8/dmdata/${var_dm_stb_name2}/dmwatcher.ini

#启动新备库
DmService${var_dm_stb_name2} start mount
disql SYSDBA/SYSDBA@192.168.100.149:5236
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_OGUID(45331);
select OGUID from v$instance;
ALTER DATABASE STANDBY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

3.3 收尾工作

#dmpri & dmstb 执行
SF_MAL_CONFIG(1,0);
SF_MAL_INST_ADD('MAL_INST3','${var_dm_stb_name2}','192.168.100.149',5336,'192.168.100.149',5236,5436,0,5536);
SF_MAL_CONFIG_APPLY();
SF_MAL_CONFIG(0,0);
ALTER DATABASE ADD ARCHIVELOG 'DEST= ${var_dm_stb_name2}, TYPE= REALTIME';

#dmpri & dmstb & monit 均对monit Watcher服务器配置追加
echo 'MON_DW_IP                = 192.168.100.149:5436  #dmstb2' >> /DM8/dmapp/bin/dmmonitor.ini
echo 'MON_DW_IP                = 192.168.100.149:5436  #dmstb2' >> /DM8/dmapp/bin/dmmonitor_manual.ini

#dmpri & dmstb上重启monit Water服务
/DM8/dmapp/bin/DmWatcherServiceWatcher restart

#dmpri
scp -r /DM8/dmapp/bin/dmmonitor.ini dmdba@192.168.100.149:/DM8/dmapp/bin
scp -r /DM8/dmapp/bin/dmmonitor_manual.ini dmdba@192.168.100.149:/DM8/dmapp/bin

#dmstb2
/DM8/dmapp/bin/DmWatcherServiceWatcher start

#Monit服务器上,重启Monit服务
/DM8/dmapp/bin/DmMonitorServiceMonitor restart

3.4 检查

[dmdba@lhq7.9os3:/DM8/dmdata/dmstb2]$ cd /DM8/dmapp/bin
[dmdba@lhq7.9os3:/DM8/dmapp/bin]$ dmmonitor dmmonitor_manual.ini
[monitor]         2024-12-16 19:07:31: DMMONITOR[4.0] V8
[monitor]         2024-12-16 19:07:32: DMMONITOR[4.0] IS READY.

[monitor]         2024-12-16 19:07:32: 
#-----------------------------------------------------------------------------------------------#
GET MONITOR CONNECT INFO FROM DMWATCHER(DMSTB), THE FIRST LINE IS SELF INFO.

DW_CONN_TIME         MON_CONFIRM    MID            MON_IP                  MON_VERSION                                                     
2024-12-16 19:07:32  FALSE          1772098120     ::ffff:192.168.100.149  DMMONITOR[4.0] V8
                                              
#-----------------------------------------------------------------------------------------------#

[monitor]         2024-12-16 19:07:32: 收到守护进程(DMSTB)消息
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2024-12-16 19:07:32  OPEN           OK        DMSTB            OPEN        PRIMARY   VALID    10       46578           46578           

[monitor]         2024-12-16 19:07:32: 收到守护进程(DMPRI)消息
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2024-12-16 19:07:32  OPEN           OK        DMPRI            OPEN        STANDBY   VALID    10       46578           46578           

[monitor]         2024-12-16 19:07:32: 收到守护进程(DMSTB2)消息
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2024-12-16 19:07:32  OPEN           OK        DMSTB2           OPEN        STANDBY   VALID    10       46578           46578           

tip    
[monitor]         2024-12-16 19:07:41: [!!! 提示:本监视器不是确认监视器,在故障自动切换模式下如果发生主库故障,本监视器无法执行自动接管 !!!]

[monitor]         2024-12-16 19:07:41: 实例DMSTB[PRIMARY, OPEN, ISTAT_SAME:TRUE]不可加入其他实例,守护进程状态:OPEN,Open记录状态:VALID
[monitor]         2024-12-16 19:07:41: 实例DMSTB[PRIMARY, OPEN, ISTAT_SAME:TRUE]当前没有命令正在执行
[monitor]         2024-12-16 19:07:41: 实例DMSTB[PRIMARY, OPEN, ISTAT_SAME:TRUE]运行正常, 守护进程是OPEN状态,守护类型是GLOBAL

[monitor]         2024-12-16 19:07:41: 实例DMPRI[STANDBY, OPEN, ISTAT_SAME:TRUE]可加入实例DMSTB[PRIMARY, OPEN, ISTAT_SAME:TRUE]
[monitor]         2024-12-16 19:07:41: 实例DMPRI[STANDBY, OPEN, ISTAT_SAME:TRUE]当前没有命令正在执行
[monitor]         2024-12-16 19:07:41: 实例DMPRI[STANDBY, OPEN, ISTAT_SAME:TRUE]运行正常, 守护进程是OPEN状态,守护类型是GLOBAL

[monitor]         2024-12-16 19:07:41: 实例DMSTB2[STANDBY, OPEN, ISTAT_SAME:TRUE]可加入实例DMSTB[PRIMARY, OPEN, ISTAT_SAME:TRUE]
[monitor]         2024-12-16 19:07:41: 实例DMSTB2[STANDBY, OPEN, ISTAT_SAME:TRUE]当前没有命令正在执行
[monitor]         2024-12-16 19:07:41: 实例DMSTB2[STANDBY, OPEN, ISTAT_SAME:TRUE]运行正常, 守护进程是OPEN状态,守护类型是GLOBAL

[monitor]         2024-12-16 19:07:41: 组(GRP1)当前活动实例运行正常

[monitor]         2024-12-16 19:07:41: 所有组中的活动实例运行正常!


3.5切换演练

choose switchover GRP1
Can choose one of the following instances to do switchover:
1: DMPRI
2: DMSTB2

switchover GRP1.DMPRI
此操作需谨慎, 将会导致主库发生切换, 是否继续使用GRP1.DMPRI执行SWITCHOVER操作(YES/NO/Y/N)?
yes
[monitor]         2024-12-16 19:38:29: 开始切换实例DMPRI
[monitor]         2024-12-16 19:38:29: 通知守护进程DMSTB切换SWITCHOVER状态
[monitor]         2024-12-16 19:38:29: 守护进程(DMSTB)状态切换 [OPEN-->SWITCHOVER]
[monitor]         2024-12-16 19:38:29: 切换守护进程DMSTB为SWITCHOVER状态成功
[monitor]         2024-12-16 19:38:29: 通知守护进程DMPRI切换SWITCHOVER状态
[monitor]         2024-12-16 19:38:29: 守护进程(DMPRI)状态切换 [OPEN-->SWITCHOVER]
[monitor]         2024-12-16 19:38:29: 切换守护进程DMPRI为SWITCHOVER状态成功
[monitor]         2024-12-16 19:38:29: 实例DMSTB开始执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句
[monitor]         2024-12-16 19:38:29: 实例DMSTB执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句成功
[monitor]         2024-12-16 19:38:29: 实例DMPRI开始执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句
[monitor]         2024-12-16 19:38:29: 实例DMPRI执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句成功
[monitor]         2024-12-16 19:38:29: 实例DMSTB开始执行ALTER DATABASE MOUNT语句
[monitor]         2024-12-16 19:38:29: 实例DMSTB执行ALTER DATABASE MOUNT语句成功
[monitor]         2024-12-16 19:38:29: 实例DMPRI开始执行SP_APPLY_KEEP_PKG()语句
[monitor]         2024-12-16 19:38:29: 实例DMPRI执行SP_APPLY_KEEP_PKG()语句成功
[monitor]         2024-12-16 19:38:29: 实例DMPRI开始执行ALTER DATABASE MOUNT语句
[monitor]         2024-12-16 19:38:30: 实例DMPRI执行ALTER DATABASE MOUNT语句成功
[monitor]         2024-12-16 19:38:30: 实例DMSTB开始执行ALTER DATABASE STANDBY语句
[monitor]         2024-12-16 19:38:30: 实例DMSTB执行ALTER DATABASE STANDBY语句成功
[monitor]         2024-12-16 19:38:30: 实例DMPRI开始执行ALTER DATABASE PRIMARY语句
[monitor]         2024-12-16 19:38:30: 实例DMPRI执行ALTER DATABASE PRIMARY语句成功
[monitor]         2024-12-16 19:38:30: 通知实例DMPRI修改所有归档状态无效
[monitor]         2024-12-16 19:38:30: 修改所有实例归档为无效状态成功
[monitor]         2024-12-16 19:38:30: 实例DMSTB开始执行ALTER DATABASE OPEN FORCE语句
[monitor]         2024-12-16 19:38:30: 实例DMSTB执行ALTER DATABASE OPEN FORCE语句成功
[monitor]         2024-12-16 19:38:30: 实例DMPRI开始执行ALTER DATABASE OPEN FORCE语句
[monitor]         2024-12-16 19:38:30: 实例DMPRI执行ALTER DATABASE OPEN FORCE语句成功
[monitor]         2024-12-16 19:38:30: 实例DMSTB开始执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句
[monitor]         2024-12-16 19:38:30: 实例DMSTB执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句成功
[monitor]         2024-12-16 19:38:30: 实例DMPRI开始执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句
[monitor]         2024-12-16 19:38:30: 实例DMPRI执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句成功
[monitor]         2024-12-16 19:38:30: 通知守护进程DMSTB切换OPEN状态
[monitor]         2024-12-16 19:38:30: 守护进程(DMSTB)状态切换 [SWITCHOVER-->OPEN]
[monitor]         2024-12-16 19:38:30: 切换守护进程DMSTB为OPEN状态成功
[monitor]         2024-12-16 19:38:30: 通知守护进程DMPRI切换OPEN状态
[monitor]         2024-12-16 19:38:30: 守护进程(DMPRI)状态切换 [SWITCHOVER-->OPEN]
[monitor]         2024-12-16 19:38:30: 切换守护进程DMPRI为OPEN状态成功
[monitor]         2024-12-16 19:38:30: 通知组(GRP1)的守护进程执行清理操作
[monitor]         2024-12-16 19:38:30: 清理守护进程(DMPRI)请求成功
[monitor]         2024-12-16 19:38:30: 清理守护进程(DMSTB)请求成功
2024-12-16 19:38:30 
#================================================================================#
GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG  
[monitor]         2024-12-16 19:38:30: 清理守护进程(DMSTB2)请求成功
GRP1             45331       FALSE           AUTO            FALSE     

[monitor]         2024-12-16 19:38:30: 实例DMPRI切换成功


tip
[monitor]         2024-12-16 19:39:30: [!!! 提示:本监视器不是确认监视器,在故障自动切换模式下如果发生主库故障,本监视器无法执行自动接管 !!!]

[monitor]         2024-12-16 19:39:30: 实例DMPRI[PRIMARY, OPEN, ISTAT_SAME:TRUE]不可加入其他实例,守护进程状态:OPEN,Open记录状态:VALID
[monitor]         2024-12-16 19:39:30: 实例DMPRI[PRIMARY, OPEN, ISTAT_SAME:TRUE]当前没有命令正在执行
[monitor]         2024-12-16 19:39:30: 实例DMPRI[PRIMARY, OPEN, ISTAT_SAME:TRUE]运行正常, 守护进程是OPEN状态,守护类型是GLOBAL

[monitor]         2024-12-16 19:39:30: 实例DMSTB[STANDBY, OPEN, ISTAT_SAME:TRUE]可加入实例DMPRI[PRIMARY, OPEN, ISTAT_SAME:TRUE]
[monitor]         2024-12-16 19:39:30: 实例DMSTB[STANDBY, OPEN, ISTAT_SAME:TRUE]当前没有命令正在执行
[monitor]         2024-12-16 19:39:30: 实例DMSTB[STANDBY, OPEN, ISTAT_SAME:TRUE]运行正常, 守护进程是OPEN状态,守护类型是GLOBAL

[monitor]         2024-12-16 19:39:30: 实例DMSTB2[STANDBY, OPEN, ISTAT_SAME:TRUE]可加入实例DMPRI[PRIMARY, OPEN, ISTAT_SAME:TRUE]
[monitor]         2024-12-16 19:39:30: 实例DMSTB2[STANDBY, OPEN, ISTAT_SAME:TRUE]当前没有命令正在执行
[monitor]         2024-12-16 19:39:30: 实例DMSTB2[STANDBY, OPEN, ISTAT_SAME:TRUE]运行正常, 守护进程是OPEN状态,守护类型是GLOBAL

[monitor]         2024-12-16 19:39:30: 组(GRP1)当前活动实例运行正常

[monitor]         2024-12-16 19:39:30: 所有组中的活动实例运行正常!
最后修改时间:2024-12-16 23:26:33
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论