• 达梦数据库备份策略


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

    在这里插入图片描述

    一、达梦数据库备份策略

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

    1.1 开启归档模式

    1.1.1 联机配置本地归档

    修改数据库为 mount 状态

    ALTER DATABASE MOUNT;
    
    • 1

    配置本地归档

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

    开启归档模式

    ALTER DATABASE ARCHIVELOG;
    
    • 1

    修改数据库为 open 状态

    ALTER DATABASE OPEN;
    
    • 1

    1.1.2 脱机配置本地归档

    关闭数据库

    systemctl stop DmServiceDMSERVER.service
    
    • 1

    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, 如果不是请手动更改
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

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

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

    systemctl start DmServiceDMSERVER.service
    
    • 1

    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  # 查看验证
    
    • 1
    • 2
    # 验证是否使用的ap方式备份
    select * from SYS."V$PARAMETER" t where t.name ='BAK_USE_AP';
    
    • 1
    • 2

    1.3 物理备份

    1.3.1 联机备份

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

    chown -R dmdba:dinstall /dm
    
    • 1
    (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
    
    • 1
    • 2
    • 3

    增量备份

    # 基于 /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';
    
    • 1
    • 2

    特别注意:增量备份的目录一定要和全量备份放在同一个目录下,否则在增量恢复的时候会报错。如果没有放在一个目录,那么在增量恢复时,就必须利用 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
    # 恢复时只需要恢复第三次增量备份即可,系统会自动寻找所有的增备和全备,就可以全部恢复
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    (2) 表空间备份

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

    完全备份单个表空间

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

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

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

    BACKUP TABLESPACE MAIN INCREMENT WITH BACKUPDIR '/home/dm_bak' BACKUPSET '/home/dm_bak/ts_increment_bak_02';
    # WITH BACKUPDIR:基备份集搜索目录
    
    • 1
    • 2
    (3) 表备份

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

    BACKUP TABLE TAB_01 BACKUPSET '/home/dm_bak/tab_bak_01';
    
    • 1
    (4) 备份归档
    BACKUP ARCHIVE LOG ALL to ARCHBAK BACKUPSET '/dm8/backup/full/ARCHBAK';
    # 对于归档的备份,只需要执行还原操作即可,不需要恢复和更新数据库魔数
    
    • 1
    • 2

    1.3.2 脱机备份

    (1) 启动DMRMAN

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

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

    ./dmrman
    
    • 1

    退出 DMRMAN

    exit
    
    • 1
    (2) 备份数据库

    全库备份

    在 DMRMAN 下执行以下命令

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

    增量备份

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

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

    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';
    
    • 1

    还原表数据

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

    1.4.2 脱机还原

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

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

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

    严格按照下面六个步骤来

    使用全量备份集恢复

    (1) 关闭数据库服务
    systemctl stop DmServiceDMSERVER.service
    
    • 1
    (2) 启动 DMRMAN
    ./dmrman
    RMAN> 
    
    • 1
    • 2
    (3) 脱机校验备份
    RMAN> CHECK BACKUPSET '/dm/data/DMDB/bak/db_full_bak/db_full_bak_01';
    
    • 1
    (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';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    (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' 是根据归档恢复,可以恢复到最新,而指定备份集只能恢复到备份之前,一般生产不用这种方式
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    (6) 恢复 db_magic
    # 只有全库级别的恢复才需要更新魔数,表空间级的不需要
    RMAN> RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' UPDATE DB_MAGIC;
    
    • 1
    • 2

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

    使用增量备份集恢复

    如果增量备份集和所依赖的全量备份在同一个目录,那么还原与恢复的命令和上面全量备份集恢复的命令是一样的,但如果不在同一个目录,就需要用 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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    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
    • 2
    • 3
    • 4
    • 5
    • 6

    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
    
    • 1
    2) OWNER

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

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

    ./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log OWNER=USER01 DIRECTORY=/dm/dexp
    
    • 1
    3) SCHEMAS

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

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

    ./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log SCHEMAS=USER01 DIRECTORY=/dm/dexp
    
    • 1
    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

    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
    
    • 1
    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
    
    • 1
    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
    
    • 1
    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
    
    • 1

             👆回到顶部👆

    在这里插入图片描述

  • 相关阅读:
    一文了解模型量化中的QAT和PTQ
    在Windows部署项目出现问题记录
    如何读懂火焰图?+ 实例讲解程序性能优化
    MYSQL8-sql语句使用集合。MYCAT-sql语法使用集合
    定位OOM(Out of Memory)
    Centos系统上nginx安装
    Linux CentOS系统安装mysql8.0.31(tar方式)
    管理者到底该管什么?就这5件事,其他别管!
    世界传感器大会:汉威科技新品震撼全场!
    数仓工具—Hive进阶之Statistics与Analyze Table命令(20)
  • 原文地址:https://blog.csdn.net/qq_41890240/article/details/128133817