当前位置: 首页 > news >正文

达梦数据库归档介绍

一、什么是归档

数据库归档是一种数据管理策略,它涉及将旧的、不经常访问的数据移动到一个单独的存储设备,以便在需要时可以检索,同时保持数据库的性能和效率。

归档的主要目标是为了释放数据库中的空间,以便更有效地利用高性能的存储设备来存储更频繁访问或更新的数据。同时,归档也确保了可能需要的旧数据得以保留,以便在需要时能够检索。

数据库归档的优点包括提高数据库性能、节省存储空间、数据保护以及支持数据分析和报告等。通过减少数据库中的数据量,归档可以提高查询速度和数据库性能。归档的数据通常存储在成本较低的存储设备上,这可以节省高性能存储设备的空间。此外,许多行业和地区的法规要求公司在一定期限内保留某些数据,通过归档,公司可以满足这些要求同时不影响数据库的性能。

二、达梦数据库的归档

归档是实现数据守护系统的重要技术手段,根据功能与实现方式的不同,DM数据库的归档可以分为6类:本地归档、远程归档、实时归档、即时归档、异步归档和同步归档。其中,本地归档日志的内容与写入时机与数据库模式相关;主库Redo日志写入联机日志文件后,再进行本地归档;备库收到主库产生的Redo日志后,直接进行本地归档,同时启动Redo日志重演。

归档模式

说明

本地归档

在REDO日志写入联机日志文件后触发,将REDO日志写入到本地归档文件。由归档线程完成本地归档动作,最多可以设置8个本地归档。

实时归档

在写入REDO日志到联机日志文件之前,通过MAL系统发送REDO日志到远程服务器,远程服务器接收到REDO日志后,返回确认消息后,执行后续操作。发送REDO日志失败,或从备库返回的数据库模式不是STANDBY,将数据库切换为SUSPEND,阻塞所有REDO日志的写入操作。只能配置1个实时归档。这种归档类型只能用在主从备份集群中。

即时归档

即时归档在主库将REDO日志写入联机日志文件后,再通过MAL系统将REDO日志发送到备库。即时归档是读写分离集群的实现基础,与实时归档的主要区别是发送REDO日志的时间不同。一个主库可以配置1-8个即时备库。

异步归档

在设定的时间点或者每隔设定时间,启动归档REDO日志发送。设置定时归档,必须确保至少有一个本地归档。最多可以设置8个异步归档。

同步归档

同步归档的执行流程是,主库在归档日志刷盘后,将Redo日志发送到备库,备库收到Redo日志(RLOG_PKG)后将其加入日志重演任务系统,并马上响应主库,不需要等待Redo日志重演结束后再响应主库。

远程归档

远程归档专门用于DMDSC环境中。将写入本地归档的REDO日志信息,发送到远程节点,并写入远程节点的指定归档目录(共享存储)中。最多可以配置8个远程归档。

  1. 本地归档

本地归档就是Redo日志写入到本地归档日志文件的过程。配置本地归档情况下Normal/Primary模式库在Redo日志写入联机Redo日志文件后,将对应的RLOG_PKG由专门的归档线程写入本地归档日志文件中。Standby模式库收到主库产生的Redo日志后,直接进行本地归档,写入本地归档日志文件中,同时启动Redo日志重演。

1)查看是否开启归档

a.配置本地归档

修改数据库为mount状态ALTER DATABASE MOUNT;

开启归档sp_set_para_value(1,'ARCH_INI',1);

配置本地归档

alterdatabaseaddarchivelog'DEST=/home/dmdba/dmarch,type=local,file_size=128,space_limit=1024';

修改数据库为openalterdatabaseopen;

2.远程归档

远程归档适用于dsc集群中,是将当前节点的归档目标配置在远程节点上,以此共享归档日志文件,同时,远程节点上配置的本地归档需要在共享磁盘上。在一个DSC集群中,一台机器配置远程归档到另一台机器上,而另一台机器也配置远程归档到这台机器上。

3.实时归档

与本地归档写入保存在磁盘中的日志文件不同,实时归档将主库产生的Redo日志通过MAL系统传递到备库,实时归档是实时主备和MPP主备的实现基础。实时归档只在主库生效,一个主库可以配置1~8个实时备库。

实时归档的执行流程是,主库在Redo日志(RLOG_PKG)写入联机日志文件前,将Redo日志发送到备库,备库收到Redo日志(RLOG_PKG)后标记为KEEP_RLOG_PKG,将原KEEP_RLOG_PKG加入日志重演任务系统,并马上响应主库,不需要等待Redo日志重演结束后再响应主库。主库收到备库的响应消息,确认备库已经收到Redo日志后,再将Redo日志写入联机日志文件中。

另外,实时归档也可以支持读写分离集群,实时归档也分为两种模式:事务一致模式和高性能模式,可以通过dmarch.ini中的ARCH_WAIT_APPLY或WAIT_APPLY配置项来设置实时归档的模式。

通常在配置实时归档时,dmarch.ini中ARCH_WAIT_APPLY配置为0,采用高性能模式

4.即时归档

即时归档与实时归档不同的在于,即时归档是在主库将 Redo 日志写入联机日志文件后,通过 MAL 系统将 Redo 日志发送到备库。即时归档与实时归档的主要区别是 Redo 日志的发送时机不同。一个主库可以配置 1~8 个即时备库。

根据备库重演 Redo 日志和响应主库时机的不同,即时归档分为两种模式:事务一致模式和高性能模式。即时归档模式可以通过dmarch.ini 中的 ARCH_WAIT_APPLY 或 WAIT_APPLY 配置项来设置。其中,ARCH_WAIT_APPLY 配置项默认值为 1,表示事务一致模式。

  实时归档与即时归档不同:实施归档和即时归档最主要的区别在于写入联机日志文件的时机,实时归档在写入联机日志文件前发送,而即时归档在写入联机日志文件后再发送。实时归档ARCH_WAIT_APPLY配置为0,即时归档ARCH_WAIT_APPLY配置为1.

5.异步归档

异步归档由配置的定时器进行触发,根据异步备库的 KEEP LSN 信息,扫描本地归档目录获取 Redo 日志,并通过 MAL 系统将 Redo 日志发送到异步备库。异步备库的 Redo 日志重演过程与实时归档等其他类型的归档完全一致。

6.同步归档

同步归档在主库归档日志刷盘后,通过 MAL 系统将 Redo 日志发送到备库。同步备库的 Redo 日志重演过程与实时归档等其他类型的归档完全一致。

三、归档状态

归档状态概述

在达梦数据库中,归档状态主要分为以下几种:

  1. Valid:归档有效,允许执行数据库归档操作。
  2. Invalid:归档无效,主数据库不向备数据库发送联机Redo日志。
  3. Async_send:归档无效,但主库正在同步历史数据到备库。

归档状态转换时机

  1. 初始化状态

    • 主备库启动后,所有备库的归档状态默认为 Valid
    • 在守护进程打开主库之前,若发现备库数据不一致,归档状态会被修改为 Invalid
  2. 实时备库和即时备库故障恢复

    • 当实时备库或即时备库故障恢复时,主库将同步历史数据,守护进程会将主库状态修改为 Suspend,并将备库的归档状态从 Invalid 修改为 Valid
    • 当守护进程再次打开主库后,主备库数据恢复为一致状态。
  3. 同步备库故障恢复

    • 主库开始同步历史数据时,备库的归档状态从 Invalid 修改为 Async_send
    • 在此过程中,日志刷盘线程会挂起,以确保备库能够追赶到主库的状态。主库到备库的归档状态从 Async_send 修改为 Valid,然后唤醒日志刷盘线程,确保主备库数据一致。
  4. 失败处理

    • 如果主库向实时备库发送日志失败,归档状态会被修改为 Invalid
    • 主库发送即时归档失败后,归档状态直接改为 Invalid
    • 主库发送同步归档失败后,归档状态也直接改为 Invalid,且不会进入 Suspend 状态。
  5. 条件恢复

    • 如果主库发现同步备库的归档状态为 Invalid,且满足故障恢复条件,将主库到备库的归档状态从 Invalid 改为 Async_send,并开始同步历史数据。同步完成后,备库的归档状态将修改为 Valid

总结:达梦数据库的归档机制通过状态管理实现数据的高可用性和一致性。不同的归档状态和转换时机确保了在发生故障时能够快速恢复,保持主备库之间的数据同步。这种机制对于保障数据库的可靠性和稳定性至关重要。通过合理的状态管理,达梦数据库能够在各种场景下有效应对故障,确保数据的安全和完整。

达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • MyBatis TypeHandler详解
  • 微信小程序教程007:数据绑定
  • Spring Task详解
  • 瑞芯微平台RK3568系统开发(2)Camera 开发2
  • PHP压缩打包,下载目录或者文件,解压zip文件
  • 【27】23种设计模式
  • UGUI跟随鼠标
  • 基于python的百度迁徙迁入、迁出数据分析(三)
  • DOS攻击实验
  • 语音合成大模型汇总
  • Linux 4: Bash
  • 大模型学习笔记十四:Agent模型微调
  • Ubuntu20.04 设置静态ip
  • AI驱动的城市治理:露天商贩监测识别技术在街道安全管理中的应用
  • 主要的软件设计模式及其在Kotlin中的实现示例
  • Google 是如何开发 Web 框架的
  • @angular/forms 源码解析之双向绑定
  • 2017-08-04 前端日报
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • co模块的前端实现
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • PHP的类修饰符与访问修饰符
  • 漂亮刷新控件-iOS
  • 巧用 TypeScript (一)
  • 设计模式(12)迭代器模式(讲解+应用)
  • 算法系列——算法入门之递归分而治之思想的实现
  • 新版博客前端前瞻
  • 进程与线程(三)——进程/线程间通信
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • # 消息中间件 RocketMQ 高级功能和源码分析(七)
  • ###项目技术发展史
  • #Z0458. 树的中心2
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (STM32笔记)九、RCC时钟树与时钟 第一部分
  • (zhuan) 一些RL的文献(及笔记)
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (转)c++ std::pair 与 std::make
  • (转)jdk与jre的区别
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .NET Framework 3.5安装教程
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .NET构架之我见
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • /proc/vmstat 详解
  • [10] CUDA程序性能的提升 与 流
  • [2013][note]通过石墨烯调谐用于开关、传感的动态可重构Fano超——
  • [2669]2-2 Time类的定义
  • [Android Studio 权威教程]断点调试和高级调试
  • [C#] 如何调用Python脚本程序
  • [C]整形提升(转载)
  • [DDR5 Jedec 4-1] 预充电命令 Precharge