达梦数据库的备份与恢复

本文详细介绍了达梦数据库的物理和逻辑备份方法,包括联机备份、全库备份、增量备份、表空间备份及恢复。同时,讲解了如何处理归档序号不连续的问题,以及如何进行数据库、表、表空间的还原和恢复操作。此外,还涵盖了逻辑备份工具dexp和dimp的使用,以及非默认备份路径的注册和备份集的维护。

达梦数据库的备份与恢复(物理及逻辑备份)

物理联机备份
联机备份:数据库是启动状态,联机备份要求数据库打开归档。备份时 AP 服务需要为启动状态。

  1. 数据库开机归档
alter database mount;
alter database ARCHIVELOG;
alter database add ARCHIVELOG 'type=local,dest=/dm8/arch';
alter database add archivelog 'type=local,dest=/dm8/arch,file_size=64,space_limit=10240';
alter database open;

1.1 故障参考
第一次联机备份数据库时,出现归档序号不连续情况执行以下操作处理:
backup database;
checkpoint(100);

  1. 备份数据库
备份全库
backup DATABASE FULL to FULLBAK001 BACKUPSET '/dm8/data/bak/FULLBAK001';

累计增量备份
backup DATABASE INCREMENT CUMULATIVE with BACKUPDIR '/dm8/data/bak/' to INCR_CUM_BAK001 BACKUPSET '/dm8/data/incr/INCR_CUM_BAK001';

差异增量备份
backup DATABASE INCREMENT BASE ON BACKUPSET '/dm8/data/bak/FULLBAK001' to INCR_BAK001 backupset '/dm8/data/incr/INCR_BAK001';

表空间备份 
backup tablespace dmtbs; 
backup tablespace dmtbs INCREMENT with BACKUPDIR '/dm8/backup/full/' to DMTBSINCR_01 backupset '/dm8/backup/incr/DMTBSINCR_01';

表备份
backup table liuzitao.abc;
backup table liuzitao.abc to LZTTABABCBAK01 backupset '/dm8/data/bak/LZTTABABCBAK01';
  1. 还原数据库
    库级、表空间的还原和恢复不支持联机恢复,只支持脱机还原恢复。整库恢复还原会更改临时魔数,整库恢复后,之前备份将无法再用于本库恢复;

关闭数据库
shutdown immediate

==========================================================================
表还原
restore TABLE STRUCT FROM BACKUPSET '/dm8/data/bak/LZTABCBAK001';
restore TABLE FROM BACKUPSET '/dm8/data/bak/LZTABCBAK001';
先还原表结构,再还原表数据;

==========================================================================
表空间从全备份还原
restore database '/dm8/data/DAMENG/dm.ini' tablespace lztspc from backupset  '/dm8/backup/full/CONSOLEFULLBAK';

表空间恢复
recover database '/dm8/data/DAMENG/dm.ini' tablespace main;
备注:表空间的恢复系统会自动利用归档恢复到最新状态。 

表空间从增量备份还原
restore database '/dm8/data/DAMENG/dm.ini' tablespace LZTSPC from backupset '/dm8/data/incr/INCR_BAK001' with backupdir '基础全备目录';

表空间恢复
recover database '/dm8/data/DAMENG/dm.ini' tablespace main;
备注:表空间的恢复系统会自动利用归档恢复到最新状态。 

==========================================================================
整库还原
restore database '/dm8/data/DM/dm.ini' from backupset '/dm8/backup/full/ONLINEBAK_02';

整库恢复
recover database '/dm8/data/DM/dm.ini' with archivedir '/dm8/arch';

更新数据库魔数 
recover database '/dm8/data/DM/dm.ini' update db_magic;

==========================================================================
表误删除(DROP),可以指定归档恢复到删除的前一刻。
recover database '/dm8/data/DMTEST/dm.ini' with archivedir '/dm8/arch' until lsn XX;
recover database '/dm8/data/DMTEST/dm.ini' with archivedir '/dm8/arch' until time XX;
  1. 非默认备份路径注册
SF_BAKSET_BACKUP_DIR_ADD('DISK','/dm8/backup/full/'); 
SF_BAKSET_BACKUP_DIR_ADD('DISK','/dm8/backup/incr/');
  1. 备份集维护
dmrman

查看备份集 
show backupset '/dm8/data/DAMENG/bak_full'; 

删除备份集 
remove backupset '/dm8/data/DAMENG/bak_increment'; 

检查备份集 
check backupset '/dm8/data/DAMENG/bak_full';

==============================================
manager

校验备份集
select SF_BAKSET_CHECK('DISK','/dm8/data/incr/INCR_BAK001');

查看备份集
select * from v$backupset;

查询永久魔数
select permanent_magic;

查询当前魔数
select db_magic from v$rlog;

脱机物理冷备

关闭数据库
shutdown immediate

dmrman
backup database '/dm8/data/DAMENG/dm.ini' full to DM8FULLBAK backupset '/dm8/data/bak/DM8FULLBAK';

逻辑备份

dexp 逻辑导出 | dimp 逻辑导入  四个级别: 
全库(full=y) 
按用户(owner=XXX) 
按模式(schemas=XXX) 
按表(tables=XX)

dexp

全库导出 
dexp userid=sysdba/Dameng123:5236 directory=/dm8/backup/dexp file=full.dmp log=full.log full=y

按用户导出
dexp userid=sysdba/Dameng123:5236 directory=/dm8/backup/dexp file=HRTEST.dmp log=HRTEST.log owner=HRTEST

按模式导出
dexp userid=sysdba/Dameng123:5236 directory=/dm8/backup/dexp file=DMHR.dmp log=DMHR.log schemas=DMHR

按表导出
dexp userid=sysdba/Dameng123:5236 directory=/dm8/backup/dexp file=EMPLOYEE.dmp log=EMPLOYEE.log tables=DMHR.EMPLOYEE

手写例子
dexp userid=sysdba/SYSDBA directory=/dm8/data/bak/ file=lzt.dmp log=lzt.log owner=liuzitao

dimp

全库导入
dimp userid=sysdba/Dameng123:5238 directory=/dm8/backup/dexp file=full.dmp log=impfull.log full=y 

按模式导入(将 A 模式导入到 B 模式,使用 REMAP_SCHEMA 参数): 
dimp userid=sysdba/Dameng123:5238 directory=/dm8/backup/dexp file=DMHR.dmp log=impDMHR.log REMAP_SCHEMA=DMHR:DMTEST 

表导入测试
dimp userid=sysdba/SYSDBA:5238 directory=/dm8/dexp file=t_dept.dmp log=dept.log tables=SYSDBA.t_dept remap_schema=SYSDBA:DMHR

手写例子
dimp userid=sysdba/SYSDBA directory=/dm8/data/bak/ file=lzt.dmp log=lztimp.log tables=liuzitao.abc
dimp userid=sysdba/SYSDBA directory=/dm8/data/bak/ file=lzt.dmp log=lztimp.log tables=liuzitao.abc table_exists_action=replace
dimp userid=sysdba/SYSDBA directory=/dm8/data/bak/ file=lzt.dmp log=lztimp.log table_exists_action=replace
达梦数据库(DM Database)作为国内较为流行的关系型数据库之一,其备份恢复功能对于保障数据安全至关重要。以下是基于达梦数据库备份恢复操作的演练指南和步骤说明。 ### 3.1 备份操作演练步骤 #### 3.1.1 全量备份 全量备份是对整个数据库进行一次完整的数据备份,适用于数据量较小或对恢复时间要求不高的场景。 ```bash ./dmrman CTLSTMT="BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' FULL TO full_backup_20241001 BACKUPSET '/dm8/backup/full'" ``` 该命令表示使用 `dmrman` 工具对数据库进行全量备份备份文件将保存在指定的路径中[^2]。 #### 3.1.2 增量备份 增量备份备份自上次备份以来发生变化的数据,适用于数据更新频繁的场景。 ```bash ./dmrman CTLSTMT="BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' INCREMENT TO incr_backup_20241002 BACKUPSET '/dm8/backup/incremental'" ``` 此命令将执行一次增量备份,仅备份自上次全量或增量备份后更改的数据。 #### 3.1.3 备份验证 备份完成后,建议对备份文件进行验证以确保其完整性。 ```bash ./dmrman CTLSTMT="VERIFY BACKUPSET '/dm8/backup/full/full_backup_20241001'" ``` 此命令将验证指定备份集的完整性,确保在恢复时可以正常使用。 ### 3.2 恢复操作演练步骤 #### 3.2.1 全量恢复 全量恢复适用于数据库整体损坏或需要恢复到某个完整状态的场景。 ```bash ./dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/backup/full/full_backup_20241001'" ``` 该命令将从指定的全量备份集中恢复数据库。 #### 3.2.2 增量恢复 增量恢复需要在全量恢复的基础上进行,依次恢复增量备份。 ```bash ./dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/backup/incremental/incr_backup_20241002'" ``` 此命令将恢复增量备份中的更改数据。 #### 3.2.3 恢复后验证 恢复完成后,应启动数据库并检查关键数据是否正确恢复。 ```bash ./dmserver start /dm8/data/DAMENG/dm.ini ``` 启动数据库后,连接数据库并执行简单查询以确认数据一致性。 ### 3.3 备份恢复的注意事项 - **备份策略制定**:根据业务需求制定合理的备份策略,包括全量备份周期、增量备份频率等。 - **备份文件管理**:定期清理过期备份文件,确保备份目录空间充足。 - **恢复测试**:定期进行恢复演练,确保备份文件可恢复恢复过程可控。 - **日志记录审计**:启用数据库审计功能,记录备份恢复操作日志,便于后续追踪分析[^1]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值