DM8环境DSC集群故障模拟及日志分析

本文探讨了DSC集群中的故障处理过程,包括实例状态的变化、日志文件记录的详细流程,以及实例重新加入集群的具体步骤。介绍了DMCSS控制节点如何检测并处理故障实例,确保集群稳定运行。

上一节中讲到了DSC集群的服务管理和备份还原,这节对DSC集群的故障处理过程进行探讨。
首先,看一下实例环境中的数据库实例情况:

SQL> select * from v$instance;

LINEID     NAME INSTANCE_NAME INSTANCE_NUMBER HOST_NAME
---------- ---- ------------- --------------- ---------
           SVR_VERSION                DB_VERSION         
           -------------------------- -------------------
           START_TIME                                                                                          
           ----------------------------------------------------------------------------------------------------
           STATUS$ MODE$  OGUID       DSC_SEQNO   DSC_ROLE    
           ------- ------ ----------- ----------- ------------
1          DSC0 DSC0          1               dcs0
           DM Database Server x64 V8  DB Version: 0x7000a
           2021-05-01 23:05:12
           OPEN    NORMAL 0           0           Control node


used time: 76.219(ms). Execute id is 4.

在名为DSC0的实例中,该实例状态正常,目前为集群控制节点,查一下另外的实例情况:

SQL> select * from v$instance;

LINEID     NAME INSTANCE_NAME INSTANCE_NUMBER HOST_NAME SVR_VERSION                DB_VERSION         
---------- ---- ------------- --------------- --------- -------------------------- -------------------
           START_TIME                                                                                           STATUS$
           ---------------------------------------------------------------------------------------------------- -------
           MODE$  OGUID       DSC_SEQNO   DSC_ROLE   
           ------ ----------- ----------- -----------
1          DSC1 DSC1          2               dcs1      DM Database Server x64 V8  DB Version: 0x7000a
           2021-05-01 23:04:54                                                                                  OPEN
           NORMAL 0           1           Normal node


used time: 148.055(ms). Execute id is 1.

名为DSC1的实例状态也是正常的,目前为普通节点,下面模拟故障,通过系统KILL命令将实例进程强杀,确认实例进程已经不存在了,过程如下图所示:
在这里插入图片描述
在DISQL中进一步确认实例状态,此时DSC0中的DISQL已失去连接,在DSC1中的DISQL中查询实例,显示其状态已经切换为控制节点,如下:

SQL> select * from v$instance;

LINEID     NAME INSTANCE_NAME INSTANCE_NUMBER HOST_NAME SVR_VERSION               
---------- ---- ------------- --------------- --------- --------------------------
           DB_VERSION         
           -------------------
           START_TIME                                                                                          
           ----------------------------------------------------------------------------------------------------
           STATUS$ MODE$  OGUID       DSC_SEQNO   DSC_ROLE    
           ------- ------ ----------- ----------- ------------
1          DSC1 DSC1          2               dcs1      DM Database Server x64 V8 
           DB Version: 0x7000a
           2021-05-01 23:04:54
           OPEN    NORMAL 0           1           Control node
used time: 1.152(ms). Execute id is 2.

分析日志文件中的详细过程,查看集群日志文件中的记录
cat dm_CSS0_202105.log

2021-05-01 23:50:16.096 [INFO] dmcss P0000000707 T0000000000000000766  [DB]: Detected EP DSC0[0] break in PROCESS_OPEN
2021-05-01 23:50:16.099 [INFO] dmcss P0000000707 T0000000000000000766  [DB]: Set EP DSC0[0] as break EP
2021-05-01 23:50:16.105 [INFO] dmcss P0000000707 T0000000000000000766  [DB]: status change from (OPEN, STARTUP) to (PROCESS_EP_CRASH, CSS_SUB_STATUS_EP_CRASH_STEP1)
2021-05-01 23:50:16.105 [INFO] dmcss P0000000707 T0000000000000000766  [DB]: Control Node[0], break ep[0], recover ep[255], n_ok_ep[2]
2021-05-01 23:50:17.738 [INFO] dmcss P0000000707 T0000000000000000766  [DB]: Set EP DSC1[1] as Control node
2021-05-01 23:50:17.740 [INFO] dmcss P0000000707 T0000000000000000766  [DB]: CSS set cmd EP_CRASH_STEP1, dest_ep DSC1 seqno = 1, cmd_seq = 49
2021-05-01 23:50:17.748 [INFO] dmcss P0000000707 T0000000000000000766  [DB]: status change from (PROCESS_EP_CRASH, CSS_SUB_STATUS_EP_CRASH_STEP1) to (PROCESS_EP_CRASH, CSS_SUB_STATUS_EP_CRASH_WAIT_STEP1)
2021-05-01 23:50:17.748 [INFO] dmcss P0000000707 T0000000000000000766  [DB]: Control Node[1], break ep[0], recover ep[255], n_ok_ep[1]
2021-05-01 23:50:18.754 [INFO] dmcss P0000000707 T0000000000000000766  [DB]: CSS set cmd NONE, dest_ep DSC1 seqno = 1, cmd_seq 
达梦数据库 DM8 集群中,归档日志的配置和管理是保障数据安全、实现高可用性的重要环节。归档日志记录了所有对数据库的更改操作,可用于故障恢复、数据同步等场景。 ### 3.1 归档日志的基本概念 归档日志(Archive Log)是指在数据库运行过程中,将重做日志(Redo Log)文件归档保存的日志文件。当数据库处于归档模式时,所有的重做日志在被覆盖之前都会被归档到指定的位置[^2]。 ### 3.2 启用归档模式 在 DM8 集群中启用归档模式,需通过以下命令设置: ```sql ALTER DATABASE ARCHIVELOG; ``` 此命令将数据库切换为归档模式,确保重做日志在覆盖前被归档。 ### 3.3 配置归档日志路径及参数 归档日志的存储路径、大小限制等参数可通过 `dm.ini` 文件进行配置。主要参数包括: - `ARCH_INI`:是否启用归档配置文件,建议设为 `1`。 - `ARCH_DEST`:归档日志的目标路径,通常指向本地或共享存储目录。 - `ARCH_FILE_SIZE`:单个归档日志文件的最大大小(单位为 MB)。 - `ARCH_SPACE_LIMIT`:归档日志总空间上限(单位为 MB),设为 `0` 表示无上限[^1]。 也可通过 SQL 命令动态添加归档日志配置: ```sql ALTER DATABASE ADD ARCHIVELOG 'type=local, dest=<DIR>, file_size=<SIZEMB>, space_limit=0'; ``` 其中 `<DIR>` 是归档日志存放路径,`<SIZEMB>` 是单个文件大小限制[^2]。 ### 3.4 管理归档日志 归档日志的管理主要包括查看归档状态、删除旧归档日志、备份与恢复等操作。 - 查看当前归档状态: ```sql SELECT * FROM V$ARCHIVED_LOG; ``` - 删除过期归档日志(需谨慎操作): ```bash dmarch delete expired archivelog all; ``` - 手动触发归档日志切换: ```sql ALTER SYSTEM SWITCH LOGFILE; ``` ### 3.5 故障恢复中的归档日志使用 在数据库恢复过程中,RMAN 工具可以利用归档日志进行不完全恢复或时间点恢复。例如: ```bash RMAN> RECOVER DATABASE '/dm8/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC; ``` 该命令将根据归档日志和重做日志恢复数据库至一致性状态。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值