达梦数据库联机与脱机备份与还原

想更多了解达梦数据库,请关注达梦云适配中心。
https://eco.dameng.com/

一、备份的意义

数据库备份是 DBA 日常最重要的工作内容。备份的主要目的是数据容灾,保证数据的安全性,在数据库发生故障时,通过还原备份集,将数据恢复到可用状态。

二、备份的前提

备份与恢复过程都依赖归档日志,归档日志是保证数据一致性和完整性的重要保障。配有归档日志的数据库系统在出现故障时丢失数据的可能性更小,这是因为一旦出现介质故障如磁盘损坏时,利用归档日志,系统可被恢复至故障发生的前一刻,也可以还原到指定的时间点。

三、检查是否开启归档

方式1:
通过命令查询,Y表示已开启归档,N表示未开启归档

SQL> select arch_mode from v$database;

行号     ARCH_MODE
---------- ---------
1          N

已用时间: 14.718(毫秒). 执行号:400.

方式2:
查看配置文件dm.ini,参数ARCH_INI的值:1表示已开启归档,0表示未开启归档

[dmdba@localhost bin]$ cat /dm8/data/DAMENG/dm.ini | grep ARCH_INI
		ARCH_INI                        = 0                     #dmarch.ini

四、设置归档

方式1:通过命令设置

SQL> alter DATABASE MOUNT;
SQL> alter database add archivelog 'dest=/dm8/arch,type=local,file_size=128,space_limit=10240';
SQL> alter database archivelog;
SQL> alter DATABASE open;

方式2:修改配置文件
1)修改dm.ini文件中参数ARCH_INI=1
2)在dm.ini所在目录中,添加dmarch.ini文件

[dmdba@localhost bin]$ vi /dm8/data/DAMENG/dmarch.ini 
[ARCHIVE_LOCAL1]
	ARCH_TYPE            = LOCAL        
	ARCH_DEST            = /dm8/arch        
	ARCH_FILE_SIZE       = 128        
	ARCH_SPACE_LIMIT     = 10240        
	ARCH_FLUSH_BUF_SIZE  = 0   

3)重启数据库实例

五、使用disql联机备份

DM 支持通过联机执行 SQL 语句方式对数据库执行备份还原操作。联机方式支持数据库、用户表空间、用户表和归档的备份以及用户表的还原。在进行联机库级备份、归档备份和表空间备份时,必须保证系统处于归档模式,否则联机备份不能进行。

1. 数据库备份

语法:

BACKUP DATABASE [[[FULL] [DDL_CLONE]]| INCREMENT [CUMULATIVE][WITH BACKUPDIR ‘<
基备份搜索目录>’{,’<基备份搜索目录>’}]|[BASE ON BACKUPSET ‘<基备份目录>’]][TO <备份
名>][BACKUPSET ‘<备份集路径>’]
[DEVICE TYPE <介质类型> [PARMS ‘<介质参数>’]]
[BACKUPINFO ‘<备份描述>’] [MAXPIECESIZE <备份片限制大小>]
[IDENTIFIED BY <密码>|”<密码>” [WITH ENCRYPTION ][ENCRYPT WITH <加密算法>]]
[COMPRESSED [LEVEL <压缩级别>]] [WITHOUT LOG]
[TRACE FILE ‘<TRACE 文件名>’] [TRACE LEVEL <TRACE 日志级别>]
[TASK THREAD <线程数>][PARALLEL [<并行数>] [READ SIZE <拆分块大小>]];

例:

SQL> #基本备份命令,默认全部备份,备份路径默认为dm.ini文件中的BAK_PATH参数
SQL> backup database backupset 'backup01';
SQL> #设置备份路径
SQL> backup database backupset '/dmbackup/backup01';
SQL> #full表示全部备份,full为默认参数
SQL> backup database full backupset '/dmbackup/backup02';
SQL> #increment表示增量备份;with backupdir指定基备份集的搜索目录,使用默认备份目录可省略
SQL> backup database increment with backupdir '/dmbackup/backup02' backupset '/dmbackup/backup03';
SQL> #设置备份名为full_bak 
SQL> backup database to full_bak backupset '/dmbackup/backup04';
SQL> #compressed备份压缩,level指定备份等级1-9,级数越大,压缩越慢,压缩比越高,不指定level默认为1级
SQL> backup database backupset '/dmbackup/backup05' compressed level 5;
SQL> #parallel并行备份,最大并行数由数据文件的个数决定
SQL> backup database backupset '/dmbackup/backup06' parallel 8;

2. 表空间备份

语法:

BACKUP TABLESPACE <表空间名> [FULL | INCREMENT [CUMULATIVE][WITH BACKUPDIR ‘<基
备份搜索目录>’{,’<基备份搜索目录>’}]| [BASE ON BACKUPSET ‘<基备份集目录>’]][TO <备份
名>] [BACKUPSET ‘<备份集路径>’]
[DEVICE TYPE <介质类型> [PARMS ‘<介质参数>’]]
[BACKUPINFO ‘<备份描述>’] [MAXPIECESIZE <备份片限制大小>]
[IDENTIFIED BY <密码>|”<密码>” [WITH ENCRYPTION][ENCRYPT WITH <加密算法>]]
[COMPRESSED [LEVEL <压缩级别>]]
[TRACE FILE ‘<TRACE 文件名>’] [TRACE LEVEL <TRACE 日志级别>]
[TASK THREAD <线程数>][PARALLEL [<并行数>][READ SIZE <拆分块大小>]];

例:

SQL> #tablespace表空间备份,需指定表空间名
SQL> backup tablespace main backupset '/dmbackup/backup07';
SQL> #base on backupset指定备份基目录,如果不指定该参数,会在备份搜索目录中搜索最近一次的完全备份或增量备份作为这次增量备份的基备份
SQL> backup tablespace main increment base on backupset '/dmbackup/backup07' backupset '/dmbackup/backup08';
SQL> #其余备份选项参考数据库备份

3. 表备份

语法:

BACKUP TABLE <表名>
[TO <备份名>] [BACKUPSET ‘<备份集路径>’] [DEVICE TYPE <介质类型> [PARMS ‘<介质参数>’]]
[BACKUPINFO ‘<备份描述>’]
[MAXPIECESIZE <备份片限制大小>]
[IDENTIFIED BY <密码>|”<密码>” [WITH ENCRYPTION ][ENCRYPT WITH <加密算法>]]
[COMPRESSED [LEVEL <压缩级别>]]
[TRACE FILE ‘<TRACE 文件名>’] [TRACE LEVEL <TRACE 日志级别>];

例:

SQL> #备份表test
SQL> create table test(a int);
SQL> backup table test backupset '/dmbackup/backup09';
SQL> #其余备份选项参考数据库备份

4. 备份归档日志

语法:

BACKUP <ARCHIVE LOG |ARCHIVELOG>
[ALL | [FROM LSN ]| [UNTIL LSN ]|[LSN BETWEEN AND ] | [FROM
TIME ‘

例:

SQL> #all备份所有的归档,默认为all
SQL> backup archive log all backupset '/dmbackup/archbak_01';
SQL> #其余备份选项参考数据库备份

六、disql联机数据还原

DM 仅支持表的联机还原,数据库、表空间和归档日志的还原必须通过脱机工具 DMRMAN。

SQL> #创建待备份的表test
SQL> create table test(a int);
SQL> #创建索引
SQL> create index idx_test on test(a);
SQL> #备份表
SQL> backup table test backupset '/dmbackup/tbak/test01';
SQL> #校验备份
SQL> select sf_bakset_check('disk','/dmbackup/tbak/test01');
SQL> #先进行表结构还原,表备份和目标表中都包含索引或约束,如果直接执行表数据还原会报错
SQL> restore table test struct from backupset
SQL> #还原表数据
SQL> restore table test from backupset

七、使用DMRMAN工具脱机备份

1. DMRMAN工具的使用

DMRMAN(DM RECOVERY MANAGER)是 DM 的脱机备份还原管理工具,由它来统一负责库级脱机备份、脱机还原、脱机恢复等相关操作,该工具支持命令行指定参数方式和控制台交互方式执行,降低了用户的操作难度。

通过 DMRMAN 工具执行脱机操作过程中,仅会使用通过关键字 DATABASE 指定的目标库的本地归档配置信息,不会对本地归档配置文件中其他类型归档配置信息进行校验。

DMRMAN工具在安装目录bin文件夹下:

[dmdba@localhost bin]$ ./dmrman
dmrman V8
RMAN> 

DMRMAN输入命令:
DMRMAN在备份还原中database需要指定dm.ini文件路径。

RMAN> help
RMAN> backup database '/dm8/data/DMDB/dm.ini' full backupset '/dmbackup/backup02';

退出DMRMAN:

RMAN> exit

也可以通过CTLSTMT参数执行语句

./dmrman ctlstmt="backup database '/dm8/data/DMDB/dm.ini' full backupset '/dmbackup/backup02'"

或执行脚本/home/bak.txt,/home/bak.txt中包含backup database ‘/dm8/data/DMDB/dm.ini’ full backupset ‘/dmbackup/backup02’

RMAN> `/home/dmdba/bak.txt

2. 脱机备份

语法除需要指定dm.ini文件外,与联机备份一致

[dmdba@localhost bin]$ ./dmrman
dmrman V8
RMAN> #基本备份命令,默认全部备份,备份路径默认为dm.ini文件中的BAK_PATH参数
RMAN> backup database '/dm8/data/DMDB/dm.ini' backupset 'backup02';
RMAN> #设置备份路径
RMAN> backup database '/dm8/data/DMDB/dm.ini' backupset '/dmbackup2/backup01';
RMAN> #full表示全部备份,full为默认参数
RMAN> backup database '/dm8/data/DMDB/dm.ini' full backupset '/dmbackup2/backup02';
RMAN> #increment表示增量备份;with backupdir指定基备份集的搜索目录,使用默认备份目录可省略
RMAN> backup database '/dm8/data/DMDB/dm.ini' increment with backupdir '/dmbackup2/backup02' backupset '/dmbackup2/backup03';
RMAN> #设置备份名为full_bak 
RMAN> backup database '/dm8/data/DMDB/dm.ini' to full_bak backupset '/dmbackup2/backup04';
RMAN> #compressed备份压缩,level指定备份等级1-9,级数越大,压缩越慢,压缩比越高,不指定level默认为1级
RMAN> backup database '/dm8/data/DMDB/dm.ini' backupset '/dmbackup2/backup05' compressed level 5;
RMAN> #parallel并行备份,最大并行数由数据文件的个数决定
RMAN> backup database '/dm8/data/DMDB/dm.ini' backupset '/dmbackup2/backup06' parallel 8;
RMAN> #备份归档
RMAN> backup archive log all database '/dm8/data/DMDB/dm.ini' backupset '/dmbackup2/arch_bak01';

八、脱机备份还原

1. 数据库还原

RMAN> #使用 RESTORE 命令完成脱机还原操作
RMAN> restore database '/dm8/data/DMDB/dm.ini' from backupset '/dmbackup2/backup01';
RMAN> #使用RECOVER命令完成数据库恢复工作
RMAN> recover database '/dm8/data/DMDB/dm.ini' from backupset '/dmbackup2/backup01';
RMAN> #更新数据库的DB_MAGIC,并将数据库调整为可正常工作状态
RMAN> recover database '/dm8/data/DMDB/dm.ini' update db_magic;

2. 表空间还原

RMAN> #使用 RESTORE 命令完成表空间的脱机还原
RMAN> restore database '/dm8/data/DMDB/dm.ini' tablespace main from backupset '/dmbackup/backup07';
RMAN> #表空间恢复通过重做 REDO 日志,以将数据更新到一致状态。
RMAN> recover database '/dm8/data/DMDB/dm.ini' tablespace main;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值