达梦数据库备份与还原详解
DMRMAN是DM8的脱机备份还原管理工具,由它来统一负责库级脱机备份、 脱机还原。DMRMAN工具支持命令行指定语句、命令行指定脚本和控制台输入三种操作方式。
一、脱机备份与还原
图形化Console控制台操作
如下:
1.关闭数据库服务(实例)
#systemctl stop DmServiceDAMENG.service
2.dmdba用户打开另一个DM Console(千万注意使用dmdba用户打开图形化界面操作)
$cd /dm8/tool
$console
3.创建备份,点击New backup
4.启动数据库服务
#systemctl start DmServiceDAMENG.service
#su - dmdba
$cd /dm8/tool
$./manager
(任意修改新增:创建了WDM user)
删除/dm8/data/DAMENG/*.DBF文件后启动数据库服务,用户级别的DBF,不影响数据库启动。
5.关闭数据库服务,进入console,还原备份
Restore还原成功,但无法启动数据库
尝试recover恢复成功,但还是无法启动数据库
6.按提示需要update db_magic,进入console点击update db_magic成功
7.重启数据库服务成功
#systemctl start DmServiceDAMENG.service
打开/dm8/data/DAMENG查看备份数据恢复情况,*.DBF文件还在
$/dm8/data/DAMENG
$ll
DMRMAN命令行操作
DMRMAN介绍
DMRMAN是DM8的脱机备份还原管理工具,由它来统一负责库级脱机备份、 脱机还原。
DMRMAN工具支持命令行指定语句、命令行指定脚本和控制台输入三种操作方式。
配置DMRMAN
- CONFIGURE语句进行DMRMAN的默认参数配置,配置默认的存储介质类型、备份集搜集目录、归档日志搜集目录、跟踪日志文件
- 显示所有默认配置项 – CONFIGURE;
- 清除所有默认配置项 – CONFIGURE CLEAR;
- 配置默认设备类型为磁盘DISKᅳ CONFIGURE DEFAULT DEVICE TYPE DISK;
打开dmrman
$cd /dm8/bin
$./dmrman
RMAN>configure 查看参数;
DMRMAN备份数据库
对数据做完全备份
RMAN>backup database '/dm8/data/DAMENG/dm.ini' full
backupset '/dm8/data/DAMENG/bak_full';
DMRMAN还原和恢复数据库
• 还原数据库
RMAN>restore database '/dm8/data/DAMENG/dm.ini' from
backupset '/dm8/data/DAMENG/bak_full' ;
• 恢复数据库
RMAN>recover database '/dm8/data/DAMENG/dm.ini' update db_magic;
DMRMAN重用的命令
- show 查看备份集 – show backupset '/dm8/data/DAMENG/bak_full';
- remove 删除备份集 – remove backupset '/dm8/data/DAMENG/bak_increment';
- check 检查备份集 – check backupset '/dm8/data/DAMENG/bak_full';
- load 导入备份集 – load backupset '/dm8/data/DAMENG/bak_full';
二、联机备份与还原
归档日志
归档日志(Archive Log)是非活动的重做日志备份. 通过使用归档日志,可以保留所有重做历史记录, 当数据库出现介质失败时,使用数据文件备份,归档日志和重做日志可以完全恢复数据库。
配置本地归档
图形化配置本地归档日志
进入manager——右键——管理服务器
系统管理——将数据库状态改成mount
配置本地归档:目录/dm8/arch
DDL:alter database add archivelog 'DEST=/dm8/arch, TYPE=LOCAL, FILE_SIZE=64, SPACE_LIMIT=0';
将数据库状态切换到open
命令行配置本地归档
SQL> alter database mount;
SQL> alter database add archivelog 'type=local,dest=/dm8/arch,file_size=64,space_limit=0' ;
SQL> alter database archivelog;
SQL> alter database open;
联机备份
联机备份可以备份数据库,表空间,表和归档文件。
联机备份表空间
SQL命令行创建一个测试表空间test
刷新manager可以看到test表空间
配置本地归档日志(见上文),然后新建备份;
图形化备份表空间
命令行备份表空间
SQL>backup tablespace DMHR full to TS_TEST_FULL_2022_12_04_20_23_05 backupset ' /dm8/data/DAMENG/bak/TS_TEST_FULL_2022_12_04_20_23_05';
备份后删除dbf文件(操作系统级别删除文件,表空间仍然在)
备份后插入数据,再插入新数据新插入数据只在内存(在线日志)。
数据库完全备份与增量备份(联机)
完全备份
执行数据库备份,数据库必须处于 OPEN 状态,MOUNT 和 SUSPEND 状态下不允许执行数据库备份。
数据库完全备份中包含了指定库的全部有效数据页,为了保证数据安全应该对数据库定 期执行完全备份。多久执行一次完全备份才合适,一般规则是数据库经过频繁修改后最好执 行一次完全备份。
完全备份数据库步骤如下:
1.配置归档日志
配置归档过程(命令行):
$disql sysdba/dameng123
SQL> ALTER DATABASE MOUNT;
SQL> ALTER DATABASE ADD ARCHIVELOG 'DEST = G:\dmdbms\arch, TYPE = local, FILE_SIZE = 1024, SPACE_LIMIT = 204800';
SQL>ALTER DATABASE ARCHIVELOG;
SQL>ALTER DATABASE OPEN;
查看是否配置归档;
SQL>select name,arch_mode from v$database;
查看是否归档,及归档的空间,路径;
SQL>select arch_name,arch_type,arch_dest,arch_file_size,arch_space_limit from v$dm_arch_ini;
查看实例名,状态,主机名, 保证数据库处于 OPEN 状态。
SQL>select instance_name,status$,host_name from v$instance;
2.Disql中输入备份数据库语句,最简单的不设置其他参数的完全备份语句如下:
SQL>BACKUP DATABASE FULL BACKUPSET '/home/dm_bak/db_full_bak_01';
备份语句中的参数 FULL 参数可以省略,不指定备份类型服务器会默认指定备份类型为完全备份。
增量备份
增量备份指基于指定的库(或者表空间)的某个备份(完全备份或者增量备份),备份 自该备份以来所有发生修改了的数据页。执行增量备份的主要目的是快速备份数据库中的修 改,减少备份时间和避免重复的备份。
如何制定备份策略要根据可接受的最小恢复时间。例如,每周执行一次完全备份,每天 执行一次增量备份,那么恢复时要重做的归档就不会超过一天。
增量备份数据库步骤如下:
- 配置归档,参考上文。
- 保证数据库处于 OPEN 状态。
- Disql中输入备份数据库语句,最简单的不设置其他参数的增量备份语句如下: SQL>BACKUP DATABASE INCREMENT WITH BACKUPDIR '/home/dm_bak' BACKUPSET '/home/dm_bak/db_increment_bak_02';
备份语句中的 INCREMENT 参数不可省略,该参数用来指定执行的备份类型为增量备份。 若要创建累积增量备份,还需要指定 CUMULATIVE 参数,否则缺省为差异增量备份。WITH BACKUPDIR 参数用来指定基备份集的搜索目录,如果基备份集不在默认目录该参数不可省略。
归档日志备份
在 Disql工具中使用 BACKUP 语句可以备份归档日志。
使用归档备份的前提:
- 一是,归档文件的 db_magic 值和库的 db_magic 值必须一样;
- 二是,服务器必须配置归档;
- 三是,归档日志必须连续,如果出现不连续的情况,前面的会忽略,仅备份最新的连续部分。如果未收集到指定范围内的归档,则不会备份。联机备份的时候经常会切换归档文件,最后一个归档总是空的,所以最后一个归档不会被备份。
SQL>BACKUP ARCHIVE LOG ALL BACKUPSET 'arch_bak_01'; 备份集“arch_bak_01”会生成到默认的备份路径下。
归档备份拷贝指定归档目录下的所有的归档文件到备份集中,并记录各个归档文件的属 性,文件大小,LSN 区间等。归档备份不存在增量备份之说。当需要保存库的归档时,可以 使用归档备份。
完整的备份归档步骤如下:
1) 配置归档
2) 数据库处于OPEN或者MOUNT状态。
3) DIsql 中输入备份数据库语句。
例如,备份归档日志,通过 LSN BETWEEN ... AND ...来指定起始和截至 LSN。
首先,确定 LSN 范围:
SQL>select ARCH_LSN, CLSN, PATH from V$ARCH_FILE;
其次,备份归档日志
SQL>BACKUP ARCHIVELOG LSN BETWEEN 50414 AND 50478 BACKUPSET '/home/dm_bak/arch_bak_time_14-78';
联机还原
DM仅支持表空间和表的联机还原,数据库和归档日志的还原必须通过脱机工具DMRMAN 执行。
还原表空间(只能脱机还原)
Console控制台恢复表空间
尝试恢复test表空间
#systemctl stop DmServiceDMSERVER.service;----------------关闭数据库服务
#su – dmdba
$/dm8/tool/console
表空间还原本身包含恢复操作,因此还原后不需要再执行恢复操作(即不需要update DB_Magic)。
# systemctl start DmServiceDMSERVER.service --------------启动数据库
连接manager查看TEST表空间file已恢复。
进入/dm8/data/DAMENG8查看data_test01.dbf也已恢复
DMRMAN还原表空间
dmrman需要在数据库服务关闭的状态运行(即脱机状态)。
#dmrman
RMAN>RESTORE DATABASE ('/dm8/data/DAMENG/dm.ini' )tablespace "DMHR" FROM BACKUPSET '/dm8/data/DAMENG/bak/TS_DMHR_FULL'
RMAN>RECOVER DATABASE ('/dm8/data/DAMENG/dm.ini' )TABLESPACE DMHR;
在线日志中的数据可以恢复回来。
更多推荐
所有评论(0)