一、物理备份
1.1 概念
物理备份是找出那些已经分配、使用的数据页,拷贝并保存到备份集中。物理还原是物理备份的逆过程,物理还原一般通过 DMRMAN 工具(或者 SQL 语句),把备份集中的数据内容(数据文件、数据页、归档文件)重新拷贝、写入目标文件。
1.2 术语
联机备份还原:联机还原指数据库处于运行状态时,并正常提供数据库服务情况下进行的备份还原操作,称为联机备份。
脱机备份还原:脱机还原指数据库处于关闭状态时执行的还原操作。库备份、表空间备份和归档备份,可以执行脱机还原。脱机还原操作的目标库必须处于关闭状态。
备份集:备份集用来存放备份过程中产生的备份数据及备份信息。一个备份集对应了一次完整的备份。一般情况下,一个备份集就是一个目录,备份集包含一个或多个备份片文件,以及一个备份元数据文件。
1.3 适用范围
本文所涉及的内容适用于 DM8 数据库物理备份还原。
二、准备工作
联机备份数据库必须要配置归档。联机备份时,大量的事务处于活动状态,为确保备份数据的一致性,需要同时备份一段日志(备份期间产生的 REDO 日志),因此要求数据库必须配置本地归档且归档必须处于开启状态。
脱机备份数据库可配置归档也可以不配置。正常退出的库的备份不需要考虑本地归档日志的完整性,可以不配置归档;但对于故障退出的库的备份要求因故障未刷盘的日志也必须存在于本地归档中,因此必须配置归档。
归档配置有两种方式:一是联机归档配置,数据库实例启动情况下,使用 SQL 语句完成 dmarch.ini 和 ARCH_INI 配置;二是手动配置归档,数据库实例未启动的情况下,手动编写 dmarch.ini 文件和设置参数 ARCH_INI。下面将分别说明这两种归档如何配置。
2.1 方式一:联机配置归档
将数据库修改为mount配置状态
alter database mount
配置本地归档
ALTER DATABASE ADD ARCHIVELOG ‘DEST =/dmdb8/arch,TYPE=local,FILE_SIZE=1024,SPACE_LIMIT =10240’;
开启归档
alter database archivelog;
配置数据库为open状态
alter database open;
2.2 方法二:手动配置归档
关闭数据库
在 dm.ini 所在目录,创建 dmarch.ini 文件。dmarch.ini 文件内容如下:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdb8/arch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 10240
编辑 dm.ini 文件,设置参数ARCH_INI=1
启动数据库实例,数据库已运行于归档模式。
systemctl restart DmServiceDMSERVER.service
SQL> select arch_mode from v$database;
行号 ARCH_MODE
---------- ---------
1 Y
已用时间: 0.538(毫秒). 执行号:2801.
注意:联机备份时,关闭已配置的本地归档之后再重新打开,会造成归档文件中部分日志缺失,备份时检查归档文件连续性时将会报错。存在该类操作时,若要避免该错误,备份前需要调用【 checkpoint(100) ;】命令主动刷新检查点。
三、创建作业环境
3.1 使用manager图形化界面创建备份作业
使用manager调用图形化前linux需要安装图形化工具
服务端安装图形界面 yum group install "Server with GUI"
systemctl get-default
systemctl set-default graphical.target
systemctl isolate graphical.target
systemctl get-default
注意事项:
在yum group install "Server with GUI"时,会自动安装NetworkManager服务及firewalld服务,需要将这两个服务禁用
systemctl stop firewalld
systemctl disable firewalld
systemctl stop NetworkManager
systemctl disable NetworkManager
3.1.1 达梦数据库安装完后使用manager命令调出图形化界面
[root@dmdb ~]# cd /dmdb8/dmdata/dmdbms/tool/
[root@dmdb tool]# ./manager -jreLoc /etc/alternatives/jre_1.8.0
3.1.2 登陆数据库,代理右键-创建代理环境
3.1.3 作业右键-新建作业(全库备份)-常规选项-添加作业名:BAKFULL
3.1.4 作业步骤选项-步骤类型选择备份数据库-备份目录根据需求选择
3.1.5 作业调度选项-新建-每周一、四、五、周日 0点反复执行(根据实际需求调整)
3.1.6 至此全库备份作业创建完成。
3.1.7 创建增量备份 选中作业右击 --> 新建作业
** 注意:DM8增量备份分为差异增量备份和累积增量备份,缺省为差异增量备份。差异增量备份的基备份集可以是增量备份集也可以是全量备份集,可以是冷备的备份集,也可以是热备的备份集。累积增量备份的备份集只能是全量备份的备份集。**
3.1.8 选中作业步骤 — > 添加
3.1.9 选中作业调度 — > 新建 — > 每周一到周六 0点进行增量备份
3.1.10 至此增量备份作业创建完成。
3.1.11 创建归档备份 作业 — > 新建作业
3.1.12 选中作业步骤 — > 添加
3.1.13 选中作业调度 — > 新建 — > 每周二、三、四、五 0点 进行归档备份
3.1.14 自此归档备份作业创建完成
3.1.15 创建删除备份 选中作业右击 --> 新建作业
3.1.16 选中作业步骤 — > 添加 — > 步骤类型选择SQL脚本
call sf_bakset_backup_dir_add('DISK','/dmdb8/full');
call sf_bakset_backup_dir_add('DISK','/dmdb8/incr');
call sf_bakset_backup_dir_add('DISK','/dmdb8/arch');
call sf_bakset_remove_batch('DISK',NOW()-14,NULL,NULL);
注意:NOW()-7表示保留一周,NOW()-15表示保留半个月,可根据需求更改
3.1.17 选中作业调度 — > 新建 — > 每周二、三、四 0点 进行删除备份
3.1.18 自此备份删除作业创建完成
3.2 命令行创建备份作业
3.2.1 作业环境初始化
SP_INIT_JOB_SYS(1);
SQL> SP_INIT_JOB_SYS(1);
DMSQL 过程已成功完成
已用时间: 79.221(毫秒). 执行号:55700.
3.2.2 作业环境销毁
SP_INIT_JOB_SYS(0);
SQL> SP_INIT_JOB_SYS(0);
DMSQL 过程已成功完成
已用时间: 40.088(毫秒). 执行号:55701.
3.3.3 定时全库备份
开启定时备份,每周一、四、五、周日 00:00:00分进行全量备份,从2023年2月16号23:00:00分开始。
#call SP_CREATE_JOB(‘BAKFULL’,1,0,‘’,0,0,‘’,0,‘定时全备’);
#call SP_JOB_CONFIG_START(‘BAKFULL’);
#call SP_ADD_JOB_STEP(‘BAKFULL’, ‘bakfull01’, 3, ‘01010000/dmdb8/full’, 1, 3, 0, 0, NULL, 0);
#call SP_ADD_JOB_SCHEDULE(‘BAKFULL’, ‘bakfull02’, 1, 2, 1, 64, 0, ‘12:00:00’, NULL, ‘2023-02-15 00:00:00’, NULL,‘’);
#call SP_JOB_CONFIG_COMMIT(‘BAKFULL’);
call SP_CREATE_JOB('BAKFULL',1,0,'',0,0,'',0,'全库备份');
call SP_JOB_CONFIG_START('BAKFULL');
call SP_ADD_JOB_STEP('BAKFULL', 'bakfull01', 6, '06000000/dmdb8/full', 0, 0, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('BAKFULL', 'bakfull02', 1, 2, 1, 51, 0, '00:00:00', NULL, '2023-02-16 23:00:00', NULL, '');
call SP_JOB_CONFIG_COMMIT('BAKFULL');
3.4.4 增量备份
开启增量备份,每周一到周六00:00:00分进行增量备份,从2023年02月16号23:00:00分开始。
#call SP_CREATE_JOB(‘BAKINCR’,1,0,‘’,0,0,‘’,0,‘增量备份’);
#call SP_JOB_CONFIG_START(‘BAKINCR’);
#call SP_ADD_JOB_STEP(‘BAKINCR’, ‘bakincr03’, 3, ‘11010000/dmdb8/full|/dmdb8/arch’, 1, 3, 0, 0, NULL, 0);
#call SP_ADD_JOB_SCHEDULE(‘BAKINCR’, ‘bakincr04’, 1, 2, 1, 64, 0, ‘12:00:00’, NULL, ‘2023-02-16 00:00:00’, NULL, ‘’);
#call SP_JOB_CONFIG_COMMIT(‘BAKINCR’);
call SP_CREATE_JOB('BAKINCR',1,0,'',0,0,'',0,'增量备份');
call SP_JOB_CONFIG_START('BAKINCR');
call SP_ADD_JOB_STEP('BAKINCR', 'bakincr01', 6, '46000000/dmdb8/incr|/dmdb8/incr', 0, 0, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('BAKINCR', 'bakincr02', 1, 2, 1, 126, 0, '00:00: