达梦数据库备份还原(日志备份及原理)
1.达梦数据库简介
达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,简称DM。达梦数据库管理系统7.0版本,简称DM7。
DM7特点: 1.通用性 2.高性能 3.高可用 4.跨平台 5.高可拓展
DM7是目前国产数据库中安全级别最高的数据库。用于商业用途需要收费,价格昂贵。 (注:DM7安装后自带一套完整的管理工具,不需要单独安装其他第三方管理工具)
对比MySQL、Oracle数据库
MySQL: MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的RDBMS (关系数据库管理系统) 应用软件。 特点: 1.体积小 2.速度快 3.拥有成本低
MySQL 软件采用了双授权政策,分为社区版(免费)和商业版(收费)。一般中小型网站的开发都选择 MySQL 作为网站数据库。
Oracle数据库: Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。 特点: 1.高性能 2.高可用 3.高可扩展 4.安全性强 5.稳定性强 Oracle数据库软件免费。但用于商业用途需要购买软件授权(收费), Oracle有两种授权方式,按CPU数和按用户数,成本较高。
2.备份还原简介
数据库备份是 DBA (数据库管理员Database Administrator)日常最重要的工作内容。备份不是目的,还原与 恢复才是备份的目 的。DBA 不仅要保证备份成功,还要保证一旦数据库发生故障时备份可还原可恢复。
-
数据库备份就是制作数据库的“副本”,以备需要时以此来进行恢复。
-
数据库备份可以分为“物理备份”和“逻辑备份”。
物理备份: 该方法实现数据库的完整恢复,通过数据库内部的存储结构,完整的复制数据页,它涉及到组成数据库的文件(如数据文件、控制文件和日志文件等),但不考虑逻辑内容(如表、视图和存储过程等数据库对象)。 (数据库可以是联机或脱机状态,也称为热备和冷备)
逻辑备份: 是利用SQL语言从数据库中抽取数据并存于二进制文件的过程。(要求数据库是联机状态)
3.备份还原基础知识
概述: DM7 数据库中的数据存储在数据库的物理数据文件中,数据文件按照页、簇和段的方式 进行管理,数据页是最小的数据存储单元。任何一个对 DM7 数据库的操作,归根结底都是 对某个数据文件页的读写操作。
备份
DM7 备份的本质就是从数据库文件中拷贝有效的数据页保存到备份集中。
还原是将备份集中的有效数据页重新写入目标数据文件的过程。 恢复则是指通过重做归档日志,将数据库状态恢复到备份结束时的状态;也可以恢复到指定时间点和指定 LSN。
表空间与数据文件:
DM7 数据库的表空间是一个逻辑概念,其目的主要是为了方便数据库的管理,数据库的 所有对象在逻辑上都存放在某个表空间中,而物理上都存储在所属表空间的数据文件中。一个表空间由一个或多个数据文件组成。
数据文件是数据库中最重要的文件类型,是真实数据存储的地方。
DM7 中数据文件的扩展名为.dbf,分为系统默认生成的数据文件和用户自己创建的数据文件两类。
下图为DM管理工具及对应文件目录:
重做日志:
DM7 数据库重做日志,又叫 REDO 日志,忠实记录了所有物理页的修改,基本信息包括操作类型、表空间号、文件号、页号、页内偏移、实际数据等。数据库中 INSERT、 DELETE、 UPDATE等 DML 操作以及 CREATE TABLE 等 DDL 操作最终都会转化为对某些数据文件、某些数据页的修改。因此,在系统故障重启时,通过重做 REDO 日志,可以将数据库恢复到故障时的状态。 DM7 数据库默认包含两个扩展名为 log 的日志文件,用来保存 REDO 日志,称为联机重做日志文件。这两个文件循环使用。任何数据页从内存缓冲区写入磁盘之前,必须保证其对应的 REDO 日志已经写入到联机日志文件。
下图为重做日志的具体文件:
归档日志:
DM7数据库可以在归档和非归档两种模式下运行。DM7 支持多种归档方式,本次主要介绍本地归档。 当数据库处于归档模式下且配置了本地归档时, REDO 日志先写入联机日志文件, 然后再异步写入归档日志文件。归档日志文件以配置的归档名称和文件创建时间命名,扩展名也是 log。
系统在归档模式下运行会更安全,当出现介质故障,如磁盘损坏导致数据文件丢失、异 常时,利用归档日志,系统可以恢复至故障发生的前一刻。因此,建议将归档目录与数据文 件配置、保存到不同的物理磁盘上。
达梦数据库备份开启归档步骤:
开启归档后生成的归档日志文件:
检查点:
DM7 数据库运行过程中,用户的所有操作都在内存中进行。每修改一条记录都必须先把记录所在的数据页加载到 BUFFER 缓冲区中,然后进行修改。 事务运行时,会把生成的REDO 日志保留在日志缓冲区 RLOG_BUF 中,每条日志记录对应一个 LSN,当事务提交或日志缓冲区满或执行检查点时会进行日志刷盘(将缓冲区中数据写入联机日志文件)。 检查点(checkpoint)是一个数据库事件,它的功能是按照数据页的修改顺序,依次将 BUFFER 缓冲区中的脏页写入磁盘,并在这个过程中动态调整 CKPT_LSN 值,释放日志空间。
-
DM7 的检查点分为两种: 完全检查点: 会将内存缓冲区中的所有脏页写入磁盘,并调整 CKPT_LSN,在数据库正常关闭时会产生一个完全检查点。 部 分 检 查 点 : 根 据 dm.ini 配 置 文 件 中 的 参 数 CKPT_FLUSH_RATE 和CKPT_FLUSH_PAGES,确定每次检查点刷脏页的数量。执行部分检查点的过程中, DDL/DML操作都可以正常执行, DM7 系统中绝大多数情况下触发的都是部分检查点。
-
DM7 中几个 LSN 值的意义: LSN:日志序列号( Log Sequence Number),由系统自动维护的 Bigint 类型数值,具有自动递增、全局唯一特性,每一个 LSN 值代表着 DM 系统内部产生的一个物理事务。 CUR_LSN:系统当前 LSN,代表已经分配的最大 LSN 值。 FILE_LSN:文件 LSN,已经写入联机重做日志文件的最大 LSN 值。 FLUSH_LSN:FLUSH_LSN 是已经发起日志刷盘请求,但还没有真正写入联机, Redo 日志文件的最大 LSN 值。 CKPT_LSN:检查点 LSN。 START_LSN:为了保证备份的完整性和有效性,必须包含的归档日志起始 LSN 值。 END_LSN:为了保证备份的完整性和有效性,必须包含归档日志结束 LSN 值。
下图说明了联机日志文件、日志缓冲区 RLOG_BUF 以及相关各 LSN 之间的关系:
备份集: 备份集用来存放备份过程中产生的备份数据及备份信息。 一个备份集对应了一次完整的备份。 一个备份集就是一个目录, 备份集包含一个或多个备份片文件,以及一个备份元数据文件。
-
备份片用来存储备份数据的文件。备份片文件后缀为.bak。
-
元数据文件用来存放备份信息, 元数据文件的后缀为.meta。
4.备份
备份的目的是当数据库遇到损坏的情况下,可以执行还原恢复操作,把数据库复原到损坏前的某个时间点。
逻辑备份和物理备份
-
逻辑备份:指利用 dexp 导出工具,将指定对象(库级、模式级、表级)的数据导出到 文件的备份方式。逻辑备份针对的是数据内容,并不关心这些数据物理存储在什么位置。
通过DM管理工具进行逻辑备份:
第一步:打开DM管理工具→连接上对应数据库→选中需要导出的模式→鼠标右键→点击导出。
第二步:指定导出目录→指定导出文件名称→点击“确定”按钮。
第三步:查看导出后的文件
-
物理备份:直接扫描数据库文件,找出那些已经分配、使用的数据页,拷贝并保存到备份集中。
通过DM管理工具进行物理备份:
第一步:打开DM管理工具→连接上对应数据库→选中库备份→鼠标右键→点击”新建备份“。
第二步:指定备份名称、备份集目录→点击“确定”按钮。
第三步:查看导出后的文件。
联机备份和脱机备份
-
联机备份:数据库处于运行状态、 并正常提供数据库服务情况下进行的备份操作,我们称为联机备份。(可使用DM管理工具进行联机备份)
-
脱机备份:数据库处于关闭状态时进行的备份操作,被称为脱机备份。(可使用DM控制台工具进行脱机备份)
数据备份和归档日志备份
-
数据备份:数据备份主要针对数据文件内容,包括库备份、 表空间备份和表备份。
-
归档日志备份:是专门针对归档日志文件进行操作,不涉及任何数据文件内容。
一致性备份和非一致性备份
-
一致性备份:一致性备份的备份集包含了完整的数据文件内容和归档日志信息; 利用一个单独的备份集可以将数据库恢复到备份时状态。
-
非一致性备份:非一致性备份的备份集只包含数据文件相关内容,没有归档日志信息,利用非一致性备份还原的数据库,无法直接启动,必须借助归档日志来恢复。
完全备份和增量备份
-
完全备份:完全备份生成的备份集包含了指定库(或者表空间)的全部有效数据页。
-
增量备份:增量备份是在某个特定备份集基础上,收集数据库新修改的数据页进行备份,可以有效减少备份集的空间占用、 提高备份速度。
5.还原与恢复
还原与恢复是备份的逆过程, 还原与恢复的主要目的是将目标数据库恢复到备份结束时刻的状态。
还原:是将数据页从备份集中拷贝回数据库文件相应位置。 恢复:是重做 REDO 日志将数据库恢复到一致性状态。
由于联机备份时, 系统中可能存在一些处于活动状态的事务正在执行, 并不能保证备份集中的所有数据页是处于一致性状态; 而脱机备份时,数据页不一定是正常关闭的,也不能保证备份集中所有数据页是处于一致性状态。 因此, 还原结束后目标库有可能处于非一致性状态, 不能马上提供数据库服务;必须要进行数据库恢复操作后,才能正常启动。
6.补充说明
归档切换
由于本地归档是异步写入归档日志文件的, REDO 日志在写入联机日志文件后, 再由专门的归档线程负责将这些 REDO 日志写入本地归档日志文件。
通过归档切换功能,可以将这些已经写入联机日志文件,但还没有写入归档日志文件的 REDO 日志,写入到归档日志文件中。(联机备份时,在备份之前系统会自动执行一次归档切换)
归档修复
DM7 数据库服务器正常退出时, 会将所有 REDO 日志写入本地归档日志文件中;但是数据库服务器异常关闭时, 可能存在部分 REDO 日志未写入本地归档日志文件中。 归档修复会扫描联机日志文件,将那些已经写入联机日志文件、但还没有写入到归档日志文件的 REDO日 志,重新写入到归档日志文件。 注意:一般建议在数据库故障后, 应立即执行归档修复,否则后续还原恢复导致联机日志中未刷入本地归档的 REDO 日志丢失, 届时再利用本地归档恢复将无法恢复到故障前的最新状态。执行修复时,目标库一定不能处于运行状态。
-
版本说明:
随着需求的不断增加、 技术的不断成熟, DM7 备份与还原前后发布了两个版本: V1.0和 V2.0。 因为不同版本策略不同,所以备份文件在各版本间不能混用。 版本区别: V1.0 备份还原 V1.0 指 DM7 早期的备份还原,不是基于备份集组织的备份。 V1.0 版本使用dmbackup 工具执行脱机备份,使用 dmrestore 工具执行脱机还原。 V2.0 引入备份片、元数据文件、备份集等概念,提供第三方备份(TAPE 类型) 接口,支持RAC 备份。使用 DMRMAN 工具(DM Recovery Manager,恢复管理器)进行脱机备份还原。
用户可通过 dm.ini中参数 BAK_POLICY 选择备份策略。 BAK_POLICY 可取值 0、1 或 2,默认为 0(同时支持)。
7.备份还原工具介绍及使用
DIsql工具(联机)
使用联机执行 SQL 语句进行备份还原。 联机方式支持数据库、用户表空间、用户表和归档的备份, 用户表空间、 用户表的还原。 在进行联机库级备份、 归档备份、表空间备份和表空间还原时,必须保证系统处于归档模式,否则联机备份还原不能进行。
-
启动
1.Windows系统中启动 DIsql(两种启动方式)
①程序菜单启动,输入LOGIN或CONN进行登录,依次输入服务名、用户名、密码登录。
②自带DIsql工具启动
DIsql 工具位于 DM 数据库安装目录的 bin 子目录下,如:D:\dmdbms\bin\DIsql.exe
2.命令行启动 Disql:适用于任何操作系统平台。
在命令行工具中找到 DIsql 所在安装目录 C:\dmdbms\bin ,输入 disql回车, 然后输入用户名和密码登录。
-
通过输入SQL命令进行备份:
#默认全量备份
SQL>BACKUP DATABASE BACKUPSET;
#指定文件名称备份到默认bak目录
SQL>BACKUP DATABASE BACKUPSET 'db_bak_01' ;
#指定备份集路径备份
SQL>BACKUP DATABASE BACKUPSET 'C:\dm_back\back\db_bak_02';
#指定备份集,自定义备份名称
SQL>BACKUP DATABASE TO WEEKLY_FULL_BAK BACKUPSET ' C:\dm_back\back\db_bak_03';
#指定备份集,自定义备份名称,添加描述信息
SQL>BACKUP DATABASE TO WEEKLY_FULL_BAK BACKUPSET ' C:\dm_back\back\ db_bak_04' BACKUPINFO '完全备份';
#增量备份
SQL>BACKUP DATABASE INCREMENT WITH BACKUPDIR ' C:\dm_back\back\ dm_ba' BACKUPSET
' C:\dm_back\back\ db_increment_bak_01';注意:语句结束必须输入分号“;”表示结束。
-
退出
通过输入LOGOUT命令 从登录主库注销会话。断开连接而不退出 DIsql。
DMRMAN工具(脱机)
DMRMAN( DM RECOVERY MANEGER)是 DM7 的脱机备份还原管理工具,由它来统一负责库级脱机备份、脱机还原、数据库恢复等相关操作,该工具支持命令行指定参数方式和 控制台交互方式执行,降低了用户的操作难度。
-
启动DMRMAN :
在命令行工具中找到 DMRMAN所在目录 C:\dmdbms\bin ,输入DMRMAN回车。(Linux下输入./ DMRMAN)
-
使用
DMRMAN 工具支持控制台输入命令、命令行设置参数两种操作方式。下面对控制台输入命令的 操作方式进行介绍。 DMRMAN 控制台输入命令 输入执行命令进行数据库备份 RMAN>BACKUP DATABASE ' C:\dmdbms\data\DAMENG\dm.ini ';
DMRMAN 控制台还可以执行脚本。 ①如创建一个名为 cmd_file.txt 的文件 ②文件中包含“ BACKUP DATABASE ‘ C:\dmdbms\data\DAMENG\dm.ini ’ ” 命 令 , ③保 存 到C:\dm_cmd 目录下。 执行方式如下: RMAN>`C:\dm_cmd\cmd_file.txt
注意:DMRMAN 是按行解析命令,如果输入一行不完整的命令执行会报错。命令的结尾可以加分号结束,也可以不使用分号。
-
退出DMRMAN环境
启动后控制台中输入 exit 命令即可退出 DMRMAN 环境。
MANAGER工具(联机)
MANAGER管理工具的联机备份还原缺省使用 V2.0 备份还原策略。 用户可通过查看安装工具tool目录下manager.ini 文件进行确认,相关配置参数如下: -Duse_bak2=true #true 表示使用 V2.0 策略,false 表示使用 V1.0 策略。
-
使用MANAGER管理工具进行联机备份数据库:
-
MANAGER管理工具:创建数据库自动备份作业:
-
使用MANAGER管理工具进行数据还原:
CONSOLE工具(脱机)
CONSOLE管理工具的脱机备份还原缺省使用 V2.0 备份还原策略。 用户可通过查看安装工具tool目录下console.ini 文件进行确认,相关配置参数如下: -Duse_bak2=true #true 表示使用 V2.0 策略,false 表示使用 V1.0 策略。
-
使用CONSOLE管理工具进行脱机备份:
-
使用CONSOLE管理工具进行脱机还原:
DM服务查看器
可通过DM服务查看器启动和停止达梦数据库服务。
工具使用总结
总结:备份还原时需要根据实际应用场景选择合适的备份还原工具进行备份还原。