达梦数据库的模式与状态

达梦数据库模式

        达梦数据库支持3种数据库模式:Normal、Primary、Standby,三种模式只能在 MOUNT 状态下设置,模式之间可以相互转换(ALTER BATABASE 进行切换)。

1. 普通模式( NORMAL )

       用户可以正常访问数据库,操作没有限制;正常生成本地归档,但不发送实时归档、即时归档和异步归档

2. 主库模式( PRIMARY )

        用户可以正常访问数据库,所有对数据库对象的修改强制生成 REDO 日志,在归档有效时,发送 REDO 日志到备库;正常生成本地归档,支持实时归档、即时归档和异步归档。在归档有效时,发送REDO日志到备库。该模式下部分功能受限,包括不支持修改表空间文件名、不支持修改arch_ini参数

3. 备库模式( STANDBY )

       接收主库发送过来的 REDO 日志并重做。数据对用户只读。正常生成本地归档,正常发送异步归档日志;但实时归档、即时归档均强制失效。该模式下时间触发器、事件触发器等都失效。另外,还支持临时表的Insert/Delete/Update操作。因为临时表数据的修改不会产生Redo日志,所以同样主库对临时表的修改无法同步到备库

PS:对于新初始化的库,首次启动不允许使用 mount 方式,需要先正常启动并正常退出,然后才允许 mount 方式启动。

        一般情况下,数据库为 NORMAL模式,如果不指定 MOUNT 状态启动,则自动启动到 OPEN 状态。在需要对数据库配置时(如配置数据守护、数据复制),服务器需要指定 MOUNT 状态启动。当数据库模式为非 NORMAL 模式( PRIMARY 、 STANDBY 模式),无论是否指定启动状态,服务器启动时自动启动到 MOUNT 状态。

达梦数据库状态

达梦数据库的状态包括:startup、mount、after redo 、open、suspend、shutdown

1、startup状态

系统刚启动时设置为Startup状态

2、mount状态

       数据库在 Mount 状态下,不能修改数据,不能访问表、视图等数据库对象,但可以执行修改归档配置、控制文件和修改数据库模式等操作,也可以执行一些不修改数据库内容的操作,比如查询动态视图或者一些只读的系统过程。由于 Mount 状态不生成 PWR 日志,因此数据页可以正常刷盘,也正常推进检查点。系统从 Open 状态切换为 Mount 状态时, 会强制回滚所有活动事务,但不会强制清理(Purge)已提交事务,不会强制断开用户连接,也不会强制 Buffer 中的脏页刷盘

3、after redo 状态

       系统启动过程中联机日志重做完成后,回滚活动事务前设置为 After Redo 状态。非Standby 模式的实例在执行 alter database open 操作前,也会将系统设置为 After Redo 状态。

4、open状态

可以访问数据库对象,对外提供正常的数据库服务,不能进行控制文件维护、归档配置等操作。

将数据库修改为 Open 状态:(当系统处于 Primary/Standby 模式时,必须强制加上 FORCE 子句。)

ALTER DATABASE OPEN FORCE;  

5、suspend状态

         数据库在 Suspend 状态下,可以访问数据库对象,甚至可以修改数据,但限制 Redo 日志刷盘, 一旦执行 COMMIT 等触发 Redo 日志刷盘的操作时,当前操作将被挂起。相比 Open 到 Mount 的状态切换, Open 到 Suspend 的状态切换更加简单、高效,不会回滚任何活动事务,在状态切换完成后,所有事务可以继续执行。

应用场景:

在DataWatch主备系统中suspend状态的自动切换的使用:

          一般在修改归档状态之前将系统切换为 Suspend 状态,比如备库故障恢复后,在历史数据(归档日志)同步完成后,需要重新启用实时归档功能时:

1、将系统切换为 Suspend 状态,限制 Redo 日志写入联机 Redo 日志文件;

2、修改归档状态为 Valid;

3、重新将数据库切换为 Open 状态,恢复 Redo 日志写入功能;

4、备库与主库重新进入实时同步状态。

       实时归档失败时(比如网络故障导致), Primary 实例将试图切换成 Suspend状态,防止后续的日志写入。因为一旦写入,主备切换时有可能备库没有收到最后那次的RLOG_PKG,导致主库上多一段日志,很容易造成主备数据不一致。当实例成功切换为SUSPEND 状态时,可直接退出,强制丢弃多余的日志,避免主备数据不一致。

6、shutdown状态

       实例正常退出时设置为 Shutdown 状态,操作系统分配给达梦数据库的内存和后台进程、线程都被回收,数据文件、日志文件、配置文件等均处于离线状态,用户不再能使用数据库。

数据库状态之间切换

  1. open与mount状态可以相互切换
  2. open与suspend可以相互且切换
  3. mount和suspend状态不能直接转换
  4. 其他状态为系统内部状态,用户不能主动干预

更多专业技术交流请点击:达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台

你可能感兴趣的:(数据库)