达梦数据库(DM8)中归档模式的思考

说明:下文中没有特殊说明的话,达梦数据库指的是DM8版本,会用DM8代替。

一、什么是归档

实际上,在DM8中没有“归档”这个独立的词,一般是跟其他词组合在一起形成专有名词,如归档模式、归档日志文件。单独出现的时候往往指代的是将重做日志(REDO 日志)写入到归档文件的过程。下面就介绍一下与归档模式相关的概念。

1、归档模式

归档模式是与非归档模式对应的,这两种模式是DM8数据库的两种运行状态。
非归档模式下,数据库只会将重做日志吸入联机日志文件中进行存储;归档模式下,数据库会同时将重做日志写入联机日志文件和归档日志文件中分别进行存储。
无论是归档模式和非归档模式,联机日志文件都是存在的。

2、归档日志文件

归档日志文件,就是在归档模式下,重做日志被连续写入到归档日志后,所生成的归档日志文件。归档日志文件以归档时间命名,扩展名也是log。
采用归档模式会对系统的性能产生影响,然而系统在归档模式下运行会更加安全。

3、归档日志类型

  • 本地归档:在REDO日志写入联机日志文件后触发,将REDO日志写入到本地归档文件。由归档线程完成本地归档动作,最多可以设置8个本地归档。
  • 实时归档:在写入REDO日志到联机日志文件之前,通过MAL系统发送REDO日志到远程服务器,远程服务器接收到REDO日志后,返回确认消息后,执行后续操作。发送REDO日志失败,或从备库返回的数据库模式不是STANDBY,将数据库切换为SUSPEND,阻塞所有REDO日志的写入操作。只能配置1个实时归档。这种归档类型只能用在主从备份集群中。
  • 即时归档:即时归档在主库将REDO日志写入联机日志文件后,再通过MAL系统将REDO日志发送到备库。即时归档是读写分离集群的实现基础,与实时归档的主要区别是发送REDO日志的时间不同。一个主库可以配置1-8个即时备库。
  • 异步归档:在设定的时间点或者每隔设定时间,启动归档REDO日志发送。设置定时归档,必须确保至少有一个本地归档。最多可以设置8个异步归档。
  • 远程归档:将写入本地归档的REDO日志信息,发送到远程节点,并写入远程节点的指定归档目录中。最多可以配置8个远程归档。

二、何时配置归档、即什么时候需要归档模式

  • 联机备份数据库时必须要配置归档。联机备份时,大量的事务处于活动状态,为确保备份数据的一致性,需要同时备份一段日志(备份期间产生的REDO日志),因此要求数据库必须配置本地归档且归档必须处于开启状态。
  • 因故障退出的数据库的脱机备份。 对于故障退出的数据库进行脱机备份时,因为故障未刷盘的日志也必须存在于本地归档中,因此必须配置归档,如果本地归档缺失,需要用户先修复归档,然后再备份。
  • 备份表空间属于联机备份,必须配置归档。
  • 备份归档日志必须配置归档。

三、如何配置归档

1、配置本地归档

本地归档配置有两种方式:一是联机归档配置,数据库实例启动情况下,使用 SQL 语句完成 dmarch.ini 和 ARCH_INI 配置;二是手动配置归档,数据库实例未启动的情况下,手动编写 dmarch.ini 文件和设置参数 ARCH_INI。下面将分别说明这两种归档如何配置。

1.1联机归档配置

  • 1)修改数据库为 MOUNT 状态。
SQL>ALTER DATABASE MOUNT;
  • 2)配置本地归档。
SQL>ALTER DATABASE ADD ARCHIVELOG 'DEST = /home/dm_arch/arch, YPE = local, FILE_SIZE = 1024, SPACE_LIMIT = 2048';

注意:在配置本地归档的时候,可能会出现[-808]:非法归档配置目标.的错误。这是因为启动达梦数据库(DMSever)的用户和创建归档路径的用户不是同一个用户导致的。
解决方法:一是用启动达梦数据库的用户重新创建归档目录;二是用chmod或chown命令把归档目录的读写权限授予达梦数据库用户。
FILE_SIZE有值域限制,范围为0或1024~4294967294。否则会报错误
出现错误[-956]:归档配置属性空间限制值越界(0,1024~4294967294)
SPACE_LIMIT有值域限制,范围为:64-2048。否则会报
出现错误[-950]:归档配置属性文件大小值越界(64~2048).

  • 3)开启归档模式。
SQL>ALTER DATABASE ARCHIVELOG;
  • 4)修改数据库为 OPEN 状态。
SQL>ALTER DATABASE OPEN;

1.2手动配置归档

  • 1)手动编辑 dmarch.ini 文件,之后保存在 dm.ini 所在的目录。dmarch.ini 文件内容如下:
[ARCHIVE_LOCAL1] 
ARCH_TYPE = LOCAL
ARCH_DEST = d:\dm_arch\arch
ARCH_FILE_SIZE = 1024 
ARCH_SPACE_LIMIT = 2048
  • 2)编辑 dm.ini 文件,设置参数 ARCH_INI=1,保存。
  • 3)启动数据库实例,数据库已运行于归档模式。

配置远程归档

与本地归档一样,远程归档也是配置在 dmarch.ini 文件中,远程归档相关的主要几个配置项包括:

  • ARCH_TYPE 设置为 REMOTE,表示是远程归档
  • ARCH_DEST 设置为远程数据库实例名,表示 REDO 日志发送到这个节点
  • ARCH_INCOMING_PATH 设置为本地存储路径,用于保存 ARCH_DEST 实例发送的REDO 日志
    一般建议 DMDSC 集群中的节点,在配置本地归档之外,再交叉配置集群中所有其他节点的远程归档。查询 V D M A R C H I N I 、 V DM_ARCH_INI、V DMARCHINIVARCH_STATUS 等动态视图可以获取归档配置以及归档状态等相关信息。
    下面以两节点 DMDSC 集群为例,说明如何配置远程归档,DSC0 和 DSC1 是 DMDSC 集群中的两个实例,交叉进行 REMOTE 归档配置:
    DSC0 实例的 dmarch.ini 配置
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/dameng/arch_dsc0
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH = /dmdata/dameng/arch_dsc1
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0

DSC1实例的 dmarch.ini 配置

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL 
ARCH_DEST = /dmdata/dameng/arch_dsc1
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_INCOMING_PATH = /dmdata/dameng/arch_dsc0
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值