一、数据库备份简介
数据库备份是为了确保数据不会因为人为、意外或者灾害等因素造成的数据丢失,而造成的损失,是防止数据丢失的最后一道防线。
从物理与逻辑的角度来分类,可 分为物理备份和逻辑备份。物理备份则直接扫描数据库文件,找出那些已经分配、使用的数据页,拷贝并保存到备份集中。物理还原一般通过DMRMAN工具(或者SQL语句),把备份集中的数据内容重新拷贝、写入目标文件。DM的物理备份一般包括数据备份和日志备份两部分,数据备份是拷贝数据页内容,日志备份则是拷贝备份过程中产生的REDO日志。逻辑备份是指利用dexp导出工具,将指定对象(库级、模式级、表级)的数据导出到文件的备份方式。逻辑还原就是使用dimp工具,把dexp导出的备份数据重新导入到目标数据库。
从数据库的备份角度分类 可以分为完全备份和增量备份。 完全备份是指备份程序会扫描所有数据文件(除TEMP表空间以外),拷贝所有被分配、使用的数据页,写入到备份片文件中。 增量备份是指只有那些在上次完全备份或增量备份后被修改的文件才会被备份,可分累积增量备份和差异增量备份。 增量备份优点是备份数据量小,需要的时间短,缺点是恢复的时候需要依赖以前备份记录,出问题的风险较大。两者备份内容如下图1对应所示,包括数据备份和日志备份两部分。
图1 备份内容
还有其他的分类如 联机备份和脱机备份、一致性备份和非一致性备份等。
一般在实际应用中我们有以下几种备份还原供选择:
1 、使用联机执行SQL语句进行备份还原
2 、使用dexp和dimp工具进行备份还原
3 、使用脱机工具DMRMAN进行备份还原
4 、使用图形化客户端工具进行备份还原
生产环境一般根据一定策略采用job定时调度全备+增备的方式进行备份。主要对前面两种方式做简单介绍。
二、 使用联机备份DMRMAN还原案例
1、 联机备份简介
DM 支持通过联机执行 SQL 语句方式对数据库执行备份还原操作。联机方式支持数据库、用户表空间、用户表和归档的备份,用户表空间、用户表的还原。在进行联机库级备份、归档备份表空间备份和表空间还原时,必须保证系统处于归档模式。 语法如下:
BACKUP
DATABASE [[[FULL] [DDL_CLONE]]| INCREMENT [CUMULATIVE][WITH BACKUPDIR '<
基备份搜索目录
>'{,'<
基备份搜索目录
>'} |[BASE ON
[DEVICE TYPE < 介质类型 > [PARMS '< 介质参数 >']]
[BACKUPINFO '< 备份描述 >'] [MAXPIECESIZE < 备份片限制大小 >]
[IDENTIFIED BY <
密码
>[WITH ENCRYPTION
[COMPRESSED [LEVEL < 压缩级别 >]] [WITHOUT LOG]
[TRACE FILE '< TRACE 文件名 >'] [TRACE LEVEL < TRACE 日志级别 >]
[TASK THREAD < 线程数 >][PARALLEL [< 并行数 >] [READ SIZE < 拆分块大小 >]];
2、 SQL 语句进行备份还原应用实例
案例一、一个表空间数据文件误删,后利用备份集还原。
2.1 创建一个表空间:
create tablespace tbs_userdatafile '/opt/dm8/data/DAMENG/tbs_user01.dbf' size 64;
create use user01 identified by 'User123456' default tablespace tbs_user;
2 .2 先做数据库完全备份
BACKUP DATABASE BACKUPSET '/opt/dm8/data/full93_bak';
备份成功后会在备份集路径目录下生成一个备份元数据文件,后缀 .meta ,一个或多个备份片文件,后缀 .bak 。
2.3 关闭数据库服务
systemctl stopDmServiceDMSERVER.service
2.4 删除数据文件
rm–rf /opt/dm8/data/DAMENG/tbs_user01.dbf
2.5 用DMRMAN脱机恢复
restore database '/opt/dm8/data/DAMENG/dm.ini' from backupset '/opt/dm8/data/full93_bak';
recover database '/opt/dm8/data/DAMENG/dm.ini' from backupset '/opt/dm8/data/full93_bak';
recover database '/opt/dm8/data/DAMENG/dm.ini' update db_magic;
2.6 启动数据库服务,恢复正常
systemctl stopDmServiceDMSERVER.service
当然这里也可 用文件句柄方式恢复误删的数据文件。
三、 dexp 和dimp工具进行备份还原
1、 逻辑导出 导入简介
逻辑导出和逻辑导入数据库对象分为四种级别:数据库级、用户级、模式级和表级。四种级别所提供的功能:
数据库级(FULL):导出或导入整个数据库中的所有对象。
用户级(OWNER):导出或导入一个或多个用户所拥有的所有对象。
模式级(SCHEMAS):导出或导入一个或多个模式下的所有对象。
表级(TABLE):导出或导入一个或多个指定的表或表分区
2、Dexp 和Dimp应用实例
案例二、利用之前的备份,修复表中的数据
2.1 导出user01用户模式对象
dexpsysdba/dameng123@10.18.2.156:5236 file=dexp_user01.dmp log=dexp_user01.log directory=/opt/dm8/data/dexp SCHEMAS=user01 parallel=2;
2.2 删除掉user01用户下test表
truncate table user01.test;
2.3 利用之前的备份,还原该表的数据
dimpsysdba/dameng123@10.18.2.156:5236 file=/opt/dm8/data/dexp/dexp_user01.dmp log=dimp01.log directory=/opt/dm8/data/dimp TABLE_EXISTS_ACTION=APPEND TABLES=user01.test;
2.4 查看还原后的数据
select * from user01.test;
四、生产数据库应用场景
1、备份策略简介
每天23点做一个备份,周日做全备,其他的做增量备份,每天凌晨4点做删除30天前的备份。
2、实践
2.1 先做一个备份,以后周日23点做一个全备份,使用manager调出图形化窗口,在代理中配置定时任务。
新创建备份
查看备份信息
创建定时任务
新建作业->常规
作业步骤
作业调度
2.2 配置增量备份,方法同上
作业步骤
作业调度
2.3 配置删除30天前的备份
作业步骤
配置作业调度
2.4 最后查看下看JOB情况
2.5 完成配置,测试正常就能达到预期效果
综上所述,各种备份还原有自己适合的场景,在实际应用中可选择合适的方式,能起到事半功倍的效果。数据库备份还是DBA日常工作内容的重要组成部分。最后申明下,刚学达梦数据库,有错误地方烦请指出。