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

达梦数据库守护集群一键切换脚本

原创 若有所思 2024-10-28
127

1.switchover 切换

cat switchover_OA2.sh

#!/bin/bash
expect -c '
spawn /home/dmdba/dmdbms/bin/dmmonitor /dm/dmdata/OA/dmmonitor_manual.ini
send "login\r"
expect "username:"
send "sysdba\r"
expect "password:"
send "按照实际密码输入\r"
expect "choose switchover GRP_RW"

##切换OA2实例为主库
send "switchover GRP_RW.OA2\r"
interact
'

执行日志如下

[dmdba@xxxx ~]$ sh switchover_OA2.sh 
spawn /home/dmdba/dmdbms/bin/dmmonitor /dm/dmdata/OA/dmmonitor_manual.ini
login
[monitor]         2024-10-28 19:26:53: DMMONITOR[4.0] V8
[monitor]         2024-10-28 19:26:54: DMMONITOR[4.0] IS READY.

[monitor]         2024-10-28 19:26:54: Received message from(OA1)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2024-10-28 19:26:54  OPEN           OK        OA1              OPEN        PRIMARY   VALID    22       77517           77517           

[monitor]         2024-10-28 19:26:54: Received message from(OA2)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2024-10-28 19:26:54  OPEN           OK        OA2              OPEN        STANDBY   VALID    22       77517           77517           

username:sysdba
password:
[monitor]         2024-10-28 19:26:56: Login dmmonitor success!

switchover GRP_RW.OA2
[monitor]         2024-10-28 19:27:06: Start to switchover instance OA2
[monitor]         2024-10-28 19:27:06: Notify dmwatcher(OA1) switch to SWITCHOVER status
[monitor]         2024-10-28 19:27:06: Dmwatcher process OA1 status switching [OPEN-->SWITCHOVER] 
[monitor]         2024-10-28 19:27:07: Switch dmwatcher OA1 to SWITCHOVER status success
[monitor]         2024-10-28 19:27:07: Notify dmwatcher(OA2) switch to SWITCHOVER status
[monitor]         2024-10-28 19:27:07: Dmwatcher process OA2 status switching [OPEN-->SWITCHOVER] 
[monitor]         2024-10-28 19:27:09: Switch dmwatcher OA2 to SWITCHOVER status success
[monitor]         2024-10-28 19:27:09: Instance OA1 start to execute sql SP_SET_GLOBAL_DW_STATUS(0, 6)
[monitor]         2024-10-28 19:27:09: Instance OA1 execute sql SP_SET_GLOBAL_DW_STATUS(0, 6) success
[monitor]         2024-10-28 19:27:09: Instance OA2 start to execute sql SP_SET_GLOBAL_DW_STATUS(0, 6)
[monitor]         2024-10-28 19:27:09: Instance OA2 execute sql SP_SET_GLOBAL_DW_STATUS(0, 6) success
[monitor]         2024-10-28 19:27:09: Instance OA1 start to execute sql ALTER DATABASE MOUNT
[monitor]         2024-10-28 19:27:09: Instance OA1 execute sql ALTER DATABASE MOUNT success
[monitor]         2024-10-28 19:27:09: Instance OA2 start to execute sql SP_APPLY_KEEP_PKG()
[monitor]         2024-10-28 19:27:09: Instance OA2 execute sql SP_APPLY_KEEP_PKG() success
[monitor]         2024-10-28 19:27:09: Instance OA2 start to execute sql ALTER DATABASE MOUNT
[monitor]         2024-10-28 19:27:10: Instance OA2 execute sql ALTER DATABASE MOUNT success
[monitor]         2024-10-28 19:27:10: Instance OA1 start to execute sql ALTER DATABASE STANDBY
[monitor]         2024-10-28 19:27:10: Instance OA1 execute sql ALTER DATABASE STANDBY success
[monitor]         2024-10-28 19:27:10: Instance OA2 start to execute sql ALTER DATABASE PRIMARY
[monitor]         2024-10-28 19:27:11: Instance OA2 execute sql ALTER DATABASE PRIMARY success
[monitor]         2024-10-28 19:27:11: Notify instance OA2 to change all arch status to be invalid
[monitor]         2024-10-28 19:27:11: Succeed to change all instances arch status to be invalid
[monitor]         2024-10-28 19:27:11: Instance OA1 start to execute sql ALTER DATABASE OPEN FORCE
[monitor]         2024-10-28 19:27:12: Instance OA1 execute sql ALTER DATABASE OPEN FORCE success
[monitor]         2024-10-28 19:27:12: Instance OA2 start to execute sql ALTER DATABASE OPEN FORCE
[monitor]         2024-10-28 19:27:13: Instance OA2 execute sql ALTER DATABASE OPEN FORCE success
[monitor]         2024-10-28 19:27:13: Instance OA1 start to execute sql SP_SET_GLOBAL_DW_STATUS(6, 0)
[monitor]         2024-10-28 19:27:13: Instance OA1 execute sql SP_SET_GLOBAL_DW_STATUS(6, 0) success
[monitor]         2024-10-28 19:27:13: Instance OA2 start to execute sql SP_SET_GLOBAL_DW_STATUS(6, 0)
[monitor]         2024-10-28 19:27:13: Instance OA2 execute sql SP_SET_GLOBAL_DW_STATUS(6, 0) success
[monitor]         2024-10-28 19:27:13: Notify dmwatcher(OA1) switch to OPEN status
[monitor]         2024-10-28 19:27:13: Dmwatcher process OA1 status switching [SWITCHOVER-->OPEN] 
[monitor]         2024-10-28 19:27:14: Switch dmwatcher OA1 to OPEN status success
[monitor]         2024-10-28 19:27:14: Notify dmwatcher(OA2) switch to OPEN status
[monitor]         2024-10-28 19:27:14: Dmwatcher process OA2 status switching [SWITCHOVER-->OPEN] 
[monitor]         2024-10-28 19:27:14: Switch dmwatcher OA2 to OPEN status success
[monitor]         2024-10-28 19:27:14: Notify group(GRP_RW)'s dmwatcher to do clear
[monitor]         2024-10-28 19:27:15: Clean request of dmwatcher processer OA1 success
2024-10-28 19:27:15 
#================================================================================#
GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG  
GRP_RW           453331      FALSE           MANUAL          FALSE     


<<DATABASE GLOBAL INFO:>>
DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT    
10.186.10.11        52141        2024-10-28 19:27:15  GLOBAL    VALID     OPEN           OA2              OK        1     1     OPEN        PRIMARY   DSC_OPEN       REALTIME  VALID    

EP INFO:
INST_IP             INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT    FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG          
192.168.10.11       5236       OK        OA2              OPEN        PRIMARY   0          0            REALTIME  VALID    4456            79964           4456            79964           NONE                  

<<DATABASE GLOBAL INFO:>>
DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT    
10.186.10.10        52141        2024-10-28 19:27:15  GLOBAL    VALID     OPEN           OA1              OK        1     1     OPEN        STANDBY   DSC_OPEN       REALTIME  INVALID  

EP INFO:
INST_IP             INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT    FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG          
192.168.10.10       5236       OK        OA1              OPEN        STANDBY   0          0            REALTIME  INVALID  4454            77518           4454            77518           NONE                  

DATABASE(OA1) APPLY INFO FROM (OA2), REDOS_PARALLEL_NUM (1):
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[4454, 4454, 4454], (RLSN, SLSN, KLSN)[77518, 77518, 77518], N_TSK[0], TSK_MEM_USE[0] 
REDO_LSN_ARR: (77518)


#================================================================================#

[monitor]         2024-10-28 19:27:15: Clean request of dmwatcher processer OA2 success
[monitor]         2024-10-28 19:27:15: Switchover instance OA2 success

[monitor]         2024-10-28 19:27:17: Dmwatcher process OA2 status switching [OPEN-->RECOVERY] 
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2024-10-28 19:27:17  RECOVERY       OK        OA2              OPEN        PRIMARY   VALID    23       79964           79964           

[monitor]         2024-10-28 19:27:19: Dmwatcher process OA2 status switching [RECOVERY-->OPEN] 
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2024-10-28 19:27:20  OPEN           OK        OA2              OPEN        PRIMARY   VALID    23       79964           79964   

2.takeover切换

模拟其中一台机器宕机,然后执行此脚本。

cat takeover_OA1.sh

#!/bin/bash
expect -c '
spawn /home/dmdba/dmdbms/bin/dmmonitor /dm/dmdata/OA/dmmonitor_manual.ini
send "login\r"
expect "username:"
send "sysdba\r"
expect "password:"
send "按照实际密码输入\r"
expect "choose takeover force GRP_RW"

##切换OA1实例为主库
send "takeover force GRP_RW.OA1\r"
expect "Be careful to do so, this operation may cause data split, please confirm to continue or not(Y/N)?\r"
send "Y\r"
interact
'

执行日志如下

[dmdba@xxx ~]$ sh takeover_OA1.sh 
spawn /home/dmdba/dmdbms/bin/dmmonitor /dm/dmdata/OA/dmmonitor_manual.ini
login
[monitor]         2024-10-28 19:18:10: DMMONITOR[4.0] V8
[monitor]         2024-10-28 19:18:10: DMMONITOR[4.0] IS READY.

[monitor]         2024-10-28 19:18:10: Received message from(OA1)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            
                  2024-10-28 19:18:10  OPEN           OK        OA1              OPEN        STANDBY   NULL     21       75071           75071           

username:sysdba
password:
[monitor]         2024-10-28 19:18:15: Login dmmonitor success!

takeover force GRP_RW.OA1
Be careful to do so, this operation may cause data split, please confirm to continue or not(Y/N)?
Y
[monitor]         2024-10-28 19:18:26: Start to takeover use instance OA1
[monitor]         2024-10-28 19:18:26: Notify dmwatcher(OA1) switch to TAKEOVER status
[monitor]         2024-10-28 19:18:26: Dmwatcher process OA1 status switching [OPEN-->TAKEOVER] 
[monitor]         2024-10-28 19:18:27: Switch dmwatcher OA1 to TAKEOVER status success
[monitor]         2024-10-28 19:18:27: Instance OA1 start to execute sql SP_SET_GLOBAL_DW_STATUS(0, 7)
[monitor]         2024-10-28 19:18:27: Instance OA1 execute sql SP_SET_GLOBAL_DW_STATUS(0, 7) success
[monitor]         2024-10-28 19:18:27: Instance OA1 start to execute sql SP_APPLY_KEEP_PKG()
[monitor]         2024-10-28 19:18:28: Instance OA1 execute sql SP_APPLY_KEEP_PKG() success
[monitor]         2024-10-28 19:18:28: Instance OA1 start to execute sql ALTER DATABASE MOUNT
[monitor]         2024-10-28 19:18:28: Instance OA1 execute sql ALTER DATABASE MOUNT success
[monitor]         2024-10-28 19:18:28: Instance OA1 start to execute sql ALTER DATABASE PRIMARY
[monitor]         2024-10-28 19:18:28: Instance OA1 execute sql ALTER DATABASE PRIMARY success
[monitor]         2024-10-28 19:18:28: Notify instance OA1 to change all arch status to be invalid
[monitor]         2024-10-28 19:18:28: Succeed to change all instances arch status to be invalid
[monitor]         2024-10-28 19:18:28: Instance OA1 start to execute sql ALTER DATABASE OPEN FORCE
[monitor]         2024-10-28 19:18:29: Instance OA1 execute sql ALTER DATABASE OPEN FORCE success
[monitor]         2024-10-28 19:18:29: Instance OA1 start to execute sql SP_SET_GLOBAL_DW_STATUS(7, 0)
[monitor]         2024-10-28 19:18:29: Instance OA1 execute sql SP_SET_GLOBAL_DW_STATUS(7, 0) success
[monitor]         2024-10-28 19:18:29: Notify dmwatcher(OA1) switch to OPEN status
[monitor]         2024-10-28 19:18:29: Dmwatcher process OA1 status switching [TAKEOVER-->OPEN] 
[monitor]         2024-10-28 19:18:30: Switch dmwatcher OA1 to OPEN status success
[monitor]         2024-10-28 19:18:30: Notify group(GRP_RW)'s dmwatcher to do clear
2024-10-28 19:18:30 
#================================================================================#
GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG  
GRP_RW           453331      FALSE           MANUAL          FALSE     


<<DATABASE GLOBAL INFO:>>
DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT    
10.186.10.10        52141        2024-10-28 19:18:30  GLOBAL    VALID     OPEN           OA1              OK        1     1     OPEN        PRIMARY   DSC_OPEN       REALTIME  VALID    

EP INFO:
INST_IP             INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT    FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG          
192.168.10.10       5236       OK        OA1              OPEN        PRIMARY   0          0            REALTIME  VALID    4446            77517           4446            77517           NONE                  

#================================================================================#

[monitor]         2024-10-28 19:18:30: Clean request of dmwatcher processer OA1 success
[monitor]         2024-10-28 19:18:30: Success to takeover use instance OA1

备注:使用expect命令,需要先安装tcl包,然后再安装expect包。

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

评论