暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

DM8备份恢复实验

DataBaseNotes 2022-08-24
293

一、 备份知识介绍

1.1、备份的意义

数据库备份是 DBA 日常最重要的工作内容。 

备份的主要目的是数据容灾,保证数据的安全性,在数据库发生故障时,通过还原备份集,将数据恢复到可用状态。


1.2、备份的分类方式

逻辑备份和物理备份

联机备份和脱机备份

数据备份和归档日志备份

一致性备份和非一致性备份

完全备份和增量备份


1.3、逻辑备份

工具:dexp/dimp  (类似oracle的exp/imp)

逻辑备份是指利用dexp导出工具,将指定对象(库、模式、表)的数据导出到文件的备份方式。

逻辑备份针对的是数据内容,并不关心这些数据物理存储在什么位置。


1.4、物理备份

物理备份是直接扫描数据库文件,找出那些已经分配、使用的数据页,拷贝并保存到备份集中。

物理备份过程中,不关心数据的具体内容是什么,也不关心数据也属于哪一张表。


1.5、冷热备份

联机备份 又称为热备。数据库是open,DB可对外提供读写服务的。

脱机备份 又称为冷备。数据库是shutdown,外部无法访问DB。 


1.6、DM备份工具

disql

manager

dmrman

console

详情请参考官方文档 《DM8 backup and recovery》


二、开启数据库归档模式

联机备份数据库的前提条件。也建议生产库必须开启归档模式。

2.1 方式1、manager工具开启归档


2.2 方式2 、使用命令行方式开启归档模式

--修改数据库为 MOUNT 状态
ALTER DATABASE MOUNT;
--配置本地归档
ALTER DATABASE ADD ARCHIVELOG 'DEST = dmdata/arch, TYPE = local,FILE_SIZE = 1024,SPACE_LIMIT =102400,ARCH_FLUSH_BUF_SIZE=16,HANG_FLAG=1';
--开启归档模式
ALTER DATABASE ARCHIVELOG;
--修改数据库为 OPEN 状态
ALTER DATABASE OPEN;


2.3 方式3、编辑dmarch.ini和dm.ini文件开启归档

1)手动编辑 dmarch.ini 文件,之后保存在 dm.ini 所在的目录

2)编辑 dm.ini 文件,设置参数 ARCH_INI=1,保存;
3)启动数据库实例, 数据库已运行于归档模式。


2.4、验证 归档模式



三、备份实验

3.1 使用manager工具进行数据库备份


3.2 使用disql命令行方式备份数据库

backup database full to "DB_amber_FULL_2022_08_22_11_32_53" backupset 'DB_amber_FULL_2022_08_22_11_32_53' device type disk backupinfo 'db_full_bak' compressed level 2 parallel 2;


3.3 使用manager配置归档日志备份


3.4 使用disql命令行备份归档日志

backup archivelog all to "ARCH_2022_08_22_11_35_29" backupset 'ARCH_2022_08_22_11_35_29' backupinfo 'arch_backup' parallel 2;


3.5 使用manager配置增量备份


3.6 使用disql配置增量备份

backup database increment with backupdir '/dmdata/backup' to "DB_amber_INCRE_2022_08_22_12_26_47" backupset 'DB_amber_INCRE_2022_08_22_12_26_47' backupinfo 'db_incr_backup' parallel 2;


3.7 manager查看备份文件


四、数据库恢复

4.1 先关闭数据库

我这里比较暴力,直接kill。

建议大家使用服务命令来停库  ./DmServiceDMSERVER stop


4.2 使用console工具来恢复数据库

先恢复完整备份,再恢复增量备份

 


4.3 还原数据库/归档


4.4. 更新magic

经过以上步骤,恢复已经完成。


五、起库验证


六、恢复操作的后台日志信息

[INFO] drman_execute_sql:CONFIGURE DEFAULT TRACE LEVEL 1;

Show BACKUPSETS  WITH BACKUPDIR '/dmdata/backup' to '/dm8/tool/backupset_result_1661145590896.xml' FORMAT XML ;

2022-08-22 13:19:50 [com.dameng.console.service.BackupRestoreService]

[INFO] use_ap:1; ap_port:-1


Show BACKUPSETS WITH BACKUPDIR '/dmdata/backup' to '/dm8/tool/backupset_result_1661145590896.xml' FORMAT XML;

2022-08-22 13:23:22 [com.dameng.console.service.BackupRestoreService]

[INFO] drman_execute_sql:CONFIGURE DEFAULT TRACE LEVEL 1;

RESTORE DATABASE  '/dmdata/amber/dm.ini' OVERWRITE FROM BACKUPSET '/dmdata/backup/DB_amber_FULL_2022_08_22_12_24_33' DEVICE TYPE disk;

2022-08-22 13:23:22 [com.dameng.console.service.BackupRestoreService]

[INFO] use_ap:1; ap_port:-1


RESTORE DATABASE '/dmdata/amber/dm.ini' OVERWRITE FROM BACKUPSET '/dmdata/backup/DB_amber_FULL_2022_08_22_12_24_33' DEVICE TYPE disk;

[Percent:100.00%][Speed:0.00M/s][Cost:00:00:04][Remaining:00:00:00]

2022-08-22 13:24:32 [com.dameng.console.service.BackupRestoreService]

[INFO] drman_execute_sql:CONFIGURE DEFAULT TRACE LEVEL 1;

RECOVER DATABASE '/dmdata/amber/dm.ini' FORCE   FROM BACKUPSET '/dmdata/backup/DB_amber_FULL_2022_08_22_12_24_33' DEVICE TYPE disk;

2022-08-22 13:24:32 [com.dameng.console.service.BackupRestoreService]

[INFO] use_ap:1; ap_port:-1


RECOVER DATABASE '/dmdata/amber/dm.ini' FORCE FROM BACKUPSET '/dmdata/backup/DB_amber_FULL_2022_08_22_12_24_33' DEVICE TYPE disk;

[Percent:100.00%][Speed:0.00PKG/s][Cost:00:00:00][Remaining:00:00:00]

2022-08-22 13:25:23 [com.dameng.console.service.BackupRestoreService]

[INFO] drman_execute_sql:CONFIGURE DEFAULT TRACE LEVEL 1;

RECOVER DATABASE '/dmdata/amber/dm.ini' UPDATE DB_MAGIC ;

2022-08-22 13:25:23 [com.dameng.console.service.BackupRestoreService]

[INFO] use_ap:1; ap_port:-1


RECOVER DATABASE '/dmdata/amber/dm.ini' UPDATE DB_MAGIC;

2022-08-22 13:26:58 [com.dameng.console.service.BackupRestoreService]

[INFO] drman_execute_sql:CONFIGURE DEFAULT TRACE LEVEL 1;

Show BACKUPSETS  WITH BACKUPDIR '/dmdata/backup' to '/dm8/tool/backupset_result_1661146018970.xml' FORMAT XML ;

2022-08-22 13:26:58 [com.dameng.console.service.BackupRestoreService]

[INFO] use_ap:1; ap_port:-1


Show BACKUPSETS WITH BACKUPDIR '/dmdata/backup' to '/dm8/tool/backupset_result_1661146018970.xml' FORMAT XML;

[dmdba@amber tool]$



七、 dmrman工具备份恢复实验

dmrman有个缺陷,数据库必须是关闭状态才可以!!!

这个跟oracle的RMAN无法相提并论了~

7.1 dmrman备份


7.2 查看备份集

show backupset '/dmdata/backup/DB_amber_FULL_20220822_134550_703551';


7.3 检验备份有效性

RMAN> CHECK BACKUPSET '/dmdata/backup/DB_amber_FULL_20220822_134550_703551';

CHECK BACKUPSET '/dmdata/backup/DB_amber_FULL_20220822_134550_703551';

[Percent:100.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]

check backupset successfully.

time used: 349.090(ms)

RMAN>


7.4 dmrman恢复数据库

RESTORE DATABASE '/dmdata/amber/dm.ini' FROM BACKUPSET '/dmdata/backup/DB_amber_FULL_20220822_134550_703551';


RECOVER DATABASE '/dmdata/amber/dm.ini' FROM BACKUPSET '/dmdata/backup/DB_amber_FULL_20220822_134550_703551';


RECOVER DATABASE '/dmdata/amber/dm.ini' WITH ARCHIVEDIR '/dmdata/backup/ARCH_LOG_20220822_134620_854319';


RECOVER DATABASE '/dmdata/amber/dm.ini'  UPDATE DB_MAGIC;


八、实验过程遇到的报错


原因分析:

我用manager和disql和dmarch.in配置归档模式的时候,多次关闭已配置的本地归档之后再重新打开,会造成归档文件中部分日志缺失,备份时检查归档文件连续性时将会报错。


解决方案:

1. 备份前调用checkpoint(100)函数主动刷新检查点。

checkpoint(100)

2. 备份前修复归档  

repair archivelog database '/dmdata/amber/dm.ini'

3. 备份前删除过期归档

在备份之前,从linux层面,直接rm过期归档






文章转载自DataBaseNotes,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论