归档是实现数据守护的重要技术手段,达梦数据库的归档主要分为5类:本地归档,远程归档,实时归档,即时归档,异步归档。本地归档和远程归档的内容与写入时机和数据库模式相关:主库redo日志写入联机日志文件后,再进行本地归档和远程归档;备库收到主库产生的redo日志后,直接进行本地归档和远程归档,同时启动redo日志重演。下面主要介绍本地归档、实时归档和即时归档。
目录
2. 实时归档(实时主备集群、MPP集群)-REALTIME
一、归档类型
1. 本地归档:
写入REDO日志到本地归档文件,在REDO日志写入日志文件后触发,由归档线程完成本地归档动作,最多可以设置8个本地归档。若磁盘空间不足,所有本地归档一旦失效,系统会被强制挂起,直到磁盘释放,本地归档成功后,再恢复运行。
- nomal/primary模式库:将redo日志写入联机redo日志后,将对应的RLOG_PKG(日志包)由专门的归档线程写入本地归档日志文件中。--归档日志和联机日志内容一致。
- standby模式库:收到主库产生的redo日志后,直接进行本地归档,写入本地归档日志文件中,同事启动redo日志重演。--重演产生的redo日志写入联机日志文件中,归档文件保存主库的redo日志。
2. 实时归档-REALTIME-仅在主库生效:
在RLOG_PKG(REDO日志包)写入到联机REDO日志文件之前,通过MAL系统发送REDO日志到备库,备库将收到的RLOG_PKG标记为KEEP_PKG,加入日志重演系统,并马上响应主库,主库收到备库的响应消息后再将RLOG_PKG写入联机REDO日志文件中。若发送REDO日志失败,或从备库返回的数据库模式不是STANDBY,则将数据库切换为SUSPEND状态,阻塞所有REDO日志的写入操作。只能配置1个实时归档,一个主库可以配置1~8个实时备库。
3. 即时归档-TIMELY:
即时归档在主库将REDO日志写入联机REDO日志后,再通过MAL系统将Redo日志发送到备库。和实时归档的主要区别是发送Redo日志的时机不同;一个主库可以配置1~8个即时备库。
a. 事务一致模式(默认)-ARCH_WAIT_APPLY=1:主库事务提交触发Redo日志刷盘和即时归档,备库收到主库发送的Redo日志,重演完成后再响应主库。主库收到备库响应信息后,再响应用户的提交请求。
b. 高性能模式-ARCH_WAIT_APPLY=0:和实时归档一样,备库收到主库的Redo日志后,马上响应主库。
二、归档方式:
1. 何时配置归档:
1) 联机备份数据库:必须配置归档。联机备份时,大量的事务处于活动状态,为确保备份数据的一致性,需要同时备份一段日志(备份期间产生的Redo日志),所以此时必须配置归档,且确保归档是开启状态。
2) 脱机备份数据库:可以选择性地配置归档。正常退出的库的备份不需要考虑本地归档日志的完整性,可以不配置归档;对于故障退出的库的备份要求因故障未刷盘的日志也必须存在于本地归档中,因此必须配置归档,若本地归档缺失,需要用户先修复归档,然后再备份。
3) 备份归档日志:必须配置归档。
2. 配置本地归档:
归档配置有两种:
1)联机归档配置:在数据库实例启动的情况下,使用SQL语句完成dmarch.ini文件和ARCH.INI参数的设置。
a. 修改数据库为MOUNT状态:
alter database MOUNT;
b. 配置本地归档:
dest:归档文件存放路径;
type:归档类型,LOCAL(本地归档),REMOTE(远程归档);
file_size:单个归档文件大小(64M-2048M),default:1024M;
space_limit:归档空间上限(1024M-2147483647M),default:0;
alter database add archivelog 'dest=归档文件存放路径,type=local,file_size=1024,space_limit=2048';
c. 开启归档模式:
alter database archivelog(开启归档模式)|noarchivelog(关闭归档模式);
d. 修改数据的状态为OPEN状态:
alter database OPEN;
2)手动归档配置:在数据库实例未启动的情况下,手动编写dmarch.ini文件和设置ARCH_INI参数的值。
a. 手动编辑dmarch.ini文件:
b. 编辑dm.ini文件,设置ARCH_INI参数的值为1。
c. 重启数据库实例。