摘要
DM 备份的本质是从数据库文件中拷贝有效的数据页保存到备份集中,这些有效数据页包括数据文件的描述页和被分配使用的数据页。
还原与恢复是备份的逆过程。还原是将备份集中的有效数据页重新写入目标数据文件的过程。恢复则是指通过重做归档日志,将数据库状态恢复到备份结束时的状态;也可以恢复到指定时间点和指定LSN。
1. DM8备份还原的方法
1.1 备份还原工具
- disql工具:用于联机数据备份与还原,包括库备份、表空间备份、表备份与还原。
- DMRMAN 工具:用于脱机数据库备份还原与恢复。
- 客户端工具 MANAGER和CONSOLE:
对应命令行工具DIsql和DMRMAN的功能,分别用于联机和脱机备份还原数据。
1.2 使用DISQL进行联机备份
1.2.1 配置归档
配置归档的方式有两种:
1.联机配置
在数据库实例启动情况下,使用 SQL 语句完成 dmarch.ini
和 ARCH_INI
配置。
SQL语句配置本地归档的语法如下:
ALTER DATABASE <ADD|MODIFY|DELETE> ARCHIVELOG <归档配置语句>;
<归档配置语句>::= 'DEST = <归档目标>,TYPE = <归档类型>'
<归档类型>::=<local 方式>|<remote 方式>
<local 方式>::=LOCAL [,FILE_SIZE = <文件大小>]
[,SPACE_LIMIT = <空间大小限制>]
<remote 方式>::=REMOTE [,FILE_SIZE = <文件大小>]
[,SPACE_LIMIT = <空间大小限制>],INCOMING_PATH = <归档存放路径>
在DISQL中执行以下指令:
alter DATABASE MOUNT ##修改数据库为Mount状态
ALTER DATABASE ADD ARCHIVELOG 'DEST = /home/dm_arch/arch, TYPE = local,FILE_SIZE = 1024, SPACE_LIMIT = 2048'; ##配置本地归档
ALTER DATABASE ARCHIVELOG; ##开启归档模式
ALTER DATABASE OPEN; ##修改数据库为Open状态
2.修改INI文件打开归档
在数据库实例未启动的情况下,手动编写 dmarch.ini 文件和设置参数 ARCH_INI。
配置步骤如下:
- 在 dm.ini 所在目录,创建 dmarch.ini 文件。dmarch.ini 文件内容如下:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL ##REDO日志归档类型,LOCAL表示本地归档,REMOTE表示远程
ARCH_DEST = /home/dm_arch/arch ##REDO日志归档目标,LOCAL对应归档文件存放路径;REMOTE对应远程目标节点实例名
ARCH_FILE_SIZE = 1024 ##单个REDO日志归档文件大小,取值范围(64M~2048M),缺省1024M,即1G
ARCH_SPACE_LIMIT = 2048 ##REDO日志归档空间限制,当所有本地归档文件达到限制值时,系统自动删除最老的归档文件。0表示无空间限制,取值范围(1024M~2147483647M),缺省为0
- 编辑dm.ini 文件,设置参数
ARCH_INI=1
- 重启数据库
1.2.2数据库备份(联机)
在设置完归档后可执行以下语句进行备份
BACKUP DATABASE BACKUPSET 'db_bak_01';
备份可分为:
完全备份
数据库完全备份中包含了指定库的全部有效数据页,为了保证数据安全应该对数据库定期执行完全备份。
增量备份:
增量备份指基于指定的库(或者表空间)的某个备份(完全备份或者增量备份),备份自该备份以来所有发生修改的数据页。
最简单的数据库备份语句:
SQL> BACKUP DATABASE BACKUPSET 'db_bak_01'; --单引号内也可指定备份路径
FULL参数可省略,默认为完全备份:
SQL> BACKUP DATABASE FULL BACKUPSET '/home/dm_bak/db_full_bak_01';
增量备份:基于全库备份操作的,指定全库备份目录即可
SQL> BACKUP DATABASE INCREMENT WITH BACKUPDIR '/home/dm_bak' BACKUPSET '/home/dm_bak/db_increment_bak_02';
指定备份集路径、设置备份名、指定介质类型、添加备份描述、限制备份片大小、备份压缩、并行备份:
SQL> BACKUP DATABASE TO WEEKLY_FULL_BAK BACKUPSET ‘/home/dm_bak/db_bak_3_02’ DEVICE TYPE TAPE BACKUPINFO ‘完全备份’MAXPIECESIZE 300 COMPRESSED LEVEL 5 PARALLEL 8;
1.2.3数据库备份(脱机)
DMRMAN 中输入以下命令:
RMAN>BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FULL BACKUPSET '/home/dm_bak/db_full_bak_01';
命令中的 FULL 参数表示执行的备份为完全备份,也可以不指定该参数,DMRMAN 默认执行的备份类型为完全备份。命令执行完后会在默认的备份路径下生成备份集目录,默认的备份路径为 dm.ini 中BAK_PATH 的配置值,若未配置,则为 SYSTEM_PATH 下的 bak 目录。
注意:使用DMRMAN工具进行备份时必须保证数据库为脱机状态,并且DmAPService是运行状态
1.2.4数据库还原
数据库的恢复还原操作只能脱机进行,使用dmrman
./dmrman CTLSTMT="RESTORE DATABASE '/dm/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/home/dm_bak/db_full_bak_01'"
./dmrman CTLSTMT="RECOVER DATABASE '/dm/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/home/dm_bak/db_full_bak_01'"
./dmrman CTLSTMT="RECOVER DATABASE '/dm/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC"
一次恢复,两次还原(注意:新库只需要还原一次即可,还原DB_MAGIC)
两个指定:指定dm.ini文件,指定备份集路径
小结
数据库备份是日常工作最重要的工作之一,数据库备份是为了在数据库发生故障时,通过备份还原,将数据库恢复到可用状态
DM8支持三种方式的备份:逻辑备份、使用联机SQL命令进行备份、DMRMAN工具的备份
更多技术支持与交流请访问达梦在线服务平台 https://eco.dameng.com/