达梦DM8数据库的备份与还原

逻辑备份与还原

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")

发表评论

邮箱地址不会被公开。 必填项已用*标注