达梦数据库物理备份还原

1、概念

物理备份是找出那些已经分配,使用的数据页,拷贝并保存到备份集中。物理还原时物理备份的逆过程,一般通过DMRMAN工具或者SQL语句,把备份集中的数据内容(数据文件,数据页,归档文件)重新拷贝,写入目标文件。

联机备份还原:数据库处于运行状态时,提供备份还原操作。

脱机备份还原:数据库处于关闭状态时执行的还原操作。库备份、表空间备份和归档备份可以执行脱机还原。脱机还原操作的目标库必须处于关闭状态。

备份集:用来存放备份过程中产生的备份数据及备份信息。

2、配置归档

2.1联机配置归档

修改数据库为 Mount 状态

ALTER  DATABASE  MOUNT;

开启归档模式

ALTER  DATABASE  ARCHIVELOG;

配置本地归档

ALTER DATABASE ADD ARCHIVELOG 'DEST = /home/dm_arch/arch, TYPE = local,FILE_SIZE = 1024, SPACE_LIMIT = 2048';

修改数据库为 Open 状态

ALTER  DATABASE  OPEN;

2.2手动配置归档

关闭数据库,修改dm.ini

ARCH_INI=1

创建dmarch.ini

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = /home/dm_arch/arch

ARCH_FILE_SIZE = 1024

ARCH_SPACE_LIMIT = 2048

注意:联机备份是,关闭已配置的本地归档再打开,会造成归档文件部分文件丢失,备份前需调用[checkpoint(100)]命令主动刷新检查点

3、联机备份还原

3.1数据备份

3.1.1手动备份

1、数据库备份

进入disql命令行

全备:BACKUP  DATABASE  FULL  BACKUPSET '/opt/dmdbms/BAK/db_full_bak_01';

备份集:/opt/dmdbms/BAK/db_full_bak_01

设置备份名:BACKUP DATABASE TO WEEKLY_FULL_BAK BACKUPSET '/home/dm_bak/db_bak_3_02';

添加备份描述:BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_3_04' BACKUPINFO  '完全备份';

限制备份大小(最大300M):BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_3_05' MAXPIECESIZE 300;

备份压缩(级别为5,0-9):BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_3_06' COMPRESSED LEVEL 5;

设置并行备份:BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_3_07' PARALLEL 8;

2、表空间备份

BACKUP TABLESPACE MAIN BACKUPSET 'ts_bak_01';

增量备份指定基备份路径:

以增量备份用户 MAIN 表空间为例,指定 BASE ON BACKUPSET 参数执行增量备份

BACKUP TABLESPACE MAIN BACKUPSET 'ts_full_bak_01';

BACKUP TABLESPACE MAIN INCREMENT BACKUPSET 'ts_increment_bak_01';

BACKUP TABLESPACE MAIN INCREMENT BASE ON BACKUPSET'ts_full_bak_01' BACKUPSET  'ts_increment_bak_02';

完全备份:BACKUP TABLESPACE MAIN FULL BACKUPSET '/home/dm_bak/ts_full_bak_01';

增量备份:BACKUP TABLESPACE MAIN INCREMENT WITH BACKUPDIR '/home/dm_bak' BACKUPSET  '/home/dm_bak/ts_increment_bak_02';

3、表备份

备份表不需要服务器配置归档

BACKUP TABLE TAB_01 BACKUPSET 'tab_bak_01';

##备份集“tab_bak_01”会生成到默认的备份路径下

4、归档备份

必须配置归档

BACKUP ARCHIVE LOG ALL BACKUPSET 'arch_bak_01';

3.1.2定时备份

代理-作业-新建作业

3.2管理备份

3.2.1备份目录管理

添加备份目录:SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK','/home/dm_bak');

删除备份目录:SELECT SF_BAKSET_BACKUP_DIR_REMOVE('DISK','/home/dm_bak');

清除全部备份目录:SELECT SF_BAKSET_BACKUP_DIR_REMOVE_ALL();

3.2.2备份集校验与删除

备份集校验:SELECT  SF_BAKSET_CHECK ('DISK','/home/dm_bak/db_bak_for_check');

备份集删除:

--删除指定设备类型和指定备份集目录地备份集

SF_BAKSET_REMOVE

--批量删除满足指定条件的所有备份集

SF_BAKSET_REMOVE_BATCH

--批量删除指定时间之前的数据库备份集

SP_DB_BAKSET_REMOVE_BATCH

--批量删除指定表空间对象及指定时间之前的表空间备份集

SP_TS_BAKSET_REMOVE_BATCH

--批量删除指定表对象及指定时间之前的表备份集。

SP_TAB_BAKSET_REMOVE_BATCH

--批量删除指定时间之前的归档备份集。

SP_ARCH_BAKSET_REMOVE_BATCH

3.3数据还原

表还原:RESTORE TABLE TAB_01 FROM BACKUPSET 'tab_bak_01';

数据库与表空间还原必须通过脱机还原

3.4.管理工具进行联机备份还原

4、脱机备份与还原

DMRMAA:脱机备份还原命令行工具,退出:exit

以下操作需要脱机状态,进入命令行操作:./dmrman

4.1数据备份

数据库完全备份: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';

归档备份:

要求先设置归档

BACKUP ARCHIVE LOG ALL DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' BACKUPSET  '/home/dm_bak/arch_all_bak_01';

4.2备份管理

查看单个备份集信息(SHOW)

RMAN> show backupset '/home/test/yy/dm_bak/db_full_bak_01'

查看多个备份集信息

RMAN>SHOW BACKUPSETS WITH BACKUPDIR '/home/dm_bak1','/home/dm_bak2';

备份集校验(CHECK):CHECK BACKUPSET '/home/dmbak/dbbakforcheck01';

备份集删除(REMOVE):REMOVE BACKUPSET '/home/dm_bak/db_bak_for_remove_01'

备份集导出(LOAD):

[root@192 debug]#export TAPE=/dev/nst0

[root@192 debug]#echo $TAPE  /dev/nst0

启动 dmrman,再次执行

[root@192 debug]# ./dmrman

RMAN>LOAD BACKUPSETS FROM DEVICE TYPE TAPE TO BACKUPDIR '/mnt/hgfs/dmsrc/bak_dir';

备份集映射文件导出(DUMP):

导出备份集中数据文件的原始路径

RMAN>DUMP  BACKUPSET'/mnt/dmsrc/db_bak'DEVICE TYPE DISK MAPPED FILE  '/mnt/dmsrc/db_bak_mapped.txt';

指定 ini_path,导出调整后的数据文件路径到映射文件:

RMAN>DUMP  BACKUPSET'/mnt/dmsrc/db_bak'DEVICE TYPE DISK DATABASE  '/opt/dmdbms/data/DAMENG/dm.ini'

MAPPED  FILE '/mnt/dmsrc/db_bak_mapped.txt';

4.3数据还原恢复

4.3.1数据库还原和恢复

1、数据还原(RESTORE)

联机备份数据库,保证数据库运行在归档模式及 OPEN 状态;

SQL>BACKUP DATABASE BACKUPSET '/home/dm_bak/db_full_bak_for_restore';

##准备目标库。还原目标库可以是已经存在的数据库,也可使用 dminit 工具初始化一个新库。如下所示:

./dminit path=/opt/dmdbms/data db_name=DAMENG_FOR_RESTORE SYSDBA_PWD=****** SYSAUDITOR_PWD=******

校验备份,校验待还原备份集的合法性。校验备份有两种方式,联机和脱机,此处使用脱机校验;

RMAN>CHECK BACKUPSET '/home/dm_bak/db_full_bak_for_restore';

还原数据库。启动 DMRMAN,输入以下命令:

RMAN>RESTORE DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM

BACKUPSET '/home/dm_bak/db_full_bak_for_restore';

2、数据库恢复(RECOVER)

从备份集恢复:

执行还原数据库的命令之后,可以直接执行恢复数据库的命令,如下:

RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM  BACKUPSET '/home/dm_bak/db_full_bak_for_recover_backupset';

从归档恢复:

通过使用 WITH ARCHIVEDIR 关键字进行归档恢复,如下:

RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' WITH ARCHIVEDIR'/home/dm_arch/arch'

3、数据库更新

RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' UPDATE DB_MAGIC;

4.3.2表空间还原和恢复

1、表空间还原

RMAN>RESTORE DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' TABLESPACE  MAIN FROM BACKUPSET '/home/dm_bak/ts_full_bak_for_restore';

注意:表空间还原的目标库只能是备份集产生的源库,否则将报错

2、表空间恢复

RMAN>RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RECOVER/dm.ini' TABLESPACE  MAIN;

4.3.3归档还原与修复

1、归档还原

还原归档。启动 DMRMAN,设置 OVERWRITE 为 2,如果归档文件已存在,会报错。

1、指定还原的目标归档日志目录:

RMAN>RESTORE ARCHIVE LOG FROM BACKUPSET '/home/dm_bak/arch_all_for_restore' TO ARCHIVEDIR'/opt/dmdbms/data/DAMENG_FOR_RESTORE/arch_dest' OVERWRITE 2;

2、指定还原目标库的 dm.ini 文件路径:

RMAN>RESTORE ARCHIVE LOG FROM BACKUPSET '/home/dm_bak/arch_all_for_restore' TO  DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' OVERWRITE 2;

2、归档修复

单机环境下,确保目标库已经停止工作后,执行归档修复;

RMAN> REPAIR ARCHIVELOG DATABASE '/opt/dmdbms/data/dm.ini';

DSC 环境下,需要每个节点停止工作后,每个节点独立执行修复操作;

对于两节点 DSC01、DSC02 执行修复如下:

RMAN> REPAIR ARCHIVELOG DATABASE '/opt/dmdbms/dsc/dm01.ini';

RMAN> REPAIR ARCHIVELOG DATABASE '/opt/dmdbms/dsc/dm02.ini'

4.4控制台工具进行脱机备份

DM控制台工具CONSOLE来执行脱机的备份与还原操作

dmdba用户启动工具,/tool/manager

5、举例

5.1联机数据库备份与还原

创建一个实例

./dminit path=/dmdata/data PAGE_SIZE=32 EXTENT_SIZE=32 DB_NAME=DMTEST INSTANCE_NAME=DMTEST PORT_NUM=5237 SYSDBA_PWD=199624xHx  SYSAUDITOR_PWD=199624xHx

修改dm.ini

ARCH_INI=1

创建dmarch.ini

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = /dmdata/arch

ARCH_FILE_SIZE = 1024

ARCH_SPACE_LIMIT = 2048

启动服务

./dmserver /dmdata/data/DMTEST/dm.ini

进入disql

./disql SYSDBA/199624xHx@localhost:5237

创建users数据表

create table users (id int,name varchar(10));

全量备份数据库

BACKUP DATABASE FULL BACKUPSET '/dmdata/dmbak/db_full_bak_01';

新建数据库DMTEST01,端口5238

./dminit path=/dmdata/data PAGE_SIZE=32 EXTENT_SIZE=32 DB_NAME=DMTEST01 INSTANCE_NAME=DMTEST01 PORT_NUM=5238 SYSDBA_PWD=199624xHx  SYSAUDITOR_PWD=199624xHx

还原

./dmrman

校验备份

CHECK BACKUPSET '/dmdata/dmbak/db_full_bak_01';

还原数据库

RESTORE DATABASE '/dmdata/data/DMTEST01/dm.ini' FROM BACKUPSET '/dmdata/dmbak/db_full_bak_01';

恢复数据库

RECOVER DATABASE '/dmdata/data/DMTEST01/dm.ini' FROM  BACKUPSET '/dmdata/dmbak/db_full_bak_01';

数据库更新

RECOVER DATABASE '/dmdata/data/DMTEST01/dm.ini' UPDATE DB_MAGIC;

启动服务DMTEST01

/home/dmdba/dmdbms/bin/dmserver /dmdata/data/DMTEST01/dm.ini

进入disql,DMTEST01

./disql SYSDBA/199624xHx@localhost:5238

验证成功

5.2联机表空间和表备份与还原

启动服务

/home/dmdba/dmdbms/bin/dmserver /dmdata/data/DMTEST/dm.ini

进入disql

./disql SYSDBA/199624xHx@localhost:5237

插入一条数据

insert into users(id,name) values (1,'哈哈哈');

全量表空间备份

BACKUP TABLESPACE MAIN BACKUPSET '/dmdata/dmbak/ts_full_bak_01';

表备份

BACKUP TABLE users BACKUPSET '/dmdata/dmbak/tab_bak_01';

表还原

在disql执行:

TRUNCATE table users; 清除users数据

RESTORE TABLE users FROM BACKUPSET '/dmdata/dmbak/tab_bak_01';

表空间还原,进入dmrman

./dmrman

还原表空间

RESTORE DATABASE '/dmdata/data/DMTEST/dm.ini' TABLESPACE  MAIN FROM BACKUPSET '/dmdata/dmbak/ts_full_bak_01';

表空间恢复

RECOVER DATABASE '/dmdata/data/DMTEST/dm.ini' TABLESPACE  MAIN;

再次启动服务,进入disql,验证成功

5.3脱机数据库备份与还原

进入DMTEST01删除users

drop table users;

退出disql,关闭服务

进入dmrman

脱机备份

BACKUP DATABASE '/dmdata/data/DMTEST/dm.ini' FULL BACKUPSET '/dmdata/dmbak/db_full_bak_02';

校验备份

CHECK BACKUPSET '/dmdata/dmbak/db_full_bak_02';

还原数据库

RESTORE DATABASE '/dmdata/data/DMTEST01/dm.ini' FROM BACKUPSET '/dmdata/dmbak/db_full_bak_02';

恢复数据库

RECOVER DATABASE '/dmdata/data/DMTEST01/dm.ini' FROM  BACKUPSET '/dmdata/dmbak/db_full_bak_02';

数据库更新

RECOVER DATABASE '/dmdata/data/DMTEST01/dm.ini' UPDATE DB_MAGIC;

启动DMTEST01服务,进入disql,验证成功

6、总结

1.表空间和表的还原只能在源库,数据库的备份可以应用到不同机器之间进行数据还原。

2.备份分为全量备份和增量备份,首次备份可以全量备份,后续可以增量备份

热备份与数据库状态的关系

部署架构

状态

使用限制

单实例

open

支持所有备份类型

mount

支持归档备份

主备

primary

支持所有备份类型

standby

支持库级,表空间级,归档备份,DDL_CLONE

DSC

open

支持库备份,表空间备份,表备份

DM8物理备份恢复支持情况

DSC备份:dmrman dcr_ini=/home/dmdba/dmdcr.ini

达梦社区地址:达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台 

### 达梦数据库联机备份还原 #### 联机备份概述 达梦数据库支持在不影响业务运行的前提下执行联机备份,这有助于确保数据的安全性和系统的高可用性。通过这种方式可以在不中断服务的情况下完成重要的维护工作[^1]。 #### 表空间级别的联机备份 针对特定表空间实施的在线备份允许用户仅对部分而非全部的数据文件进行保护措施。这种灵活性使得管理员能够更精细地控制哪些对象参与到了备份过程中去。 #### 物理备份方式的选择 当考虑采用何种类型的物理备份策略时——即冷备还是热备——应基于具体的环境条件和应用需求做出决定。如果应用程序不允许停机,则推荐使用热备方案;反之则可以选择更为简单的冷备模式[^2]。 #### 实施联机备份的具体步骤 为了创建一个有效的联机备份集,建议按照如下指南操作: - **准备阶段** - 确认目标实例处于正常状态并已启用归档日志功能; - 设置合理的参数配置以优化性能表现; - **启动备份进程** - 使用`BACKUP DATABASE ... ONLINE`命令发起整个数据库范围内的在线备份请求; - 或者利用`dmrman`工具提供的图形界面来进行交互式的备份定义。 - **命名约定** - 给定每次备份活动赋予有意义的名字(例如:“db_full_for_restore”),以便日后识别其用途[^5]。 ```sql -- SQL语句示例:执行全量联机备份 BACKUP DATABASE TO 'backup_path/db_full_for_restore' ONLINE; ``` #### 执行联机恢复流程 一旦发生意外情况需要从先前制作好的副本中恢复原始内容时,应当遵循以下原则: - 首先停止当前正在使用的事务处理,并将系统切换至挂起模式; - 接着调用相应的恢复指令序列,如`RESTORE`、`RECOVER`等,逐步重建受损结构直至达到一致性的快照时刻; - 最后重启服务恢复正常运作[^3]。 ```bash # Shell脚本片段:模拟简单恢复场景下的命令链路 $ dmrman <<< "CONNECT SYSDBA/password; RESTORE DATABASE FROM BACKUPSET 'backup_path'; RECOVER DATABASE;" ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值