数据库备份是DBA日常工作中主要内容之一。对数据库的备份不是目的,而是在数据库发生故障时利用有效的备份,可以快速的还原和恢复数据库,避免数据丢失。
数据库的备份与还原是数据库容灾的重要方法,达梦数据库作为国产数据库的领军产品,在备份与还原方面都有哪些功能和特性。达梦数据库7.0支持BAK,BAK2,dexp等多种手段和方法。本文以BAK2为例,介绍达梦备份与还原的方法。
1 准备测试环境
- 操作系统
[dmdba@dm1 ~]$ uname -r
2.6.32-220.el6.x86_64
[dmdba@dm1 ~]$ uname -m
x86_64
- 数据库版本
SQL> select * from v$version;
行号 BANNER
1 DM Database Server x64 V7.1.5.75-Build(2016.04.21-67830trunc)
2 DB Version: 0x70009
2 打开数据库归档
- 查看归档状态
SQL> select arch_mode from v$database;
行号 ARCH_MODE
1 N
- 切换配置模式
SQL> alter database mount;
- 打开归档
SQL> alter database archivelog;
- 增加本地归档
SQL> alter database add archivelog 'DEST =/dm7/arch,TYPE=local,FILE_SIZE=1024,SPACE_LIMIT=0';
- 打开数据库
SQL> alter database open;
SQL> select arch_mode from v$database;
1 Y
3 数据库的备份与还原
1 备份数据库
SQL> backup database full to dmbak2 backupset '/dm7/backup/bak2';
2 查看备份生成文件
[dmdba@dm1 bak2]$ ls
bak2.bak bak2.meta
注意:bak2.bak是数据库的备份文件,bak2.meta为备份的元文件
3 BAK2可以直接在备份集中直接还原指定的用户表空间,不在像BAK需要把整个数据库还原,这里值得注意的是SYSTEM,ROLL,HMAIN表空间损坏,不能按照下述步骤还原。
假设DMHR表空间损坏
a) 表空间offline
SQL> alter tablespace DMHR offline;
b) 还原表空间
SQL> restore tablespace DMHR from backupset '/dm7/backup/bak2';
c) 表空间online
SQL> alter tablespace DMHR online;
备份用户表空间和表的方法和备份数据库类似,此处不在赘述。
4 如果要还原整个数据,在BAK2的使用上也有些变化。我们不在利用dmrestore命令去还原。而是利用dmrman。
a) 检查数据库服务状态
[dmdba@dm1 ~]$ ps -ef|grep dmserver
b) 启动dmrman
[dmdba@dm1 ~]$ /dm7/bin/dmrman
dmrman V7.1.5.75-Build(2016.04.21-67830trunc)
RMAN>
c) 还原数据库
RMAN>restore database '/dm7/data/DAMENG/dm.ini' from backupset '/dm7/backup/bak2';
d) 恢复数据库
RMAN>recover database '/dm7/data/DAMENG/dm.ini' from backupset '/dm7/backup/bak2';
e) 打开数据库
[dmdba@dm1 ~]$ /etc/rc.d/init.d/DmServiceDM1 start
4 备份归档
BAK2出现后,支持对归档的备份。
备份所有的归档文件
SQL> backup archivelog all to dmbakarch backupset '/dm7/backup/bak2_arch';
查看归档备份
[dmdba@dm1 bak2_arch]$ ls
bak2_arch.bak bak2_arch.meta
BAK2同样可以利用管理工具实现上述操作,但是要注意-Duse_bak2=true参数的使用。