dmarch.ini--dba手册
dmarch.ini–dba手册
摘要
本文详细介绍了数据库归档的四种类型:本地归档、实时归档、即时归档和异步归档。本地归档在写入REDO日志后触发实时归档在写入前通过MAL发送,即时归档在写入联机日志后发送,异步归档则按设定时间点发送。每种归档都有其特定的优缺点,如事务一致性、性能和容错处理。此外,还讨论了归档状态、失败处理和备库响应机制,强调了选择合适归档模式的重要性。
正文
| 类型比较 | 本地归档 | 实时归档 | 即时归档 | 异步归档 |
|---|---|---|---|---|
| 备库数量 | 0 | 1~8 | 1~8 | 1~8 |
| 通过 MAL 传递数据 | 否 | 是 | 是 | 是 |
| 归档时机 | 写入联机日志后,再写入本地归档日志文件 | 写入联机日志前,发送到备库 | 写入联机日志后,发送到备库 | 定时启动 |
| 归档写入 ( 发 送) | 归档线程 | 日志刷盘线程 | 日志刷盘线程 | 异步归档线程 |
| 数据来源 | RLOG_PKG | RLOG_PKG | RLOG_PKG | 本地归档文件 |
| 失败处理 | 磁盘空间不足时,系统挂起等待用户释放出足够的磁盘空间。磁盘损坏导致写入失败时,系统会强制HALT | Suspend 数据库,保持归档状态不变,等待守护进程干预 | Suspend 数据库,并设置归档为无效状态,等待守护进程干预 | 不做处理,等待下次触发继续发送 |
| 备库响应时机 | 无 | 收到立即响应 | 事务一致模式:重演完成后响应;高性能模式:收到立即响应 | 收到立即响应 |
| 源库模式 | PrimaryStandbyNormal | Primary | Primary | PrimaryStandby |
| 目标库模式 | 无 | Standby | Standby | Standby |
任意一个备库的实时归档/即时归档失败(即使其他备库归档成功了),主库
都会切换为 Suspend 状态。
dmarch.ini 用于本地归档和远程归档。dmarch.ini 的配置项见表 2.4。
ARCHIVE_TIMELY:即时归档
在主库将 Redo 日志写入联机日志文件后
dmarch.ini 中的 ARCH_WAIT_APPLY 配置
项(默认值为 1)来确定,1 表示事务一致模式,0 表示高性能模式
2.2.11.8 归档状态
本地归档、实时归档和即时归档均包含两种状态:Valid 和 Invalid。异步归档只有
一种归档状态:Valid。 Valid 归档有效,正常执行各种数据库归档操作。
Invalid 归档无效,主数据库不发送联机 Redo 日志到备数据库。
ARCHIVE_REALTIME:实时归档
实时归档是实时主备和 MPP 主备的实现基础。
主库在 Redo 日志(RLOG_PKG)写入联机日志文件前
不需要等待 Redo 日志重演结束后再响应主库
,实时归档也分为两种模式:事务一致模式和高性能模式,
dmarch.ini 中的 ARCH_WAIT_APPLY 配置项默认值为 0用高性能模式,
事务一致模式
主库事务提交触发 Redo 日志刷盘和即时归档,备库收到主库发
送的 Redo 日志,并重演完成后再响应主库。主库收到备库响应消息后,再响应用户的提交
请求。事务一致模式下,同一个事务的 SELECT 语句无论是在主库执行,还是在备库执行,
查询结果都满足 READ COMMIT 隔离级要求。
高性能模式
与实时归档一样,备库收到主库发送的 Redo 日志后,马上响应
主库,再启动日志重演。高性能模式下,备库与主库的数据同步存在一定延时(一般情况下
延迟时间非常短暂,用户几乎感觉不到),不能严格保证事务一致性。
事务一致模式下,主备库之间严格维护事务一致性,但主库要等备库 Redo 日志重演完
成后,再响应用户的提交请求,事务提交时间会变长,存在一定的性能损失。高性能模式则
通过牺牲事务一致性获得更高的性能和提升系统的吞吐量。用户应该根据实际情况,选择合
适的即时归档模式。
24.3.
24.3.1 本地归档
写入 REDO 日志到本地归档文件,在 REDO 日志写入日志文件后触发,由归档线程完成
本地归档动作,最多可以设置 8 个本地归档。若磁盘空间不足,所有本地归档一旦失效,系
统会被强制挂起,直到磁盘空间释放,本地归档成功后,再继续执行。
24.3.2 实时归档
在写入 REDO 日志到日志文件之前,通过 MAL 系统发送 REDO 日志到远程服务器,远程
服务器收到 REDO 日志后,返回确认消息。收到确认消息后,执行后续操作,发送 REDO 日
志失败,或从备库返回的数据库模式不是 STANDBY,将数据库切换为 SUSPEND 状态,阻塞
所有 REDO 日志的写入操作。只能配置 1 个实时归档。
24.3.3 即时归档
即时归档在主库将 Redo 日志写入联机 Redo 日志文件后,再通过 MAL 系统将 Redo 日
志发送到备库。即时归档是读写分离集群的实现基础,与实时归档的主要区别是发送 Redo
日志的时机不同。一个主库可以配置 1~8 个即时备库。
24.3.4 异步归档
在设定的时间点或者每隔设定时间,启动归档 REDO 日志发送。设置定时归档,必须确
保至少有一个本地归档。系统调度线程根据设定,触发归档 REDO 日志发送事件。通过 MAL
系统,获取远程服务器的当前 LSN,生成发送归档 REDO 日志任务,加入任务队列。归档任
务线程获取任务,通过 MAL 系统,发送到远程服务器。最多可以设置 8 个异步归档。
24.3.5 远程归档
远程归档就是将写入本地归档的 REDO 日志信息,发送到远程节点,并写入远程节点的
指定归档目录中。远程归档与本地归档的主要区别是 REDO 日志写入的位置不同,本地归档
将 REDO 日志写入数据库实例所在节点的磁盘,而远程归档则将 REDO 日志写入到其他数据
库实例所在节点的指定归档目录。远程归档日志文件的命名规范和本地归档日志文件保持一
致,都是以归档名+归档文件的创建时间进行组合命名。最多可以配置 8 个远程归档。


相关说明
-
归档类型 ARCH_TYPE 有以下几种:
-
本地归档 LOCAL(一台主库最多配 8 个)
-
远程实时归档 REALTIME(一台主库最多配 8 个)
-
远程异步归档 ASYNC(一台主库最多配 8 个)
-
即时归档 TIMELY(一个主库最多配 8 个)
-
远程归档 REMOTE(一个主库最多配 8 个)
-
-
配置名[ARCHIVE_*]表示归档名,在配置文件中必须唯一。
-
不能存在相同实例名的不同归档;
-
不能存在 DEST 相同的不同归档实例;
-
ARCH_TIMER_NAME 为定制的定时器名称,定时器配置见 dmtimer.ini;
-
ARCH_SPACE_LIMIT 表示归档文件的磁盘空间限制,如果归档文件总大小超过这
个值,则在生成新归档文件前会删除最老的一个归档文件。

被折叠的 条评论
为什么被折叠?



