达梦数据库的备份还原

文章目录

一、前言

数据备份是数据安全的重要保障,是数据库管理员必须进行的日常工作之一,拥有良好的备份习惯才能在数据库发生状况时确保数据不会发生遗失和进行后续的恢复还原工作。
脱机备份使用的室DM的dmrman工具,在进行备份之前,先启动dmap服务以及确保实例是关闭的。这里不再叙述脱机备份,因为在日常项目工作中很少会去关闭数据库实例,而且备份是周期性的事项,经常关闭重启数据库实例肯定是不适合的,下面重点说下热备份,热备份主要分为俩种方式:
1:达梦数据库提供的联机备份方式
2:dmp文件备份

二、联机备份恢复(热备)

联机备份需要数据库实例启动,且数据库实例需要处于open状态,还要打开归档

(一)备份

1. 操作步骤-图形化方式

【1】打开数据库实例服务

cd  /home/dmdba/dmdms/bin
./DmServiceDMSERVER  start

【2】状态转换为配置(mount)状态,并设值归档路径,直接手动填写Linux路径即可
达梦数据库的备份还原

达梦数据库的备份还原
【3】配置完成以后再将数据库切换为打开(open)状态
达梦数据库的备份还原

2. 操作步骤-SQL
 alter database mount;
 alter database add archivelog ‘type=local,dest=/home/dmdba/dmarch,file_size=64,space_limit=0’;

 alter database archivelog;

 alter database open;
3. 检查归档设置
--查看归档是否打开
select arch_mode from v$database;
--查看归档日志信息
select arch_name,arch_type,arch_dest from v$dm_arch_ini;
4. 数据备份

【数据库备份】

BACKUP DATABASE FULL BACKUPSET  '/home/dmdbms/dmdata';

【表空间备份】

backup tablespace "MAIN" full to "TS_MAIN_FULL_2021_05_01_17_03_22" backupset '/home/dmdba/dmdms/data/DAMENG/bak';

(二)恢复

【恢复表空间】

restore tablespace MAIN from backupset '/home/dmdba/dmdms/data/DAMENG/bak';

【重启数据库实例】

cd  /home/dmdba/dmdms/bin
./DmServiceDMSERVER  restart

三、dimp/dexp备份

逻辑导出(dexp)

逻辑导入(dimp)

DM 数据库的两个命令行工具,分别用来实现对DM数据库的逻辑备份和逻辑还原。逻辑备份和逻辑还原都是在联机方式下完成,联机方式是指数据库服务器正常运行过程中进行的备份和还原。dexp和dimp 是DM数据库自带的工具,只要安装了 DM 数据库,就可以在安装目录的bin目录中找到

逻辑导出和逻辑导入数据库对象分为四种级别:数据库级、用户级、模式级和表级。四种级别独立互斥,不能同时存在。

一般的话在使用达梦数据库的时候,我们备份某个模式即可,既可以选择达梦管理工具导出也可以通过bin下的dimp脚本导出
达梦数据库的备份还原

(一)备份

/home/dmdba/dmdms/bin/dexp """SYSDBA"""/"""SYSDBA"""@192.168.100.1:5236 DIRECTORY=/home/dmdba/dmp FILE=imp_exp.dmp SCHEMAS="TEST" TABLESPACE=Y DROP=N LOG=exp_2021_05_01_17_16_34.log LOG_WRITE=N

(二)数据恢复

数据恢复可以通过dimp导入,其中DIRECTORY指向的是dmp备份文件位置,这里设置了恢复中如果表存在则覆盖TABLE_EXISTS_ACTION

/home/dmdba/dmdms/bin/dimp """SYSDBA"""/"""SYSDBA"""@192.168.220.247:5236 DIRECTORY=/home/dmdba/dmp/20210430 FILE=imp_exp.dmp FULL=Y IGNORE=N COMPILE=Y INDEXFIRST=N TABLE_FIRST=N COMMIT_ROWS=5000 FAST_LOAD=N TABLE_EXISTS_ACTION=REPLACE LOG=/home/dmdba/dmp/20210430 /inport.log LOG_WRITE=N

相对于使用联机备份,这一种也更为简单便捷,这也是我在项目中所使用的方式:
【我的案例参考】
1:通过SHELL脚本的方式执行数据备份,每天一次,每次的数据都保存,每次备份大约耗时20s
2:定时通过Linux的crontab构建的

上一篇:linux下使用googlebreakpad解析dmp文件获取堆栈


下一篇:procdump 工具创建dmp