1
备份还原简介
DM 数据库中的数据存储在数据库的物理数据文件中,数据文件按照页、簇和段的方式
进行管理,数据页是最小的数据存储单元。任何一个对
DM
数据库的操作,归根结底都是对
某个数据文件页的读写操作
DM 备份的本质就是从数据库文件中拷贝有效的数据页保存到备份集中,这里的
有效数据页包括数据文件的描述页和被分配使用的数据页
2、表空间
名称 | 作用 | 重要性 | 是否备份 |
SYSTEM
表空间
|
存放了
DM 数据库全局字典信息和全局系统数据,默认对应数据文件
SYSTEM.DBF
| 5 | 定期 |
ROLL
表空间
| 存放 DM 数据库运行过程中产生的所有回滚记录,不论修改哪一个表空间,生成的回滚记录都是写入 ROLL 表空间,该表空间由系统自动维护,
默认数据文件为
ROLL.DBF
| 4 | 不备份 |
MAIN
表空间
|
混合表空间。在创建用户时,如果没有指定默认表空间,系统自动指定 MAIN 表空间为用户默认的表空间。
MAIN
表空间的默认数据文件为
MAIN.DBF
| 5 | 定期 |
自定义表空间
| 用户自建的用于业务、迁移、测试等用途建立的表空间 | 5 | 定期 |
TEMP
表空间
|
存放临时表数据以及数据库运行过程中产生的临时数据,
若数据库重启,保存在
TEMP
表空间中
的所有数据都会丢失。
TEMP
表空间的默认数据文件为
TEMP.DBF
| 4 | 不备份 |
3、影响备份与还原有效性的两类重要日志
重做日志
记录了所有物理页的修改,基本信息包括操作类型、 表空间号、文件号、页号、页内偏移、实际数据等。DM 数据库默认包含两个扩展名为 log 的日志文件,用来保存 REDO 日志,称为联机重 做日志文件。这两个文件循环使用。任何数据页从内存缓冲区写入磁盘之前,必须保证其对 应的 REDO 日志已经写入到联机日志文件
归档日志
系统将 REDO 日志先写入联机日志文件后,根据归档的配置情况,异步地将 REDO 日志再写入到归档日志中。归档日志一般与redo日志相等或稍大些
归档日志默认命名:
primary/Normal 模式库归档日志文件的命名规则是: ARCH_NAME_DB_MAGIC[SEQNO]_日期时间.log
比如: ARCHIVE_LOCAL1_0x567891[0]_2018-05-30_10-35-34.lo
ARCH_NAME :dmarch.ini 中配置的 LOCAL/REMOTE 归档名称,
DB_MAGIC :生成日志的数据库魔数,
SEQNO :DSC 节点号,
日期时间:归档日志文件的创建时间
4、LSN介绍:影响备份还原的还原点,非常重要
LSN(
Log Sequence Number
)是由系统自动维护的
Bigint
类型数值,具有自动
递增、全局唯一特性,每一个
LSN
值代表着
DM
系统内部产生的一个物理事务。物理事务
(
Physical Transaction
,简称
ptx
)是数据库内部一系列修改物理数据页操作的集合,是数据库对于事务管理的一个标记
名称 | 描述 | 场景 |
CUR_LSN
|
系统已经分配的最大
LSN
值。物理事务提交时,系统会为其分配 一个唯一的 LSN
值,大小等于
CUR_LSN + 1
,然后再修改
CUR_LSN=CUR_LSN+1
| 事务提交后就会+1,值一般最大 |
FLUSH_LSN
|
是已经发起日志刷盘请求,但还没有真正写入联机
Redo
日志文件的 最大 LSN
值。
| commit后,准备写入的联机redo,一般与cur_lsn相同 |
FILE_LSN
|
是已经写入联机
Redo
日志文件的最大
LSN
值
| 比LUSH_LSN与cur_lsn小 |
CKPT_LSN
|
检查点
LSN
,所有
LSN <= CKPT_LSN
的物理事务修改的数据页, 都已经从 Buffer
缓冲区写入磁盘,
CKPT_LSN
由检查点线程负责调整
| 数据页写入磁盘的最大值 |
APPLY_LSN
|
数据库还原恢复后已经写入联机
Redo
日志文件的日志包的原始 最大 LSN
值
| |
RPKG_LSN
|
是数据库还原恢复后已经重演日志的最大
LSN
|
一般情况下:ckpt_lsn<file_lsn<flush_lsn=cur_lsn
5、包序号
RLOG_PKG 都有对应的序号属性,称之为包序号(
PKG SEQNO
),日志包生成时
按照序号连续递增。包序号包括本地包序号(
LSEQ
)和全局包序号(
GSEQ
),本地包序号
是节点内唯一、连续递增的值,用于校验联机日志连续性;全局包序号由数据守护集群的主
备库共同维护,具有全局唯一、连续、递增的特性,用于校验归档日志的连续性。
DM
数 据 库 中 与 全 局 包 序 号 相 关 的 信 息 , 可 以 通 过 查 询
V$RLOG
和
V$RAPPLY_PARALLEL_INFO
表来获取
名称 | 描述 |
CUR_SEQ
|
系统已经分配的最大全局包序号。
RLOG_PKG
写入联机日志文件前,
系统会为其分配一个唯一的全局包序号
|
FILE_SEQ
|
已经写入联机
Redo
日志文件的最大全局包序号
|
APPLY_SEQ
|
数据库还原恢复后已经写入联机
Redo
日志文件的原始最大全局
包序号
|
RPKG_SEQ
|
数据库还原恢复后已经重演日志的最大全局包序号。
DSC
集群的每
一个节点独立维护
RPKG_SEQ
|
包序号的理解是数据库对于事务日志,也是组合成包的形式再进行写入日志文件,是数据库系统用来处理日志的管理单元。
6、检查点
检查点(checkpoint
)是一个数据库事件,它的功能是按照数据页的修改顺序,依次
将
BUFFER
缓冲区中的脏页写入磁盘,并在这个过程中动态调整
CKPT_LSN
值,释放日志
空间
DM 的检查点分为两种:完全检查点和部分检查点:
完全检查点
:会将内存缓冲区中的所有脏页写入磁盘,并调整
CKPT_LSN
,在数
据库正常关闭时会产生一个完全检查点。
部分检查点 : 根 据
dm.ini
配 置 文 件 中 的 参 数
CKPT_FLUSH_RATE
和
CKPT_FLUSH_PAGES
,确定每次检查点刷脏页的数量。执行部分检查点的过程中,
DDL/DML
操作都可以正常执行,
DM
系统中绝大多数情况下触发的都是部分检查点
更多内容,请查看达梦云适配官网
https://eco.dameng.com