达梦数据库备份策略

news2024/10/6 12:30:41

文章目录

  • 一、达梦数据库备份策略
    • 1.1 开启归档模式
      • 1.1.1 联机配置本地归档
      • 1.1.2 脱机配置本地归档
    • 1.2 启动DMAP服务
      • 1.2.1 启动DMAP
    • 1.3 物理备份
      • 1.3.1 联机备份
        • (1) 数据库备份
        • (2) 表空间备份
        • (3) 表备份
        • (4) 备份归档
      • 1.3.2 脱机备份
        • (1) 启动DMRMAN
        • (2) 备份数据库
    • 1.4 物理备份还原
      • 1.4.1 联机还原
      • 1.4.2 脱机还原
        • (1) 关闭数据库服务
        • (2) 启动 DMRMAN
        • (3) 脱机校验备份
        • (4) 还原数据库
        • (5) 恢复数据库
        • (6) 恢复 db_magic
      • 1.4.3 系统备份路径
    • 1.5 dexp 逻辑备份
      • 1.5.1 dexp 工具
        • 1) FULL
        • 2) OWNER
        • 3) SCHEMAS
        • 4) TABLES
    • 1.6 逻辑备份还原
      • 1.6.1 dimp 工具
        • 1) FULL
        • 2) OWNER
        • 3) SCHEMAS
        • 4) TABLES

让我们进入今天的学习吧!
💪Keep  trying💪

在这里插入图片描述

一、达梦数据库备份策略

达梦数据库的备份分为物理备份和逻辑备份,物理备份又分为联机备份(继续生产,不停服务)和脱机备份,需要注意的是,物理备份必须要开启归档模式。

1.1 开启归档模式

1.1.1 联机配置本地归档

修改数据库为 mount 状态

ALTER DATABASE MOUNT;

配置本地归档

ALTER DATABASE ADD ARCHIVELOG 'TYPE = local, DEST = /dm/data/DMDB/bak/dm_arch/arch, FILE_SIZE = 1024, SPACE_LIMIT = 10240';
# 参数依次为:
# 本地归档,本地redo日志路径,单个redo日志大小(M),redo日志最大所占空间(超过后删除以前的)

开启归档模式

ALTER DATABASE ARCHIVELOG;

修改数据库为 open 状态

ALTER DATABASE OPEN;

1.1.2 脱机配置本地归档

关闭数据库

systemctl stop DmServiceDMSERVER.service

在 dm.ini 文件所在的路径创建 dmarch.ini 文件,内容如下

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm/data/DMDB/bak/dm_arch/arch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 10240

# 注意此文件的归属关系为 dmdba:dinstall, 如果不是请手动更改

编辑 dm.ini 文件,设置参数 ARCH_INI=1

启动数据库实例,此时数据库已经处于归档模式

systemctl start DmServiceDMSERVER.service

1.2 启动DMAP服务

备份集备份还原实现策略有两种:DMAP 辅助进程方式和无辅助进程方式。用户可通过 dm.ini 文件的参数 BAK_USE_AP 来选择(DMRMAN 使用参数 USE_AP),BAK_USE_AP 取值 1、2。默认为 1。DMAP 辅助进程方式 大幅提升了备份还原的效率,特别是加密、压缩的处理效率。

1.2.1 启动DMAP

systemctl start DmAPService.service
ss -ntulp | grep -i dmap  # 查看验证
# 验证是否使用的ap方式备份
select * from SYS."V$PARAMETER" t where t.name ='BAK_USE_AP';

1.3 物理备份

1.3.1 联机备份

备份数据库之前,为避免出现错误,将整个存放数据的目录全部改一下归属

chown -R dmdba:dinstall /dm

(1) 数据库备份

备份全库

BACKUP DATABASE FULL TO db_full_bak BACKUPSET '/dm/data/DMDB/bak/db_full_bak_01/db_full_bak';
# TO db_full_bak 可以用 TO 指定备份集的文件的名字,如果不指定,则备份集文件的名字和它所在的目录同名
# 下面的所有例子我都不指定 TO

增量备份

# 基于 /dm/data/DMDB/bak/db_full_bak_01/db_full_bak 全量备份的增量备份
BACKUP DATABASE INCREMENT WITH BACKUPDIR '/dm/data/DMDB/bak/db_full_bak_01/db_full_bak' BACKUPSET '/dm/data/DMDB/bak/db_full_bak_01/db_increment_bak_01';

特别注意:增量备份的目录一定要和全量备份放在同一个目录下,否则在增量恢复的时候会报错。如果没有放在一个目录,那么在增量恢复时,就必须利用 WITH BACKUPDIR 指定基备份集目录所在的上级目录,比如基备份的路劲为:/a/b/full_bak/备份.bak,那么需要指定的基备份目录就是 WITH BACKUPDIR /a/b/

如下目录结构所示

tree db_full_bak_01
db_full_bak_01                   # 全量备份上级目录
├── db_full_bak                  # 此次全量备份的文件所在目录
│   ├── db_full_bak_1.bak        
│   ├── db_full_bak.bak
│   └── db_full_bak.meta
├── db_increment_bak_01          # 基于此次全量备份的第一次增备
│   ├── db_increment_bak_01_1.bak
│   ├── db_increment_bak_01.bak
│   └── db_increment_bak_01.meta
├── db_increment_bak_02          # 第二次增备
│   ├── db_increment_bak_02_1.bak
│   ├── db_increment_bak_02.bak
│   └── db_increment_bak_02.meta
└── db_increment_bak_03          # 第三次增备
    ├── db_increment_bak_03_1.bak
    ├── db_increment_bak_03.bak
    └── db_increment_bak_03.meta
# 恢复时只需要恢复第三次增量备份即可,系统会自动寻找所有的增备和全备,就可以全部恢复

(2) 表空间备份

系统处于归档模式下时,才允许进行表空间备份;Mount 状态下,不允许进行表空间备份

完全备份单个表空间

注意:表空间备份只能在本服务器进行还原

BACKUP TABLESPACE MAIN FULL BACKUPSET '/home/dm_bak/ts_full_bak_01';

增量备份表空间
以备份 MAIN 表空间为例

BACKUP TABLESPACE MAIN INCREMENT WITH BACKUPDIR '/home/dm_bak' BACKUPSET '/home/dm_bak/ts_increment_bak_02';
# WITH BACKUPDIR:基备份集搜索目录

(3) 表备份

表备份均为联机完全备份,不需要配置归档日志,没有增量备份
以备份 TAB_01 为例

BACKUP TABLE TAB_01 BACKUPSET '/home/dm_bak/tab_bak_01';

(4) 备份归档

BACKUP ARCHIVE LOG ALL to ARCHBAK BACKUPSET '/dm8/backup/full/ARCHBAK';
# 对于归档的备份,只需要执行还原操作即可,不需要恢复和更新数据库魔数

1.3.2 脱机备份

(1) 启动DMRMAN

DMRMAN (DM RECOVERY MANEGER) 是 DM 的脱机备份还原管理工具,由它来统一负责库级脱机备份、脱机还原、脱机恢复等相关操作

启动 DMRMAN
进入数据库安装目录的 bin 目录下面

./dmrman

退出 DMRMAN

exit

(2) 备份数据库

全库备份

在 DMRMAN 下执行以下命令

BACKUP  DATABASE  '/opt/dmdbms/data/DAMENG/dm.ini'  FULL BACKUPSET '/home/dm_bak/db_full_bak_01';

增量备份

增量备份时,期间必须有所改变,否则报错

BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' INCREMENT WITH BACKUPDIR '/home/dm_bak' BACKUPSET '/home/dm_bak/db_increment_bak_02';

1.4 物理备份还原

1.4.1 联机还原

DM 仅仅支持表的联机还原,数据库、表空间和归档日志的还原必须通过脱机工具 DMRMAN 执行。执行表还原,数据库必须处于 OPEN 状态,MOUNT 和 SUSPEND 状态下不允许执行表还原。表还原不需要配置归档,因为表还原是联机完全备份还原,所以不需要借助本地归档日志进行恢复。

假设备份的表的数据目录是:/home/dm_bak/tab_bak_for_res_01

还原表结构

RESTORE TABLE STRUCT FROM BACKUPSET '/home/dm_bak/tab_bak_for_res_01';

还原表数据

RESTORE TABLE  FROM BACKUPSET '/home/dm_bak/tab_bak_for_res_01';

1.4.2 脱机还原

应使用与 DM 的数据库版本配套的 DMRMAN 工具进行操作

对于库级的备份还原恢复需要在数据库关闭状态下

目标库的还原仅支持脱机还原,可通过 DMRMAN 和 CONSOLE 工具实现

严格按照下面六个步骤来

使用全量备份集恢复

(1) 关闭数据库服务

systemctl stop DmServiceDMSERVER.service

(2) 启动 DMRMAN

./dmrman
RMAN> 

(3) 脱机校验备份

RMAN> CHECK BACKUPSET '/dm/data/DMDB/bak/db_full_bak/db_full_bak_01';

(4) 还原数据库

如果是用全备文件,这里直接使用全备文件恢复即可

如果要做增量恢复,直接恢复最后一次增量备份即可,但要保证增备和全备在同一个目录下

# 全库级别还原
RMAN> RESTORE DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/backup/FULL_BACK/';

# 表空间级还原
RMAN> RESTORE DATABASE '/dm/data/DMDB/dm.ini' TABLESPACE WISENSE FROM BACKUPSET 'db_full_bak_01';

(5) 恢复数据库

可以用全库备份集恢复某个表空间,也可以用表空间备份集恢复表空间

# 全库级别恢复
## 指定归档恢复
RMAN> RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' WITH ARCHIVEDIR '/dm8/arch/';
# 这里的arch下面就是日志文件
## 指定备份集恢复
RMAN> RECOVER DATABASE '/dm/data/DMDB/dm.ini' FROM BACKUPSET '/dm/data/DMDB/bak/db_full_bak/db_full_bak_01';

# 表空间级恢复
# 表空间恢复自动使用归档恢复到最新状态
RMAN> RECOVER DATABASE '/dm8/data/DMDB/dm.ini' TABLESPACE WISENSE;

# 注意:WITH ARCHIVEDIR '/dm/date/DMDB/arch' 是根据归档恢复,可以恢复到最新,而指定备份集只能恢复到备份之前,一般生产不用这种方式

(6) 恢复 db_magic

# 只有全库级别的恢复才需要更新魔数,表空间级的不需要
RMAN> RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' UPDATE DB_MAGIC;

注意:库级备份集恢复一次后,就不能继续利用这个全量备份集继续做增量备份了,必须立刻重新做一个全量备份,再对新的全量备份做增量备份。如果是基于表空间的备份集,恢复一次后这个备份集就不能再在本机进行恢复了,因为更新了数据魔数

使用增量备份集恢复

如果增量备份集和所依赖的全量备份在同一个目录,那么还原与恢复的命令和上面全量备份集恢复的命令是一样的,但如果不在同一个目录,就需要用 WITH BACKUPDIR指定一下全量备份集目录所在的父目录。如下所示

# 全库级别增量备份还原
RMAN> RESTORE DATABASE '/dm/data/DMDB/dm.ini' FROM BACKUPSET '/dm/data/DMDB/bak/db_full_bak_01/db_increment_bak_01' WITH BACKUPDIR '/dm/data/DMDB/bak/db_full_bak_01';
# 全量备份集在 /dm/data/DMDB/bak/db_full_bak_01 下面,此目录是存放全量备份和对应增量备份的父目录

# 恢复
RMAN> RECOVER DATABASE '/dm/data/DMDB/dm.ini' FROM BACKUPSET '/dm/data/DMDB/bak/db_full_bak_01/db_increment_bak_01' WITH BACKUPDIR '/dm/data/DMDB/bak/db_full_bak_01';

# 恢复魔数
RMAN> RECOVER DATABASE '/dm/data/DMDB/dm.ini' UPDATE DB_MAGIC;

1.4.3 系统备份路径

默认情况下,系统只会查找默认路径下的备份集

# 查找默认路径
select * from SYS."V$PARAMETER" t where t.name ='BAK_PATH';
# 查找备份集
select * from SYS."V$BACKUPSET";
# 添加查找路径
SF_BAKSET_BACKUP_DIR_ADD('DISK','/dm8/backup/full/');

1.5 dexp 逻辑备份

1.5.1 dexp 工具

dexp 工具可以对本地或者远程数据库进行数据库级、用户级、模式级和表级的逻辑备份。备份的内容非常灵活,可以选择是否备份索引、数据行和权限,是否忽略各种约束(外键约束、非空约束、唯一约束等),在备份前还可以选择生成日志文件,记录备份的过程以供查看。

总共有四种导出数据级别

注意:下面的存储目录必须提前创建,命令时不会创建目录的

1) FULL

FULL 方式导出数据库的所有对象

导出的数据文件 db_str.dmp 和 日志文件 db_str.log 存放在 目录 /dm/dexp 下

./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log FULL=Y DIRECTORY=/dm/dexp

2) OWNER

OWNER 方式导出一个或多个用户拥有的所有对象

例如,设置 OWNER=USER01,导出用户 USER01 所拥有的对象全部导出

./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log OWNER=USER01 DIRECTORY=/dm/dexp

3) SCHEMAS

SCHEMAS 方式的导出一个或多个模式下的所有对象

例如,设置 SCHEMAS=USER01,导出模式 USER01 模式下的所有对象

./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log SCHEMAS=USER01 DIRECTORY=/dm/dexp

4) TABLES

TABLES 方式导出和导入一个或多个指定的表或表分区。导出所有数据行、约束、索引等信息

例如,设置 TABLES=table1,table2,导出 table1,table2 两张表的所有数据和信息

./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log TABLES=table1,table2 DIRECTORY=/dm/dexp

1.6 逻辑备份还原

1.6.1 dimp 工具

dimp 逻辑导入工具利用 dexp 工具生成的备份文件对本地或远程的数据库进行联机逻辑还原。dimp 导入是 dexp
导出的相反过程。还原的方式可以灵活选择,如是否忽略对象存在而导致的创建错误、是否导入约束、是否导入索引、导入时是否需要编译、是否生成日志等

总共有四种导入级别

1) FULL

FULL 方式导入整个数据库

例如,设置 FULL=Y,导入整个数据库,导入的数据库文件在 /dm/dexp下面,即将生成的日志文件放在 /dm/dimp

./dimp USERID=SYSDBA/SYSDBA FILE=/dm/dexp/db_str.dmp LOG=db_str.log FULL=Y DIRECTORY=/dm/dimp

2) OWNER

OWNER 方式导入一个或多个用户拥有的所有对象

例如,设置 OWNER=USER01,导入用户 USER01 所拥有的对象全部导出。导入的数据库文件在 /dm/dexp,即将生成的日志文件放在 /dm/dimp

./dimp USERID=SYSDBA/SYSDBA FILE=/dm/dexp/db_str.dmp LOG=db_str.log OWNER=USER01 DIRECTORY=/dm/dimp

3) SCHEMAS

SCHEMAS 方式的导入一个或多个模式下的所有对象。

例如,设置 SCHEMAS=USER01,导入模式 USER01 模式下的所有对象。导入的数据库文件在 /dm/dexp,即将生成的日志文件放在 /dm/dimp

./dimp USERID=SYSDBA/SYSDBA FILE=/dm/dexp/db_str.dmp LOG=db_str.log SCHEMAS=USER01 DIRECTORY=/dm/dimp

4) TABLES

TABLES 方式导入一个或多个指定的表或表分区。导入所有数据行、约束、索引等信息。

例如,设置 TABLES=table1,table2,导入 table1,table2 两张表的所有数据和信息。导入的数据库文件在 /dm/dexp,即将生成的日志文件放在 /dm/dimp

./dimp USERID=SYSDBA/SYSDBA FILE=/dm/dexp/db_str.dmp LOG=db_str.log TABLES=table1,table2 DIRECTORY=/dm/dimp

         👆回到顶部👆

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/52343.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】命令

常用命令 帮助&#xff08;Manual Pages&#xff0c;Manual&#xff1a;手册&#xff0c;特指参考文件&#xff09; man man <command_name> 打开目录&#xff08;change directory&#xff09; cd /etc/ cd /home 查看当前所在目录 pwd 创建一个名为 file 的文件&…

pip 安装 livetest 失败

pip 安装 livetest 失败1. 现象2. 解决方案(1) 下载(2) 移动并解压(3) 修改文件1) livetest-0.5/livetest/__init__.py2) livetest-0.5/setup.py3) livetest-0.5/test/test_select.py(4) 运行安装4. 验证1. 现象 pip 安装 livetest 失败 2. 解决方案 (1) 下载 官网下载 liv…

美国硅基和宽禁带半导体供应链竞争力剖析

&#x1f446;扫描上方二维码&#xff0c;报名参与研讨会直播&#xff0c;福利多多~ 前言 本文概述了半导体供应链&#xff0c;包括传统半导体&#xff08;即硅基&#xff09;和 宽禁带&#xff08;WBG&#xff0c;Wide Bandgap&#xff09; 半导体&#xff0c;并深入探讨了宽禁…

[附源码]JAVA毕业设计高校医务管理系统(系统+LW)

[附源码]JAVA毕业设计高校医务管理系统&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术…

[附源码]Python计算机毕业设计Django动物保护协会网站

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

[激光原理与应用-26]:《激光原理与技术》-12- 激光产生技术-短脉冲、超短脉冲、调Q技术、锁模技术

目录 第1章 什么是激光脉冲 1.1 什么是激光脉冲&#xff08;时间能量维度&#xff09; 1.2 激光脉冲的好处 1.3 巨脉冲激光&#xff08;能量维度&#xff09; 1.4 什么是激光短脉冲与超短脉冲激光&#xff08;时间维度&#xff09; 1.5 长脉冲宽度缺点与短脉冲的优点 1.…

小白学流程引擎-FLowable(三) —流程设计器Flowable UI

一、如何绘制BPMN文件 上文讲到了通过流程定义BPMN文件即可让流程流转起来&#xff0c;并执行来几个核心的功能测试。但是那个看起来复杂的BPMN.xml文件的内容手敲起来有点困难&#xff0c;那么实际真实的场景是什么&#xff0c;或者是怎么完成流程图BPMN文件的绘制呢&#xf…

开源笔记leanote搭建记录

一、leanote 版本二进制编译好的文件&#xff0c;github下载 leanote-linux-386-v2.6.1.bin.tar.gz 二、mongodb docker 部署 版本 4.4 备注&#xff1a;刚开始用5.0.14 版本&#xff0c;启动程序&#xff0c;数据库验证报错 后有用3.0版本&#xff0c;导入初始化数据失败&…

企业网站的建设有哪些事项需要注意呢?

企业网站建设的意义&#xff0c;不仅在于提高了企业的知名度&#xff0c;更重要的是让外界了解企业的产品、服务。随着互联网技术的不断发展&#xff0c;互联网逐渐成为中国最具活力、变化最快的行业。对于网站建设公司来说&#xff0c;这也是一个巨大的市场空间&#xff0c;但…

新买的笔记本电脑分区,笔记本分区分错了怎么重新分

用户新购买的一部笔记本电脑&#xff0c;打开电脑一看就傻眼了&#xff0c;电脑中只有一个内存为1.8T的C盘&#xff0c;像是D盘、E盘、F盘都不知道在哪里&#xff0c;他赶紧咨询旗舰店的客服&#xff0c;客服告知他&#xff1a;“需要对磁盘分区后&#xff0c;才能有D盘、E盘和…

ROS SMACH个人学习记录

ROS SMACH学习个人记录SMACH关于抢占一些TipsSMACH缺点个人的结论本文仅为个人学习记录&#xff0c;结论正确性待考究。欢迎大家讨论SMACH 关于抢占 抢占需要在并发容器里面实现&#xff0c;并发容器里面包含多个状态&#xff0c;我们分成两类&#xff1a;抢占状态与被抢占状…

APK 是怎么来的?- Android 构建流程解析

一、 APK 组成解析 在开始解析 Android 构建流程之前&#xff0c;我们先来看下构建的最终产物 APK 的整体组成 APK 主要由五个部分组成&#xff0c;分别是&#xff1a; Dex&#xff1a;.class 文件处理后的产物&#xff0c;Android 系统的可执行文件 Resource&#xff1a;资源…

Android S(31) APP 页面绘制流程

接上一篇app 启动流程调用OnCreate方法&#xff0c;页面布局绘制进入setContentView 1、加载布局setContentView() 这里getWindow()直接返回mWindow&#xff0c;这个早在onCreate 调用前Activity#attach里面完成初始化。 进入attach方法&#xff0c;构建一个窗体对象PhoneWind…

[附源码]SSM计算机毕业设计疫情防控下高校教职工健康信息管理系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Docker Cgroups资源控制

目录 一、cgroups简介 cgroups有四大功能&#xff1a; 二、cpu时间片的概念 三、对CPU使用的限制 1 设置CPU使用率上限 &#xff08;1&#xff09;查看容器的默认CPU使用限制 2 设置CPU资源占用比&#xff08;设置多个容器时才有效&#xff09; 1&#xff09;创建两个容器…

回归商业初心,宝尊电商“深耕广拓”缔造品牌电商有质增长

今年来&#xff0c;受疫情、通胀、能源等因素影响&#xff0c;全球市场都经历了不同程度的“震荡”。 寒气传递之间&#xff0c;电商行业开始摸索后疫情时代的前进之路。随着财报季来临&#xff0c;市场开始期待从各赛道标杆企业财报中看出行业走势。 11月29日&#xff0c;“…

python3基础语法

Python 常用文件扩展名为 .py&#xff0c;可以新建一个 hello.py 文件开始下面的学习&#xff0c;执行使用命令 python3 hello.py 一、标识符 第一个字母必须是 字母 或 下划线 _标识符的其他的部分由 字母、数字 和 下划线 组成标识符对 大小写敏感 二、保留字&#xff08…

[2022世界杯] 小白也可以看懂的世界杯

⚽文化世界杯 如果问你全球最火,影响力最大的体育赛事是什么&#xff1f;那么很多人会说 “奥运会”&#xff01;当然不完全对&#xff0c;如果从关注度来说 世界杯的影响力更大&#xff01; 世界杯与奥运会的不同在于&#xff1a;会员协会的数量&#xff0c;拥有209个会员协会…

【踩坑】double和BigDecimal的精度问题

【踩坑】double和bigdecimal的精度问题背景debug尝试测试代码结果总结背景 今天生产报了个问题&#xff0c;在申报和预算相同的金额的时候&#xff0c;后台返回超出预算。一开始以为是判断逻辑的问题&#xff0c;找了个数据试了下发现重现不出来。又是改数据又是找前端传参最后…