首页  :: 新随笔  :: 管理

DM数据库备份与恢复

Posted on 2023-02-09 15:22  高&玉  阅读(525)  评论(0编辑  收藏  举报

1. 环境介绍

操作系统:CentOS 7.6

数据库:DM8

2. 备份与恢复

2.1 在线备份

环境要求:数据库处于运行状态+归档模式,使用disql工具进行在线备份。

开启归档参考:https://www.cnblogs.com/haha029/p/17099151.html

 

1. 全库备份

全库备份

SQL> BACKUP  DATABASE  FULL  BACKUPSET '/backup/db_full_backup_01';

全库备份(效果同上,full效果一样)

SQL> BACKUP DATABASE BACKUPSET '/backup/db_full_backup_01';

全库备份

SQL> backup database to full_backup_20230214 backupset '/backup/full_backup_20230214' backupinfo 'full_backup_20230214' maxpiecesize 300 compressed level 5 parallel 4;
  • to full_backup_20230214:指定备份名
  • backupinfo 'full_backup_20230214':指定备份描述信息
  • maxpiecesize 300:限制备份片大小,当备份片超过限制时会生成新的备份片
  • compressed level 5:设置压缩级别(0~9)
  • parallel 4:指定备份并行线程数为4

 

全库增量备份,基于上一次备份

SQL> backup database increment backupset '/backup/db_increment_01';

 

全库增量备份,指定基于上一次表空间基础备份或增量备份

SQL> backup database increment base on backupset '/backup/full_backup_03' backupset '/backup/db_increment_02';

 

2. 表空间备份

表空间备份

SQL> backup tablespace GAOYU backupset '/backup/tablespace_backup_gaoyu_20230214';

 

表空间增量备份,基于上一次备份

SQL> backup tablespace gaoyu increment backupset '/backup/tablespace_increment_backup_gaoyu_01';

 

表空间增量备份,指定基于上一次表空间基础备份或增量备份

SQL> backup tablespace GAOYU increment base on backupset '/backup/tablespace_backup_gaoyu_20230214' backupset '/backup/tablespace_increment_backup_gaoyu_04';

 

3. 表备份

环境要求:数据库处于运行状态,开没开归档都可以。

 

备份表

SQL> backup table GAOYU.T1 backupset '/backup/table_t1_backup_20230214';

 

4. 归档备份

在 disql 工具中使用 BACKUP 语句可以备份归档日志。归档备份的前提:
 * 数据库必须配置归档;
 * 归档文件的 db_magic、permanent_magic 值和数据库的 db_magic、permanent_magic 值必须一样;
 * 归档日志必须连续,如果出现不连续的情况,前面的连续部分会忽略,仅备份最新的连续部分。

 

归档日志备份

SQL> backup archive log all '/backup/arch_log_backup';

2.2 脱机备份

环境要求:数据库处于关闭状态,使用dmrman工具进行脱机备份。

 

全库备份(full加不加均可)

RMAN> backup database '/data/dmdbms/data/DAMENG/dm.ini' [full] backupset '/backup/full_backup_20230214';

 

增量备份(基于上一次备份)

RMAN> backup database '/data/dmdbms/data/DAMENG/dm.ini' increment backupset '/backup/db_increment_02';

 

增量备份(指定基于前面的全备或增量备份)

RMAN> backup database '/data/dmdbms/data/DAMENG/dm.ini' increment with backupdir '/backup/full_backup_03' backupset '/backup/db_increment_01';

 

2.3 导出备份集

导出备份集中数据文件路径信息到mapped.txt

RMAN> dump backupset '/backup/full_backup_03' device type disk mapped file '/backup/mapped.txt';

 

指定dm.ini,导出调整后的数据文件路径信息到mapped_2.txt

RMAN> dump backupset '/backup/full_backup_03' device type disk database '/data/dmdbms/data/DAMENG/dm.ini' mapped file '/backup/mapped_2.txt';

2.4 管理备份集

disql查看备份集有效性

SQL> select sf_bakset_check('disk','/backup/dm_bak/backup_01');

 

disql删除备份集

SQL> select sf_bakset_remove('disk','/backup/dm_bak/backup_01');

 

dmrman查看备份集有效性

RMAN> check backupset '/backup/dm_bak/backup_01'; 

 

dmrman查看备份集信息,包含:DB信息、备份信息、数据文件等信息

RMAN> show backupset '/backup/backup_01';

 

dmrman使用with backupdir参数查看多个备份集信息

RMAN> show backupset with backupdir '/backup/backup_01','/backup/backup_02';

 

删除备份集

RMAN> remove backupset '/backup/backup_01';

 

2.5 数据库还原和恢复

检查备份集有效性

RMAN> check backupset '/backup/db_full_backup';

 

数据库还原

RMAN> restore database '/data/dmdbms/data/DAMENG/dm.ini' from backupset '/backup/db_full_backup';

 

数据库恢复(利用归档日志进行前滚)
使用 RECOVER 命令完成数据库恢复工作,可以是基于备份集的恢复工作,也可以是使用本地归档日志的恢复工作。数据库恢复是指重做 REDO 日志,有两种方式:从备份集恢复,即重做备份集中的 REDO 日志;或从归档恢复,即重做归档中的 REDO 日志。
方法1:通过备机集进行恢复

RMAN> recover database '/data/dmdbms/data/DAMENG/dm.ini' from backupset '/backup/db_full_backup';

 

方法2:指定归档目录进行恢复,默认不指定路径会使用dmarch.ini配置的路径进行前滚

RMAN> recover database '/data/dmdbms/data/DAMENG/dm.ini' with archivedir '/data/dmdbms/archlog';

 

数据库更新DB_MAGIC
数据库更新是指更新数据库的 DB_MAGIC,并将数据库调整为可正常工作状态,与数据库恢复一样使用 RECOVER 命令完成。数据库更新发生在重做 REDO 日志恢复数据库后。

RMAN> recover database '/data/dmdbms/data/DAMENG/dm.ini' update DB_MAGIC;

 

2.6 表空间还原和恢复

表空间还原
使用 RESTORE 命令完成表空间的脱机还原,还原的备份集可以是联机或脱机生成的库备份集,也可以是联机生成的表空间备份集。脱机表空间还原仅涉及表空间数据文件的重建与数据页的拷贝。不需要事先设置目标表空间为 OFFLINE 状态。
表空间还原后,表空间状态被置为 RES_OFFLINE,并设置数据标记 FIL_TS_RECV_STATE_RESTORED,表示经过还原但数据不完整。表空间还原命令如下:

RMAN> restore database '/data/dmdbms/data/DAMENG/dm.ini' tablespace GAOYU from backupset '/backup/tablespace_gaoyu_backup';

 

表空间恢复
表空间恢复通过重做 REDO 日志,以将数据更新到一致状态。由于日志重做过程中,修改好的数据页首先存入缓冲区,缓冲区分批次将修改好的数据页写入磁盘,如果在此过程中发生异常中断,可能导致缓冲区中的数据页无法写入磁盘,造成数据的不一致,数据库启动时校验失败,所以表空间恢复过程中不允许异常中断。
恢复完成后,表空间状态置为 ONLINE,并设置数据标记为 FIL_TS_RECV_STAT_RECOVERED,表示数据已恢复到一致状态。恢复表空间命令如下:

RMAN> recover database '/data/dmdbms/data/DAMENG/dm.ini' tablespace GAOYU;

表空间恢复后不需要更新DB_MAGIC。

 

2.7 归档备份还原和修复

归档离线备份

RMAN> backup archive log all database '/data/dmdbms/data/DAMENG/dm.ini' backupset '/backup/archlog_backup_20230214';

恢复归档到指定目录

RMAN> restore archive log from backupset '/backup/archlog_backup_20230214' to archivedir '/backup/archlog_restore';

修复归档日志
当DM数据库异常宕机后,需要在DMRMAN交互模式下执行repair archivelog修复动作确保buffer中的联机日志刷新到本地的REDO日志中,否则后面使用备份恢复的时可能因为归档日志不完整导致恢复失败或者修复后缺少部分数据。

RMAN> repair archive log database '/data/dmdbms/data/DAMENG/dm.ini';

 

参考:https://eco.dameng.com/document/dm/zh-cn/ops/physical-backup-restore.html