- 什么是备份、还原和恢复?
备份是将数据库文件中有效的数据页保存到备份集中,当数据库发生故障时,可以将数据库恢复到备份结束时间点的状态。除此以外,数据库运行的过程中,一系列操作会先被以日志形式记录在归档日志中,然后体现在数据库文件中。为了能够让用户可以通过备份集将数据恢复到备份结束时间点的状态,就需要将备份过程中的归档日志也保存到备份集中。
还原是将备份集中有效数据页写入目标数据文件的过程。恢复指的是通过重做归档日志,将数据库状态恢复到备份结束时的状态;也可以恢复到指定地点和指定LSN。
- 表空间和数据文件
SYSTEM表空间:存放数据库全局字典信息和全局系统数据(SYSTEM.DBF)
ROOL表空间:存放数据库运行过程中产生的所有回滚记录(ROOL.DBF)
TEMP表空间:存放临时表数据以及数据库运行过程中产生的临时数据
MAIN表空间:创建用户时 ,如果没有指定默认表空间,则会指定MAIN表空间作为用户默认表空间。
HMAIN空间:达梦数据库的HUGE表空间,用来存放HUGE表数据文件。
3.重做日志(REDO)
将所有对数据文件的操作,以及时什么操作类型,哪个表空间,哪个数据页都记录在重做日志中,当系统出现故障时,就会通过该日志将数据库文件恢复到发生故障时的状态。达梦数据库默认包含两个以log为扩展名的文件,用来存储重做日志,被称为联机重做日志文件两个文件循环使用,任何数据页在从内存写入磁盘之前,都必须要保证REDO日志已经写入到联机重做日志中。
REDO日志包(RLOG_PKG)是数据库保存REDO日志的数据单元,一个日志包内可以存储一个或多个PTX产生的重做日志,日志包具有自描述性,日志包大小不固定,采用固定包头和可变包头结合的方式,包头记录日志的控制信息,包括类型、长度、包序号、LSN信息,产生日志的节点号,加密压缩信息,日志并行数等内容。日志包生成时按照序号递增,再未开启并行日志下,RLOG_PKG包内日志LSN是递增的;反之,则是局部有序整体无序。
4.归档日志
归档日志和重做日志的区别?
- LSN
LSN(Log Sequence Number)具有递增,全局唯一特性。每一个LSN都对应着DM系统内部产生的一个物理事务。物理事务(Physical Transaction,简称PTX)是数据库内部一系列修改物理数据页操作的集合,对应着数据库管理系统中的事务概念,因此具有原子性、有序性、无法撤销等特性。
和LSN相关的信息可以通过查询V$RLOG表来获取,DM主要包含以下一种类型的LSN:
- CUR_LSN:因为LSN是递增的,因此CUR_LSN代表目前序列号最大的LSN值,当物理事务提交时,系统会为该物理事务分配CUR_LSN+1的LSN值。
- FILE_LSN:当REDO日志包(RLOG_PKG)每次写入联机重做日志后,都会修改FILE_LSN。因此FILE_LSN是目前写入联机日志文件的最大LSN值。
- FLUST_LSN:是已经发起日志刷盘请求,但并未写入联机重做文件的最大LSN值。
- CKPT_LSN:是检查点LSN,所有小于CKPT_LSN的LSN,该物理事务修改的数据页,都已经从缓冲区写入磁盘,CKPT_LSN由检查点线程负责调整。
※ 这个LSN很重要,当系统发生故障时,小于CKPT_LSN的重做日志都不需要重做,因为该重做日志记录的操作都已经写入磁盘,因此将大于CKPT_LSN的重做日志都进行重做REDO日志才能让数据库恢复到故障发生点的状态。并且在重做联机日志中,LSN<CKPT_LSN 的REDO日志都可以被覆盖,因为该重做日志的物理数据页已经写入磁盘。
- APPLY_LSN:是数据库还原后已经重演日志的最大LSN。DSC集群的每一个节点独立维护APPLY_LSN。
- 包序号
每个日志包都有对应的序号,并且分为本地序号(LSEQ)和全局序号(GSEQ),本地包序号是节点内唯一、连续递增的值,用于校验联机日志连续性;全局序号是数据守护集群的主备库共同维护具有全局唯一、递增的特性,用于校验归档日志的连续性。
并且和包序号有关的信息都用过表V$LOG来获取。全局包序号分为以下几种:
- CUR_SEQ:日志包写入联机重做日志之前,系统会为其分配一个唯一的全局包序号。
- FILE_SEQ:是已经写入联机重做日志之后的最大全局包序号。每次将其写入联机重做日志之后,都要修改FILE_SEQ的值。
- APPLY_SEQ:是数据库还原后已经重演日志的最大全局包序号。
- 检查点
在数据库运行过程中,如果想要对数据页进行操作,那么应该先将数据页加载到缓冲区中,然后对数据页中的记录进行修改,该修改都是在内存上进行的。事务运行时,会将生成的REDO日志文件保存在日志包中,每一条日志记录都会生成相应的LSN,当事务提交、或者是REDO日志包满,或者执行检查点时会进行日志刷盘。
检查点是一个数据库实践,其功能是按照数据页的修改顺序,将缓冲区的脏页写入磁盘,并在过程中调整CKPT_LSN值,释放日志空间。
检查点分为以下:
- 完全检查点:
- 部分检查点:
- 备份集
备份片:备份片用来存储备份数据的文件,其后缀为.bak。备份集中存放数据页的备份片称为数据备份片,存放REDU日志的备份片称为日志备份片。
元数据:元数据文件用来存放备份信息,其后缀为.Meta.通过该文件可以了解备份集信息。
- 逻辑备份和物理备份:dexp和dimp的使用