1.备份还原的作用:
备份的主要是起到数据容灾的作用,是当数据库在发生故障时,能保证数据安全的一种有效的手段;通过对备份集数据的还原,就可以将数据恢复到数据库故障前的状态。
2.备份、还原、恢复的基本原理:
在达梦数据库中,数据是存储于数据库的物理数据文件中,页是数据存储的基本单元,任何对DM数据库的操作,其根本是对某个数据文件页的操作,所以备份的本质就是将数据文件中的有效页复制保存到备份集中,有效数据页就包括了数据文件的描述页和被分配使用的数据页;在数据库服务器运行的情况下,对数据库的操作是不会立即体现到数据文件中的,而是会先以日志的形式写入到归档日志中,所以在数据库还在运行的情况下备份,需要将备份过程中产生的归档日志也保存到备份集中,便于之后可以通过备份集中的归档日志进行还原。
还原是备份的逆过程,它是将备份数据集中的有效数据页重新写入到数据库文件的过程;恢复是通过重做归档日志,可将数据库状态恢复到任意指定的时间点的状态,包括备份结束时的状态。下图显示备份、还原和恢复的原理图:
3.备份的类型
(1)逻辑备份与物理备份的区别
逻辑备份是利用DM数据库导出数据工具dexp,将对象(库级、模式级、表级)的数据到出到.dmp文件的备份方式,所以逻辑备份的备份重点在于数据的内容,而并不关心数据的物理存储位置;
物理备份是直接对数据库文件进行扫描,将已分配、已使用的数据页复制保存到备份集中。所以物理备份是根据数据库文件系统的描述来选择有效数据页进行备份,并不关心数据页中的内容是什么。
(2)联机备份与脱机备份
数据服务器在运行状态并能正常提供数据库服务的情况下进行的备份操作,叫联机备份,也称热备;在热备期间,为了保证数据的一致性不被破坏,是需要将这期间产生的REDO日志也一起备份,因此,只能在配置本地归档,并开启本地归档的数据库上进行热备;热备可以通过客户端工具连接到数据库实例后,执行相关的SQL语句进行;也可以通过配置作业,自动定时备份,使用较为方便且不影响数据库的正常运行,因此热备是最常用的备份手段。
数据库处于关闭状态下进行备份叫脱机备份,也称冷备;冷备是得要在数据库关闭情况下才能进行的备份,不然系统会报错,所以在冷备前先需检查数据库是否已关闭;
(3)数据备份和归档日志备份
按内容分,备份可分为数据备份和归档日志备份;数据备份主要是对数据文件的内容(包括库级备份、表空间备份、表备份)进行备份。归档日志备份是对归档日志文件所继续的备份操作,里面不涉及如何数据内容。归档日志备份在热或冷备情况下都能进行。
(4)全量备份和增量备份
按备份数据的完整性分,可有全量备份和增量备份之分。全量备份是包含指定库(或表空间)的全部有效数据页的备份,因此,备份生成的备份集会较大,备份时间也显得比较长。增量备份是在原有特定备份集(基备份)上,对新增数据的数据页进行备份,因此可以有效的减少备份集占用的空间,减少备份时间;在利用增量备份进行还原操作时,要求基备份是完整的,如何一个增量备份,到最终都是以一个完全的备份作为基备份。工具对备份的要求的不同,DM数据库的增量备份有两种:差异增量备份和累积增量备份;差异增量备份要求基备份可以是全量备份集,也可以是增量备份集;而累积增量备份只能是以全量备份为基备份。
二、备份还原实操
1.联机备份
(1)归档配置:(准备前工作)
方法一:
进入到安装路径的bin目录下,开启DMAP服务和数据库服务:
./DmAPService start # 开启DMAP服务;
./DmService start # 开启数据库服务;
开启数据库归档模式:
./disql SYSDBA/SYSDBA@192.168.222.133:5236 # 进入disql;
alter database mount; # 将数据库切换成mount模式;
alter database add archivelog ‘dest=/home/dmdba/dmarch,TYPE=local,FILE_SIZE=1024 SPACE_LIMIT=102400’;
alter database archivelog;
alter database open;
方法二:
与dm.ini同一个目录下,修改或新建一个dmarch.ini文件;
vim /home/dmdba/dmdbms/data/DAMENG/dmarch.ini
添加以下内容:
[ARCHIVE_LOCAL1] ARCH_TYPE=local ARCH_DEST=/home/dmdba/dmarch ARCH_FILE_SIZE=1024 ARCH_SPACE_LIMIT=102400
修改dm.ini设置参数:
ARCH_INI=1 # 开启归档日志;
开启数据库:
./DmService start # 打开数据库服务
ps -ef | grep dmserver # 查看数据库的进程及安装目录;
(2)数据库全库备份
./disql SYSDBA/SYSDBA@192.168.222.133:5236 # 进入disql工具;
backup database full backupset ‘/home/dmdba/dmbakup/dbfull’;
select * from v$backupset; # 查看数据库备份集文件
(3)其他对象备份语句
backup tablespace tablespace_name full backupset ‘/home/dmdba/dmbakup/tbsp’; # 表空间备份; backup table user_name.table_name full backupset ‘/home/dmdba/dmbakup/tb’; # 表备份;
(4)使用RMAN工具备份还原数据库:
./dmrman # 进入到RMAN工具:
backup database full backupset ‘/home/dmdba/dmbakup/dbfull’; # 备份库;
check backupset ‘/home/dmdba/dmbakup/dbfull’; # 校验备份集的合法性;
restore database ‘/home/dmdba/dmdbms/data/DAMENG/dm.ini’ from backupset ‘/home/dmdba/dmbakup/dbfull ’; # 还原数据库;
2.脱机备份
(1)脱机备份数据库:
在安装路径的bin目录下,关闭数据库服务,启动DMAP服务:
./DmService stop # 关闭数据库服务;
./DmAPService start # 启动DMAP服务;
ps -ef | grep dmap # 查看DMAP服务是否启动;
./dmrman # 进入RMAN工具;
Backup database ‘/home/dmdba/dmdbms/data/DAMENG/dm.ini’ backupset ‘/home/dmdba/dmbakup/dbfull’; # 执行全库备份;
(2)还原数据库:
在开启DMAP服务后,进入RMAN工具:
./dmrman # 进入RMAN工具;
依次执行:
Restore database ‘/home/dmdba/dmdbms/data/DAMENG/dm.ini’ from backupset ‘/home/dmdba/dmbakup/dbfull’; # 执行restore语句; Recover database ‘/home/dmdba/dmdbms/data/DAMENG/dm.ini’ from backupset ‘/home/dmdba/dmbakup/dbfull’; # 执行recover语句; Recover database ‘/home/dmdba/dmdbms/data/DAMENG/dm.ini’ update db_magic; # 执行recover update db_magic语句;