达梦数据库(DM Database)作为国产数据库的重要代表,提供了多种备份与还原机制,包括物理备份、逻辑备份及还原。本文将详细剖析达梦数据库的备份和归档还原机制及其实际操作。
脱机备份需要关闭数据库服务`
本例的基础信息
/dm8 数据库安装路径
dmdba 安装和操作达梦数据库的用户
[root@localhost ~]# systemctl stop 服务名称
//使用/dm8/bin中的dmrman工具进行脱机备份
[dmdba@localhost ~]# cd /dm8/bin
[dmdba@localhost ~]# ./dmrman help //help可以查看详细参数信息
[dmdba@localhost bin]$ ./dmrman
dmrman V8
//脱机备份命令backup database 配置文件(.ini)路径 to 备份名称 backupset备份文件存放路
径
RMAN> backup database '/dm8/data/DAMENG/dm.ini' to FULLBAK01 backupset '/dm8/backup/FULLBAK01';
backup database '/dm8/data/DAMENG/dm.ini' to FULLBAK01 backupset '/dm8/backup/FULLBAK01';
file dm.key not found, use default license!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[37012], file_lsn[37012]
Processing backupset /dm8/backup/FULLBAK01 [Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]
backup successfully!
time used: 00:00:03.370
//出现successfully表示备份成功
联机备份需要开启归档,数据库服务需要启动 联机备份使用SQL语句进行操作
/*归档 归档数据库需要处于mount状态*/
alter database mount
alter database ARCHIVELOG
alter database add ARCHIVELOG 'type=local,dest=/dm8/arch,file_size=64,space_limit=10240'
alter database open
备份时可能会出现检查点不连续问题,需要手动执行检查点或重启数据库
手动执行检查点 checkpoint(100);
/*1、全库备份*/
/*backup database full to 备份名 BACKUPSET 备份文件存放路劲*/
backup database
backup database full to FUllBAK01 BACKUPSET '/dm8/backup/FULLBAK01'
/*2、增量备份*/
/*backup database increment with backupdir 基库路径 to INCRBAK06 backupset 增量备份文件存放路径*/
backup database increment with backupdir '/dm8/backup/FULLBAK01' to INCRBAK06 backupset '/dm8/backup/INCRBAK06'
单独备份表空间只能联机不能脱机
/*backup tablespace 表空间名 to 备份名称 backupset 备份文件存放路径*/
backup tablespace tbs to TBSFULLBAK01 backupset '/dm8/backup/TBSFULLBAK01'
/*backup table 表名 to 备份名 backupset 备份文件存放路径*/
backup table dameng.t_temp to TABLEFULLBAK02 backupset '/dm8/backup/TABLEFULLBAK02'
/*backup ARCHIVE LOG ALL to 备份名 backupset 备份文件存放路径*/
backup ARCHIVE LOG ALL to ARCHFULLBAK01 backupset '/dm8/backup/ARCHFULLBAK01'
表空间还原需要经过2个步骤:还原与恢复
/*还原*/
/*restore database 数据库配置文件(.ini)路径 tablespace 表空间名 from backupset
备份的表空间路径*/
[dmdba@localhost bin]$ ./dmrman
dmrman V8
RMAN> restore database '/dm8/data/DAMENG/dm.ini' tablespace tbs from backupset '/dm8/backup/FULLBAK01';
/*恢复*/
/*recover database 数据库配置文件(.ini)路径 tablespace 表空间名;*/
RMAN> recover database '/dm8/data/DAMENG/dm.ini' tablespace tbs;
数据库还原需要经过3步:还原、恢复、更新魔数
还原后重启数据库服务不报错则还原成功
/*还原*/
/*restore database 数据库配置文件(.ini)路径 from backupset 数据库备份文件路劲;*/
RMAN> restore database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/backup/FULLBAK01';
/*恢复*/
/*recover database 数据库配置文件(.ini)路径 with archivedir 归档日志路径;*/
RMAN> recover database '/dm8/data/DAMENG/dm.ini' with archivedir '/dm8/arch';
/*更新魔数*/
/*recover database 数据库配置文件(.ini)路径 update db_magic;*/
RMAN> recover database '/dm8/data/DAMENG/dm.ini' update db_magic;
逻辑备份与还原使用dexp和dim对数据进行导入和导出
[dmdba@localhost bin]$ ./dexp help //help查看详细的参数信息
/*全库备份*/
/*./dexp sysdba/SYSDBA:5236(连接数据库) file='备份文件保存路径' log=备份日志保存路径 full=y*/
[dmdba@localhost bin]$ ./dexp sysdba/SYSDBA:5236 file=/dm8/backup/dexp/dexp.dmp log=/dm8/backup/dexp/dexp.log full=y
[dmdba@localhost bin]$ ./dexp help //help查看详细信息
/*全库还原*/
/*./dimp sysdba/SYSDBA:5236 file= '备份文件保存路径' log='还原日志保存路径' full=y */
[dmdba@localhost bin]$ ./dimp sysdba/SYSDBA:5236 file= /dm8/backup/dexp/dexp.dmp log=/dm8/backup/dimp/dimp.log full=Y
/*还原指定的模式*/
/*例如将备份库的DMHR模式还原到dmtest用户的DMTEST模式*/
[dmdba@localhost bin]$ ./dimp dmtest/dameng123:5236 file=/dm8/backup/dexp/dexp.dmp log=/dm8/backup/dexp/dimp.log remap_schema=DMHR:DMTEST
还原数据库、利用归档文件恢复数据库到最新状态
dmrman
RMAN>RESTORE DATABASE '/dm8/data/DM01/dm.ini' FROM BACKUPSET '/dm8/backup';
RMAN>RECOVER DATABASE '/dm8/data/DM01/dm.ini' WITH ARCHIVEDIR '/dm8/arch/DM01/'
RMAN> recover database '/dm8/data/DM01/dm.ini' update db_magic;
指定时间点还原
dmrman
RMAN>RESTORE DATABASE '/dm8/data/DM01/dm.ini' FROM BACKUPSET '/dm8/backup';
RMAN>RECOVER DATABASE '/dm8/data/DM01/dm.ini' WITH ARCHIVEDIR '/dm8/arch/DM01/' until time '2025-01-19 19:49:12'
RMAN> recover database '/dm8/data/DM01/dm.ini' update db_magic;
启动还原后验证数据
主备环境下,如果当前节点的归档缺失,使用归档进行恢复时,会由于归档日志不连续而报错,无法将数据库恢复到最新状态。如果另一节点保存有该部分日志,则可以使用该节点日志进行恢复。默认情况下,恢复阶段收集归档时只收集与待恢复库 DB_MAGIC、PERMANENT_MAGIC 一致的归档文件,而在主备环境中 PERMANENT_MAGIC 是一致的,此时可通过指定 DB_MAGIC 跳过这一限制。
1、搭建主备环境并备份任意节点;
RMAN> BACKUP DATABASE '/dm8/data/DM01/dm.ini' BACKUPSET '/dm8/backup/db_full_bak';
2、启动主备,登录主节点插入部分数据后退出,然后删除该节点下所有归档日志;
3、指定备份集还原到主节点;
RMAN> RESTORE DATABASE '/dm8/data/DM01/dm.ini' FROM BACKUPSET '/dm8/backup/db_full_bak'
4、指定 DB_MAGIC,使用备库归档进行恢复。由于该节点下所有归档已被删除,无法恢复到最新状态,此时需要借助备库存在的归档。
查看DB_MAGIC
./dmrachk arch_fil=/dm8/arch/DM01/ARCHIVE_LOCAL1_0x6094BD33_EP0_2025-01-20_14-21-02.log
rachk V8
/*******************************************************************/
archive file /dm8/arch/DM01/ARCHIVE_LOCAL1_0x6094BD33_EP0_2025-01-20_14-21-02.log itemize.
version : 0x7007
status : ACTIVE
enc_flag : FALSE
n_rpkgs : 97151
pmnt_magic : 1577092681
db_magic : 1620360499
src_db_magic : 1620360499
arch_lsn : 39202
arch_seq : 4787
clsn : 3932502
next_seq : 101937
g_next_seq : 101937
file len : 2147483648
file free : 716767232
dsc seqno : 0
dsc node : 1
create time : 2025-01-20 14:21:02.011998 time_zone:+08:00
close time : 2025-01-20 14:21:02.011998 time_zone:+08:00
llog first time : 1900-01-01 00:00:00.000000 time_zone:+08:00
llog last time : 1900-01-01 00:00:00.000000 time_zone:+08:00
/*******************************************************************/
The SUMMARY(seqno[0]):
total files: 1
okey files: 1
fail file: 0
repeat file: 0
RMAN> RECOVER DATABASE '/dm8/data/DM01/dm.ini' WITH ARCHIVEDIR '/dm8/arch/DM01/' USE DB_MAGIC 1620360499;
文章
阅读量
获赞