达梦数据库模式和状态

本文介绍了达梦数据库的三种模式:Normal、Primary和Standby,详细解析了各模式的特点及转换规则。Normal模式允许正常访问,Primary模式在归档有效时发送REDO日志,Standby模式则仅支持只读操作。数据库状态包括Startup、After Redo、Open、Mount和Suspend,Mount和Suspend状态便于执行特定维护操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库模式

在这里插入图片描述
Normal 模式
用户可以正常访问数据库,操作没有限制。正常生成本地归档,但不发送实时归档(Realtime)、即时归档(Timely)和异步归档(Async)。
将数据库切换为 Normal 模式:
ALTER DATABASE NORMAL;
Primary 模式
用户可以正常访问数据库,有极少限制。对临时表空间以外的所有的数据库对象的修改操作都强制生成 Redo 日志。正常生成本地归档,支持实时归档(Realtime)、即时归档(Timely)和异步归档(Async)。 在归档有效时,发送 REDO 日志到备库;
该模式下部分功能受限,包括:不支持修改表空间文件名、不支持修改 arch_ini 参数。
将数据库切换为Primary模式:
ALTER DATABASE PRIMARY;
Standby 模式
可以执行数据库备份(不能执行数据库作业备份)、查询等只读数据库操作。接收主库发送过来的REDO日志并重做。正常生成本地归档,正常发送异步归档日志;但实时归档(Realtime)、即时归档(Timely)均强制失效。该模式下时间触发器、事件触发器等都失效。
另外,还支持临时表的 Insert/Delete/Update 操作。因为临时表数据的修改不会产生 Redo 日志,所以同样主库对临时表的修改无法同步到备库。
将数据库切换为 Standby 模式:
ALTER DATABASE STANDBY;

注意事项

  1. 三种模式只能在 MOUNT 状态下设置,模式之间可以相互转换。
  2. 对于新初始化的库,首次启动不允许使用 mount 方式,需要先正常启动并正常退出,然后才允许 mount 方式启动。
  3. 一般情况下,数据库为 NORMAL 模式,如果不指定 MOUNT 状态启动,则自动启动到 OPEN状态。
  4. 在需要对数据库配置时(如配置数据守护、数据复制),服务器需要指定 MOUNT 状态启动。
  5. 当数据库模式为非 NORMAL 模式(PRIMARY、 STANDBY 模式),无论是否指定启动状态,服务器启动时自动启动到 MOUNT 状态。
  6. 修改 DMDSC 库的模式必须在 DMDSC 库所有实例都处于 MOUNT 状态下才能进行,只需要在一个节点上执行以上语句即可

数据库状态转换

在这里插入图片描述
Startup 状态
系统刚启动时设置为 Startup 状态。
After Redo 状态
系统启动过程中redo日志重做完成后,回滚活动事务前设置为 After Redo 状态。非Standby 模式的实例在执行 alter database open 操作前,也会将系统设置为 After Redo 状态。
Open 状态(99%的时间都处于open状态)
数据库处于正常提供服务的状态,但不能进行归档配置等操作。
Mount 状态
数据库在 Mount 状态下,限制 Redo 日志刷盘,不能修改数据,不能访问表、视图等数据库对象,但可以执行修改归档配置、控制文件和修改数据库模式等操作,也可以执行一些不修改数据库内容的操作,比如查询动态视图或者一些只读的系统过程。
系统从 Open 状态切换为 Mount 状态时,需要回滚所有活动事务,但不会断开用户连接,也不会强制 Buffer 中的脏页刷盘。
Suspend 状态
数据库在 Suspend 状态下,限制 Redo 日志刷盘,可以访问数据库对象,甚至可以修改数据,但是一旦执行 COMMIT 等操作触发 Redo 日志写盘时,当前操作将被挂起。
相比 Open 到 Mount 的状态切换, Open 到 Suspend 的状态切换更加简单、高效,不会回滚任何活动事务,在状态切换完成后,所有事务可以继续执行。
一般在修改归档状态之前将系统切换为 Suspend 状态,比如备库故障恢复后,在历史数据(归档日志)同步完成后,需要重新启用实时归档功能时:

  1. 将系统切换为 Suspend 状态,限制 Redo 日志写入联机 Redo 日志文件。
  2. 修改归档状态为 Valid。
  3. 重新将数据库切换为 Open 状态,恢复 Redo 日志写入功能。
  4. 备库与主库重新进入实时同步状态。
    另外,实时归档失败时(比如网络故障导致),Primary 实例将试图切换成 Suspend状态,防止后续的日志写入。因为一旦写入,主备切换时,有可能备库没有收到最后那次的RLOG_BUF,导致主库上多一段日志,很容易造成主备数据不一致。当实例成功切换为SUSPEND 状态时,可直接退出,强制丢弃多余的日志,避免主备数据不一致。

更多知识可以去达梦云适配中心了解 https://eco.dameng.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值