逻辑备份与还原
DM管理工具导出
使用DM管理工具导出相当于使用有图形界面的dexp。
选中要导出的数据库,右键,选择“导出”。
DM管理工具导入
使用DM管理工具导入相当于使用有图形界面的dimp。
选中要导入的数据库,右键,选择“导入”。
需要注意的是,低版本dimp工具无法导入高版本dexp工具导出的dmp文件。
dexp 逻辑导出
dexp
工具可以对本地或者远程数据库进行数据库级、用户级、模式级和表级的逻辑备份。
将用户名和密码均为SYSDBA
, IP 地址为127.0.0.1
,端口号为5236
的数据库采用FULL
方式完全导出。导出文件名为db_str.dmp
,导出的日志文件名为db_str.log
, 导出文件的路径为/home/dm_bak
。
cd /www/dm8/bin
./dexp USERID=SYSDBA/SYSDBA@127.0.0.1:5236 FILE=db_str.dmp DIRECTORY=/home/dm_bak LOG=db_str.log FULL=Y
dexp参数一览表可以查看DM8_dexp&dimp.pdf
dimp 逻辑导入
dimp
逻辑导入工具利用dexp
工具生成的备份文件对本地或远程的数据库进行联机逻辑还原。
例如,将逻辑备份导入到用户名和密码为SYSDBA
, IP 地址为127.0.0.1
,端口号为5236
的数据库。导入文件名为db_str.dmp
, 导入的日志文件名为db_str.log
,路径为C:\Users\dedemao\Desktop\dm_bak
。
./dimp USERID=SYSDBA/SYSDBA@127.0.0.1:5236 FILE=db_str.dmp DIRECTORY=C:\Users\dedemao\Desktop\dm_bak LOG=db_str.log FULL=Y
需要注意的是,低版本dimp工具无法导入高版本dexp工具导出的dmp文件。
dimp参数一览表可以查看DM8_dexp&dimp.pdf
windows定时备份
新建dmbackup.bat
,内容如下:
@echo off
set "datetime=%date:~,4%%date:~5,2%%date:~8,2%%time:~,2%%time:~3,2%%time:~6,2%"
:: 注意上面获取的系统时间在10点前有空格,所以要使用字符0来替换空格符
set "datetime=%datetime: =0%"
E:\server\dmdbms\bin\dexp USERID=TEST/123456789@127.0.0.1:5236 FILE=db_test_%datetime%.dmp DIRECTORY=G:\2020\bak\dm LOG=db_test_%datetime%.log FULL=Y NOLOG=Y DUMMY=Y
@echo on
修改里面的路径及账号密码参数即可
物理备份与还原
查看是否归档
select arch_mode from v$database;
N:表示未开启
开启归档模式
切换状态为配置模式
最后再把状态切换为open
创建作业
填写作业名:
新建作业步骤:
步骤类型选择“备份数据库”:
选择备份路径:
新建作业调度:
每天凌晨1点备份:
作业执行后,会在指定备份目录生成备份文件夹:
还原
停止数据库实例
打开DM服务查看工具,停止需要还原数据库的实例:
还原
打开DM控制台工具,点击还原:
注意:达梦数据库在备份还原中,如果使用root用户打开DMRMAN工具进行还原时,会出现“数据文件读写出错”的提示。 更换为 dmdba用户即可。
使用DM控制台工具(图形化界面)
停止数据库服务
新建备份
默认将备份在数据库的安装目录下的bak文件夹
还原备份
更新db_magic
开启数据库实例服务
使用DMRMAN
DMRMAN
(DM RECOVERY MANEGER)是 DM 的脱机备份还原管理工具,由它来统一负责库级脱机备份、脱机还原、脱机恢复等相关操作,该工具支持命令行指定参数方式和控制台交互方式执行,降低了用户的操作难度。
停止数据库服务
运行DMRMAN工具
命令行下运行dmrman.exe
备份数据库
BACKUP DATABASE 'E:\server\dmdbms\data\MIANYANG\dm.ini';
如果执行备份前没有关闭数据库实例服务,则会报错:[-135]:创建信号量失败
默认将备份在数据库的安装目录下的bak文件夹
校验备份(可省略)
CHECK BACKUPSET 'E:\server\dmdbms\data\MIANYANG\bak\DB_MIANYANG_FULL_20200720_123730_000132';
还原数据库
RESTORE DATABASE 'E:\server\dmdbms\data\MIANYANG\dm.ini' FROM BACKUPSET 'E:\server\dmdbms\data\MIANYANG\bak\DB_MIANYANG_FULL_20200720_123730_000132';
更新db_magic
recover database 'E:\server\dmdbms\data\MIANYANG\dm.ini' update db_magic;
开启数据库实例服务
定时备份脚本
使用dexp工具逻辑备份
#!/bin/bash
# 设置环境变量
DATE=$(date +%Y%m%d)
# 数据库账号
USERNAME=SYSDBA
# 数据库密码
PASSWORD=SYSDBA
# 数据库地址
HOST=127.0.0.1
# 数据库端口
PORT=5236
# 备份目录
DIR=/www/backup/dm
echo '获取系统日期:' $DATE
echo '开始备份...' $(date "+%Y-%m-%d %H:%M:%S")
/home/dmdba/dmdbms/bin/dexp USERID=$USERNAME/$PASSWORD@$HOST:$PORT FILE=db_$DATE.dmp DIRECTORY=$DIR LOG=db_$DATE.log FULL=Y COMPRESS=Y NOLOG=Y DUMMY=Y
echo '备份完成' $(date "+%Y-%m-%d %H:%M:%S")
使用dmrman工具物理备份
#!/bin/bash
# 停止数据库服务
systemctl stop DmServiceDMDB
# 使用dmrman工具备份
/home/dmdba/dmdbms/bin/dmrman CTLSTMT="BACKUP DATABASE '/home/dmdba/dmdbms/data/DMDB/dm.ini';"
# 启动数据库服务
systemctl start DmServiceDMDB
echo '备份完成' $(date "+%Y-%m-%d %H:%M:%S")
使用dmrman工具还原
# 停止数据库服务
systemctl stop DmServiceDMDB
# 检查备份
su - dmdba -c "/home/dmdba/dmdbms/bin/dmrman CTLSTMT=\"CHECK BACKUPSET '/home/dmdba/dmdbms/data/DMDB/bak/DB_DMDB_FULL_20220731_145241_214303';\""
# 还原备份
su - dmdba -c "/home/dmdba/dmdbms/bin/dmrman CTLSTMT=\"RESTORE DATABASE '/home/dmdba/dmdbms/data/DMDB/dm.ini' FROM BACKUPSET '/home/dmdba/dmdbms/data/DMDB/bak/DB_DMDB_FULL_20220731_145241_214303';\""
# 更新db_magic
su - dmdba -c "/home/dmdba/dmdbms/bin/dmrman CTLSTMT=\"recover database '/home/dmdba/dmdbms/data/DMDB/dm.ini' update db_magic\"";
# 启动数据库服务
systemctl start DmServiceDMDB
echo '还原完成' $(date "+%Y-%m-%d %H:%M:%S")