DM8数据库备份还原的原理及应用

▷▶介质管理层(MML)

DM8根据自身实现自定义了一套API接口SBT来负责备份数据在存储介质上的实际读写操作。

整个存储介质上的读写操作,由MML调用SBT完成。

目前 DM8 备份还原支持磁盘(DISK)和磁带(TAPE)两种存储介质。

磁盘介质SBT接口实现为dmsbt( WINDOWS 上为 dmsbt.dll,非 WINDOWS 上为 dmsbt.so)

磁带介质实现为dmsbtex(WINDOWS上命名为dmsbtex.dll, Linux上命名为dmsbtex.so)

其他第三方磁带存储实现,仅需将库文件名命名为 dmsbtex.dll(WINDOWS)或dmsbtex.so(非 WINDOWS),并替换掉DM8的相应dmsbtex库文件即可。

2.4、 应用场景分析

2.4.1 选择备份、还原方式

▷▶库级

理论上无论出现哪种损坏都可以采用库级备份还原修复,建议物理损坏情况下使用;

逻辑损坏导致库数据丢失比较严重或者表空间已经被删除,也可采用库级备份还原;

要求还原的目标库脱机且正常退出。需借助DMRMAN工具完成。

▷▶表空间级

若逻辑损坏导致某个表空间中多个表数据丢失时,可以考虑采用表空间级备份还原。

DM8支持从库级备份中还原表空间。

▷▶归档

归档还原仅能恢复归档文件。

很多时候可以利用归档文件修复数据,若条件允许,最好保留尽量多的归档文件。

▷▶表级

因逻辑损坏导致个别表数据丢失, 可以采用表级备份还原。建议对数据库中频繁操作的重要表进行表级备份。

将指定表数据从一个表迁移到另外一个表中,也可使用表级备份还原。

表级备份还原过程中,其他表可以正常工作。

▷▶完全,还是增量

当库或表空间的基础数据量很大而数据修改操作不太频繁时,强烈建议使用增量备份(前提是至少有一个完全备份)

建议当进行一定次数的增量备份后,应重新做一个完全备份。

2.4.2 选择恢复方式

▷▶表空间还原后的恢复操作由DM8自动执行;表还原后已经是一致性状态,不需要进行恢复操作。

▷▶提供三种库级恢复方式:

若还原时指定备份集为脱机库备份集(LEVEL=1)或者联机库备份集(LEVEL=0), 但过程中无日志(START_LSN = END_LSN+1),且仅需将库恢复到备份时状态,建议选择更新DB_MAGIC恢复方式;

若还原时指定的备份集为联机备份集(LEVEL=0)且备份了日志(备份时不指定 WITHOUT LOG 参数),且仅需要库恢复到备份时状态,可以选择从备份集恢复;

除以上情况外,均可以采用从本地归档恢复。可指定想要恢复到的 LSN(大于备份结束END_LSN)和时间点(大于备份时间BACKUP_TIME)。不指定则恢复到最新状态。

二、应用

1、DM8的备份还原方法

Disql 工具:联机数据备份与还原,包括库备份、表空间备份与还原、表备份与还原;

DMRMAN 工具:脱机数据库备份还原与恢复;

客户端工具 MANAGER和CONSOLE:对应命令行工具DIsql和DMRMAN的功能,分别用于联机和脱机备份还原数据。

1.1 冷备

不需要开启归档,针对整库做备份需要开启dmap服务,需要关闭数据库实例

1.1.1 console工具备份

[dmdba@localhostbin]$./DmServiceDMSERVER stop
[dmdba@localhostbin]$./DmAPService status
DmAPService(pid13623) is running.

1.1.2 用dmrman工作备份,只支持冷备

cd /dm8/bin/
./dmrman
RMAN>backup database '/dm8/data/DAMENG/dm.ini' backupset '/dm8/backup'

1.2 热备

需要开启归档,数据库需要联机
可以备份数据库、表空间、表、归档日志文件
查看数据库归档模式:
SQL>select name,arch_mode from v$database;

1.2.1 归档配置

1、使用SQL 进行归档配置

首先使用disql登陆进数据库

进入\dmdbms\bin目录,输入如下命令:

./disql SYSDBA/SYSDBA@localhost:5236 —-第一个SYSDBA指角色,第二个指密码

1)修改数据库为mount状态,SQL如下:

alter database mount;

DM8数据库备份还原的原理及应用

2)配置本地文档

alter database add archivelog 'dest=/home/dmdba/dm_arch,type=local,file_size=1024,space_limit=2048';

3)开启归档模式

alter database archivelog;

4)修改数据库为open状态

alter database open;

也可手动配置归档文件

转到/home/dmdba/dmdbms/data/DAMENG路径下,编辑dmarch.ini文件,之后保存到该目录,dmarch.ini内容如下

[ARCHIVE_LOCAL1]
        ARCH_TYPE            = LOCAL
        ARCH_DEST            = /home/dmdba/dm_arch/arch
        ARCH_FILE_SIZE       = 1024
        ARCH_SPACE_LIMIT     = 2048

编辑 dm.ini 文件,设置arch_ini=1,保存

启动数据库服务。

1.2.2 联机执行SQL语句进行备份还原

最简单的数据库备份语句:

backup database backupset 'db_bak_01';

指定备份集路径、设置备份名、指定介质类型、添加备份描述、限制备份片大小、备份压缩、并行备份:

backup database to weekly_full_bak backupset '/home/dmdba/dm_bak/db_bak_3_02' device type tape backupinfo '完全备份' maxpiecesize 300 compressed level 5 parallel 8;

注:指定的备份名、加密密码、加密算法名长度限制为128字节;

MOUNT模式下不允许数据库备份。

完全备份语句:

full参数可以省略,默认为完全备份

backup database full backupset '/home/dmdba/dm_bak/db_full_bak_01';

完全备份中,可指定DDL_CLONE(数据库克隆)参数,只备份定义不备份数据。该参数只用于数据库级完全备份中。

增量备份语句:

backup database increment with backupdir '/home/dmdba/dm_bak/' backupset '/home/dmdba/dm_bak/db_increment_bak_02';

表空间备份:

表空间备份只能联机,还原只能脱机

表备份:

backup table "TEST"."TEST_EMP" to "TAB_TEST_TEST_EMP_2020_09_23_15_43_53" backupset 'TAB_TEST_TEST_EMP_2020_09_23_15_43_53';

归档备份:

backup archivelog all to "ARCH_2020_09_23_15_53_34" backupset '/dm8/backup/ARCH_2020_09_23_15_53_34';

1.3 物理还原

检查备份集是否有效

RMAN>check backupset '/dm8/backup';

整库还原:

dmrman还原:

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

数据库恢复:

RMAN>recover database '/dm8/data/DAMENG/dm.ini' with archivedir'/dm8/arch';

更新数据库魔数

RMAN>recover database '/dm8/data/DAMENG/dm.ini' update db_magic;

表空间还原:

RMAN>restore database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/backup' tablespace DMHR;

表空间恢复:

RMAN>recover database '/dm8/data/DAMENG/dm.ini' tablespace dmhr;

Original: https://www.cnblogs.com/Songhn9/p/13793675.html
Author: 她脚踝银铃响了
Title: DM8数据库备份还原的原理及应用

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/598997/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Linux日志管理

    日志管理 日志文件 日志文件是重要的系统信息文件,其中记录了许多重要的系统事件,包括用户的登录信息、系统的启动信息、系统的安全信息、邮件相关信息、各种服务相关信息等。日志对于安全来…

    数据库 2023年6月16日
    085
  • MySQL备份迁移之mydumper

    简介 mydumper 是一款开源的 MySQL 逻辑备份工具,主要由 C 语言编写。与 MySQL 自带的 mysqldump 类似,但是 mydumper 更快更高效。mydu…

    数据库 2023年5月24日
    0119
  • eclipse安装反编译插件

    一、下载插件 1、官方地址:http://jd.benow.ca/ 2、百度网盘:http://pan.baidu.com/s/1eSJ7Tiq 密码:sr6p 二、打开eclip…

    数据库 2023年6月9日
    0102
  • synchronized 是可重入锁吗?为什么?

    什么是可重入锁? 若一个程序或子程序可以”在任意时刻被中断然后操作系统调度执行另外一段代码,这段代码又调用了该子程序不会出错”,则称其为可重入(reentr…

    数据库 2023年6月16日
    092
  • CentOS 7 RabbitMQ 单机部署

    RabbitMQ版本:3.8.5 安装Erlang RabbitMQ的集群基于Erlang的分布式特性实现,所以需要先安装Erlang。 下载yum源配置脚本: curl -#LO…

    数据库 2023年6月9日
    093
  • Qingcloud_MySQL Plus(Xenon) 高可用搭建实验

    实验:Xenon on 5.7.30 Xenon (MySQL Plus) 是青云Qingcloud的一个开源项目,号称金融级别强一致性的高可用解决方案,项目地址为 https:/…

    数据库 2023年6月16日
    0119
  • 在浏览器中Django项目的静态文件打不开的一个原因

    2022-09-27 问题描述: 编写Django代码时,设置了一个”static”文件夹,在里面放置了一张图片。在”setting&#8221…

    数据库 2023年6月14日
    0100
  • SQL的语法

    创建: create database [if not exists] 数据库名称 [default charset 字符集] [collate 排序规则]; (PS:方括号(&#…

    数据库 2023年5月24日
    060
  • 第15章 存储过程与函数

    MySQL从5.0版本开始支持存储过程和函数。存储过程和函数能够将复杂的SQL逻辑封装在一起,应用程序无须关注存储过程和函数内部复杂的SQL逻辑,而只需要简单地调用存储过程和函数即…

    数据库 2023年6月6日
    092
  • pg数据库匹配正则

    select ‘41142619960609331x’ ~ ‘^[1-9]\d{5}\d{4}((0[1-9])|(10|11|12))(([0…

    数据库 2023年6月16日
    088
  • 事物的隔离性和MVCC

    事物的隔离性 mysql的服务端是支持多个客户端同时与之连接的,每个客户端可能还并发了好几个连接,所以mysql是需要同时处理很多事情的,每一件独立的事情就叫做事务。我们知道事务有…

    数据库 2023年5月24日
    090
  • tomcat

    tomcat 一.简介 二.部署tomcat 一.简介 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场…

    数据库 2023年6月14日
    087
  • 使用postman Mock后端响应

    使用postman Mock后端响应 接口文档开发与评审后,前后端各自依照标准进行开发,此时前端人员有以下选择: 使用工具自己mock构造后端数据验证已开发页面 在项目中自己编写添…

    数据库 2023年6月6日
    0100
  • 为了防止这个公众号被封,我连夜用Python爬取了它所有图片~

    哈喽兄弟们,今天来试试批量获取公众号文章,emmm… 虽然名义上是文章,单其实它是一篇纯图片文,至于为什么不是文字,小姐姐不比文字香? ; 事前准备 我们需要用到 Fi…

    数据库 2023年6月14日
    096
  • centos8安装mysql

    前言 最近在centos8系统下部署django项目时,要用到mysql数据库,在安装中遇到了点坑,之后参考了一位博主的文章,也是顺利的安装配置成功,博主原文连接: ((20条消息…

    数据库 2023年5月24日
    085
  • requests模块的使用

    安装:pip install requests get请求 1、发送 get 请求 import requests header = { ‘referer’: ‘https://w…

    数据库 2023年6月9日
    096
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球