数据库运维
记录DBA学习成长历程

DM8-数据守护状态、模式

文章目录

DMDSC(共享集群)状态

DMDSC状态表示DMDSC集群节点状态,和数据库的状态不同
startup:节点启动状态,需要通过DMCSS工具交互,确定控制节点,执行日志重做等相关步骤,进入到OPEN状态。
OPEN:实例正常工作状态,当集群内发生节点故障或启动节点重加入步骤时,可以进入crash_recv或者err_ep_add状态,处理完后在回到open状态。
CRASH_RECV:节点故障状态
ERR_EP_ADD:故障节点重加入状态。

数据库模式

Normal模式
提供正常数据库服务,操作没有限制,正常生成本地归档,但不发送实时归档realtime,即时归档timely,异步归档async
Primary模式
提供正常数据库服务,操作有极少限制,该模式下部分功能受限,包括:
1、不支持修改表空间文件名
2、不支持修改arch_ini参数
正常生成本地归档,支持实时归档即时归档异步归档
primary模式下,对临时表空间以外的所有数据库对象的修改操作都强制生成redo日志
Standby模式
可以执行数据库备份、查询等只读数据库操作。正常生成本地归档,正常发送异步归档redo日志。但实时归档和异步归档强制失效,该模式下时间触发器和时间触发器等都失效

可以通过sql语句切换数据库模式,模式切换必须在Mount状态下执行
alter database primary;
alter database standby;
alter database normal;
!!!!!!!!!!!修改DMDSC库的模式必须在DMDSC库所有实例都处于MOUNT状态下才能进行,只需要在一个节点上执行即可

数据库状态

Startup状态
系统刚启动时设置为Startup状态。
After Redo状态
系统启动过程中联机日志重做完成后,回滚活动事务前设置为After Redo状态。非Standby模式的实例在之执行alter database open操作前,也将系统设置为After Redo状态。
Open状态
数据库处于正常提供服务的状态,但不能进行归档配置等操作。
Mount状态
数据库在Mount状态下,不能修改数据,不能访问表、视图等数据库对象,但可以执行修改归档配置、控制文件和修改数据库模式等操作,也可以执行一些不修改数据库内容的 操作,比如查询动态视图或者一些只读的系统过程。由于 Mount 状态不生成 PWR 日志,因 此数据页可以正常刷盘,也正常推进检查点。
系统从 Open 状态切换为 Mount 状态时,会强制回滚所有活动事务,但不会强制清理 (Purge)已提交事务,不会强制断开用户连接,也不会强制 Buffer 中的脏页刷盘。
Suspend 状态
数据库在 Suspend 状态下,可以访问数据库对象,甚至可以修改数据,但限制 Redo 日志刷盘,一旦执行 COMMIT 等触发 Redo 日志刷盘的操作时,当前操作将被挂起。
相比 Open 到 Mount 的状态切换,Open 到 Suspend 的状态切换更加简单、高效,不 会回滚任何活动事务,在状态切换完成后,所有事务可以继续执行。
一般在修改归档状态之前将系统切换为 Suspend 状态,比如备库故障恢复后,在历史 数据(归档日志)同步完成后,需要重新启用实时归档功能时:
1. 将系统切换为 Suspend 状态,限制 Redo 日志写入联机 Redo 日志文件;
2. 修改归档状态为 Valid;
3. 重新将数据库切换为 Open 状态,恢复 Redo 日志写入功能;
4. 备库与主库重新进入实时同步状态。
另外,实时归档失败时(比如网络故障导致),Primary 实例将试图切换成 Suspend 状态,防止后续的日志写入。因为一旦写入,主备切换时有可能备库没有收到最后那次的 RLOG_PKG,导致主库上多一段日志,很容易造成主备数据不一致。当实例成功切换为 SUSPEND 状态时,可直接退出,强制丢弃多余的日志,避免主备数据不一致。

!!!!!!!!!!!修改 DMDSC 库的状态为 SUSPEND 时,库内所有实例都不能处于 MOUNT 状态, 只需要在一个节点上执行 ALTER DATABASE SUSPEND 语句即可。

!!!!!!!!!对 DMDSC 集群,除了修改 Suspend 是同步操作,只需要在一个节点执行外, 其他状态修改都需要在每个节点上各自单独执行。
将数据库修改为 Open 状态。当系统处于 Primary/Standby 模式时,必须强制 加上 FORCE 子句。
ALTER DATABASE OPEN [FORCE];
ALTER DATABASE MOUNT;
ALTER DATABASE SUSPEND;

由于 dmwatcher 根据数据库模式、状态等信息作为故障处理、故障恢复的 依 据 , 建 议 在 配 置 数 据 守 护 过 程 中 , 修 改 dm.ini 参 数 ALTER_MODE_STATUS 为 0,限制用户直接通过 SQL 语句修改数据库状态、 模式以及 OGUID,避免 dmwatcher 做出错误的决策。
内容来自官方文档!

赞(1)
MySQL学习笔记 » DM8-数据守护状态、模式