DM8 redo日志管理及归档模式切换

您所在的位置:网站首页 数据库的事务日志用于数据库的 DM8 redo日志管理及归档模式切换

DM8 redo日志管理及归档模式切换

2023-07-10 04:47| 来源: 网络整理| 查看: 265

在恢复操作中最重要的结构是联机 REDO 日志。REDO 日志存放在日志表空间文件中,这些文件存储数据库所做的所有物理更改信息。达梦数据库每一个实例都有一个相关联的联机重做日志,通过重做日志可以保证数据库的完整性和一致性。 DM SERVER 的 REDO 日志用于存储被修改数据的新值,包括事务对数据文件和回滚段的修改。REDO 日志每次被修改以后,都会自动生成一个新的日志序列值 LSN(Log Sequence Number)。LSN 取值范围 0~正无穷大,新建的库 LSN 为 0,以后日志每被写入一次,LSN值增加 1。 REDO 日志里包含有一种特殊的记录,叫 PWR(Page Written Record)日志。PWR 包括(ts_id, fil_id, page_no, page_lsn)信息。每个数据页刷盘时,都会生成一条对应的 PWR 日志。PWR 日志的 lsn 与上一个日志的 lsn 相同。

在以下情况下可以利用 PWR日志:

RAC 故障恢复时:利用 PWR 日志减少加载磁盘数据页的次数;故障恢复时:利用 PWR 日志提升 redo 速度;增量备份时:利用 PWR 日志提升备份速度。

DM系统采用了单独的日志文件来存储 REDO 日志,DM 至少有两个日志文件,日志文件是循环利用的。日志文件由日志表空间管理

redo日志归档

DM 服务器可以运行在两种模式下,即归档模式和非归档模式,这两种模式可以由用户进行设置,系统在归档模式下运行时,会产生归档日志文件,此时系统管理员应该事先预留出足够的磁盘空间以便存储归档日志文件。通过 dm.ini 和 dmarch.ini 可以配置归档。归档日志有五种类型。

本地归档

写入 REDO 日志到本地归档文件,在 REDO 日志写入日志文件后触发,由归档线程完成本地归档动作,最多可以设置 8 个本地归档。若磁盘空间不足,所有本地归档一旦失效,系统会被强制挂起,直到磁盘空间释放,本地归档成功后,再继续执行。

实时归档

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

即时归档

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

异步归档

在设定的时间点或者每隔设定时间,启动归档 REDO 日志发送。设置定时归档,必须确保至少有一个本地归档。系统调度线程根据设定,触发归档 REDO 日志发送事件。通过 MAL系统,获取远程服务器的当前 LSN,生成发送归档 REDO 日志任务,加入任务队列。归档任务线程获取任务,通过 MAL 系统,发送到远程服务器。最多可以设置 8 个异步归档。

远程归档

远程归档就是将写入本地归档的 REDO 日志信息,发送到远程节点,并写入远程节点的指定归档目录中。远程归档与本地归档的主要区别是 REDO 日志写入的位置不同,本地归档将 REDO 日志写入数据库实例所在节点的磁盘,而远程归档则将 REDO 日志写入到其他数据库实例所在节点的指定归档目录。远程归档日志文件的命名规范和本地归档日志文件保持一致,都是以归档名+归档文件的创建时间进行组合命名。最多可以配置 8 个远程归档。

V$RLOG :显示日志的总体信息。通过该视图可以了解系统当前日志事务号 LSN 的情况、归档日志情况、检查点的执行情况等。 V$RLOGBUF:显示日志 BUFFER 信息。通过该视图可以查询日志 BUFFER 的使用情况,如 BUFFER 状态、总大小、已使用大小,这样可以带来帮助,如 BUFFER 剩余空间过小产生的失败等。 V$RLOGFILE: 显示日志文件的具体信息。包括文件号、完整路径、文件的状态、文件大小等等。 V$ARCHIVED_LOG:显示当前实例的所有归档日志文件信息。

redo日志配置

查看当前Redo log 信息:

SQL> select file_id,path,rlog_size/1024/1024 as "Size" from V$RLOGFILE; 行号 FILE_ID PATH Size ---------- ----------- --------------------- -------------------- 1 0 /dm8/data/DM/DM01.log 256 2 1 /dm8/data/DM/DM02.log 256 已用时间: 31.102(毫秒). 执行号:1205.

查看DB 当前正在适用的Redo log:

SQL> select cur_file from V$RLOG; 行号 CUR_FILE ---------- ----------- 1 0 已用时间: 0.992(毫秒). 执行号:1206.

在DB open的状态下,可以添加新的Redo log file。 数据文件大小最小为 4096*页大小,如页大小为 8K,则可添加的文件最小值为 4096*8k=32M。如添加重做大小为 128M。

SQL> alter database add logfile '/dm8/data/DM/DM03.log' size 256; 操作已执行 已用时间: 224.371(毫秒). 执行号:1207. SQL> select file_id,path,rlog_size/1024/1024 as "Size" from V$RLOGFILE; 行号 FILE_ID PATH Size ---------- ----------- --------------------- -------------------- 1 0 /dm8/data/DM/DM01.log 256 2 1 /dm8/data/DM/DM02.log 256 3 2 /dm8/data/DM/DM03.log 256 已用时间: 12.239(毫秒). 执行号:1208.

修改现有REDO LOG大小:

SQL> SQL> alter database resize logfile '/dm8/data/DM/DM03.log' to 512; 操作已执行 已用时间: 33.003(毫秒). 执行号:1209. SQL> select file_id,path,rlog_size/1024/1024 as "Size" from V$RLOGFILE; 行号 FILE_ID PATH Size ---------- ----------- --------------------- -------------------- 1 0 /dm8/data/DM/DM01.log 256 2 1 /dm8/data/DM/DM02.log 256 3 2 /dm8/data/DM/DM03.log 512 已用时间: 0.513(毫秒). 执行号:1210.

在MOUNT状态下,还可以对日志文件的重命名操作:

SQL> select name,status$ from v$database; 行号 NAME STATUS$ ---------- ---- ----------- 1 DM 4 已用时间: 2.351(毫秒). 执行号:1211. SQL> alter database mount; 操作已执行 已用时间: 31.147(毫秒). 执行号:0. SQL> alter database rename logfile 'DM03.log' to 'DM_03.log'; 操作已执行 已用时间: 00:00:27.895. 执行号:1212. SQL> alter database open; 操作已执行 已用时间: 00:00:01.648. 执行号:0. SQL> select file_id,path,rlog_size/1024/1024 as "Size" from V$RLOGFILE; 行号 FILE_ID PATH Size ---------- ----------- ---------------------- -------------------- 1 0 /dm8/data/DM/DM01.log 256 2 1 /dm8/data/DM/DM02.log 256 3 2 /dm8/data/DM/DM_03.log 512 已用时间: 235.604(毫秒). 执行号:1213. 启动归档

查看当前的归档模式

SQL> select arch_mode from v$database; 行号 ARCH_MODE ---------- --------- 1 N 已用时间: 1.671(毫秒). 执行号:1214.

创建归档文件存储目录:

dmdba@yankai-linux:/dm8/data/arch$ pwd /dm8/data/arch

修改dmarch.ini 文件,添加如下内容。 完整的内容可以参考DM的官方手册。

dmdba@yankai-linux:/dm8/data/DM$ vim dmarch.ini [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /dm8/data/arch ARCH_FILE_SIZE = 256 ARCH_SPACE_LIMIT = 0

参数说明: ARCH_TYPE: 归档类型,有以下几种: 本地归档 LOCAL(一台主库最多配 8 个) 远程实时归档 REALTIME(一台主库最多配 8 个) 远程异步归档 ASYNC(一台主库最多配 8 个) 即时归档 TIMELY(一个主库最多配 8 个) 远程归档 REMOTE(一个主库最多配 8 个) ARCH_DEST: 归档路径 ARCH_FILE_SIZE:单个归档文件大小,单位 MB,取值范围(64~2048),默认为 1024MB,即 1G ARCH_SPACE_LIMIT:归档文件空间限制,单位 MB,取值范围(1024~4294967294),0 表示无空间限制

默认没有dmarch.ini文件,需要参考dmarch_example.ini自己创建,但是这个文件里的注释是中文的,在Linux里打开是乱码,很影响阅读,可以在复制到Windows 下查看。

启动归档模式:直接修改dm.ini 参数

修改dm.ini 文件,将ARCH_INI改成1,参数生效即启动归档模式:

#configuration file MAL_INI = 0 #dmmal.ini ARCH_INI = 1 #dmarch.ini REP_INI = 0 #dmrep.ini LLOG_INI = 0 #dmllog.ini TIMER_INI = 0 #dmtimer.ini MPP_INI = 0 #dmmpp.ini 重启DM 让dm.ini 生效:

也可以使用SQL语句启动归档

SQL> alter database mount; 操作已执行 已用时间: 65.030(毫秒). 执行号:0. SQL> alter database add archivelog 'DEST=/dm8/data/arch,TYPE=local,FILE_SIZE=128,space_limit=0'; 操作已执行 已用时间: 125.075(毫秒). 执行号:0. SQL> alter database archivelog; 操作已执行 已用时间: 114.605(毫秒). 执行号:0. SQL> alter database open; 操作已执行 已用时间: 622.710(毫秒). 执行号:0. SQL> select arch_mode from v$database; 行号 ARCH_MODE ---------- --------- 1 Y 已用时间: 128.532(毫秒). 执行号:1215. SQL> select arch_name,arch_type,arch_dest,arch_file_size from v$dm_arch_ini; 行号 ARCH_NAME ARCH_TYPE ARCH_DEST ARCH_FILE_SIZE ---------- -------------- --------- -------------- -------------- 1 ARCHIVE_LOCAL1 LOCAL /dm8/data/arch 128 已用时间: 347.016(毫秒). 执行号:1216. 取消归档 SQL> alter database mount; 操作已执行 已用时间: 20.726(毫秒). 执行号:0. SQL> alter database noarchivelog; 操作已执行 已用时间: 54.025(毫秒). 执行号:0. SQL> alter database open; 操作已执行 已用时间: 62.056(毫秒). 执行号:0. SQL> SQL> select arch_mode from v$database; 行号 ARCH_MODE ---------- --------- 1 N 已用时间: 0.583(毫秒). 执行号:1217. SQL> select name,value from v$parameter where name like 'ARCH%'; 行号 NAME VALUE ---------- -------- ----- 1 ARCH_INI 0 已用时间: 463.283(毫秒). 执行号:1218.

https://eco.dameng.com/



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3