注册
达梦数据库的备份、还原以及修复
专栏/培训园地/ 文章详情 /

达梦数据库的备份、还原以及修复

世间慵懒人 2025/01/23 330 0 0
摘要

达梦数据库的备份与还原

达梦数据库(DM Database)作为国产数据库的重要代表,提供了多种备份与还原机制,包括物理备份、逻辑备份及还原。本文将详细剖析达梦数据库的备份和归档还原机制及其实际操作。

1、物理备份与还原

1.1脱机备份

脱机备份需要关闭数据库服务`
本例的基础信息
/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表示备份成功

1.2 联机备份

联机备份需要开启归档,数据库服务需要启动 联机备份使用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

1.2.1数据库备份

备份时可能会出现检查点不连续问题,需要手动执行检查点或重启数据库
手动执行检查点 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'

1.2.2表空间备份

单独备份表空间只能联机不能脱机

/*backup tablespace 表空间名 to 备份名称 backupset 备份文件存放路径*/ backup tablespace tbs to TBSFULLBAK01 backupset '/dm8/backup/TBSFULLBAK01'

1.2.3 表备份

/*backup table 表名 to 备份名 backupset 备份文件存放路径*/ backup table dameng.t_temp to TABLEFULLBAK02 backupset '/dm8/backup/TABLEFULLBAK02'

1.2.4 归档日志备份

/*backup ARCHIVE LOG ALL to 备份名 backupset 备份文件存放路径*/ backup ARCHIVE LOG ALL to ARCHFULLBAK01 backupset '/dm8/backup/ARCHFULLBAK01'

1.3 还原

1.3.1表空间还原

表空间还原需要经过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;

1.3.2 数据库还原

数据库还原需要经过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;

2、逻辑备份与还原

逻辑备份与还原使用dexp和dim对数据进行导入和导出

2.1逻辑备份

[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

2.2逻辑还原

[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

3、数据库恢复

3.1、常规基于归档还原数据库

还原数据库、利用归档文件恢复数据库到最新状态

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;

启动还原后验证数据

3.2、主备环境下指定 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;
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服