一、数据备份
-
- 创建代理环境
- 创建代理环境
启动达梦自带的客户端管理工具,可以很方便创建定时备份的job。对应的sql是:SP_INIT_JOB_SYS(1);
-
- 打开归档日志
- 使用管理员SYSDBA登陆服务器,点后设置开归档功能,以下操作最好使用服务器上的达梦客户端进行安装(如下图所示操作流程)
添加归档后,弹出如下图所示的弹框,归档目标填写“ARCH”,空间限制大小为4096;设置归档目标至“/DBSoft/app/dmdb/dmdata/DAMENG/bak”(根据服务器实际情况选择文件保存路径)
添加完成确认保存后,再将状态转换改为打开,保存即可;
排查dmap进程是否启动
使用ps -ef | grep dmap,若有此服务,则可继续下一步操作,若无此服务,则按照步骤启动该服务;
Dmap服务启动步骤如下:(以下步骤使用dmdba用户执行)
- 进入/DBSoft/app/dmdb/bin,查看是否有DM_PIPE_DMAP_LSNR_RD以及DM_PIPE_DMAP_LSNR_RD文件,若存在,则对其进行删除再进行下一步,若不存在则继续下一步;
- 然后进入/etc/init.d/下,执行./DmApService start启动该服务即可
- 创建定时备份job
- 使用sysdba登陆达梦客户端,使用语句创建作业(路径根据实际情况填写):
call SP_CREATE_JOB('back_full',1,0,'',0,0,'',0,'back_full');
call SP_JOB_CONFIG_START('back_full');
call SP_ADD_JOB_STEP('back_full', 'back_full', 6, '00000000/DBSoft/app/dmdb/dmdata/DAMENG/bak', 1, 3, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('back_full', 'back_full', 1, 1, 1, 0, 0, '23:30:00', NULL, '2020-03-27 16:35:56', NULL, '');
call SP_JOB_CONFIG_COMMIT('back_full');
2.创建完成后点击作业名称,进行相关属性的检查,修改。
检查备份路径。根据需要可以选择压缩或不压缩。
压缩级别值越小表示压缩比越低、压缩速率越快;值越大表示压缩比越高、压缩速度越慢
解压缩不需要用户干预,如果备份集指定了压缩,从备份集读取数据写到目标文件之前,会自动进行解压缩操作。
检查高级选项,失败时“报告失败并继续执行下一步”
建议将发生频率修改为每天晚上凌晨进行备份。
保存完成后查看作业历史信息(是否已备份)
在服务器备份路径检查备份文件是否生成:
- 创建定时删除归档日志job
- 在客户端中执行脚本:
call SP_CREATE_JOB('delarch',1,0,'',0,0,'',0,'删除3天前的归档日志');
call SP_JOB_CONFIG_START('delarch');
call SP_ADD_JOB_STEP('delarch', 'DELARCH_TIMELY', 0, 'call SF_ARCHIVELOG_DELETe_BEFORE_TIME(SYSDATE-3);', 1, 3, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('delarch', 'DELARCH_SCHEDULE', 1, 1, 1, 0, 0, '14:50:00', NULL, '2022-03-14 16:16:45', NULL, '');
call SP_JOB_CONFIG_COMMIT('delarch');
2.修改作业描述
这里的保存天数,根据实际情况填写。最少保存一周。
检查高级选项:报告失败并继续执行
根据实际情况选择发生频率,注意执行时间与备份或其他定时任务错开。
- 创建定时删除备份文件job
- 执行创建作业sql
call SP_CREATE_JOB('JOB_DEL_BAK_TIMELY',1,0,'',0,0,'',0,'JOB_DEL_BAK_TIMELY');
call SP_JOB_CONFIG_START('JOB_DEL_BAK_TIMELY');
call SP_ADD_JOB_STEP('JOB_DEL_BAK_TIMELY', 'JOB_DEL_BAK_TIMELY', 0, 'call SF_BAKSET_BACKUP_DIR_ADD(''DISK'', ''/DBSoft/app/dmdb/dmdata/DAMENG/bak'');
CALL SP_DB_BAKSET_REMOVE_BATCH(''DISK'', NOW()-3);', 1, 3, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('JOB_DEL_BAK_TIMELY', 'JOB_DEL_BAK_TIMELY', 1, 1, 1, 0, 0, '12:00:00', NULL, '2020-03-27 22:06:13', NULL, '');
call SP_JOB_CONFIG_COMMIT('JOB_DEL_BAK_TIMELY');
修改作业
修改作业步骤
修改作业调度
物理备份数据还原
在另一台服务器新建个数据库实例,将服务停止。
2.将备份文件拷贝至新服务器。
3.将备份文件权限授权给DMDBA用户(因为定时任务默认DMDBA用户进行的)。
chown -R dmdba:dinstall DB_DAMENG_FULL_2022_04_11_09_55_37
数据库还原 备注:(需切换到dmdba用户进行还原)
还原数据库。启动 DMRMAN,执行以下命令:
RESTORE DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET'/home/bak/DB_DAMENG_FULL_2022_04_07_16_42_50';
恢复数据库。启动 DMRMAN,执行以下命令:
RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM
BACKUPSET '/home/bak/DB_DAMENG_FULL_2022_04_07_16_42_50';
恢复 db_magic,执行以下命令:
RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' UPDATe DB_MAGIC;
*注意恢复数据库后,归档日志默认是关闭状态。需要重新打开。
恢复到指定时间点
恢复数据库到指定时间点 /LSN 是从归档恢复的一种方式,也称为不完全恢复。从归档恢复允许恢复到指定的时间点及指定的 LSN 值。若同时指定了时间点和 LSN,则以较早的为结束点。用户可以通过指定一个时间点/LSN,使数据库恢复到这个指定的时间点 /LSN。
例如用户在下午 5 点做了一个误操作,删除了某些重要数据,我们可以指定恢复时间点到下午 4:59 分,恢复被误删除的数据。
使用 SELECT SYSDATE 命令查询此时的时间为:2018-11-16 10:56:40.624931。
使用 SELECT FILE_LSN FROM V$RLOG 命令查询此时的 LSN 为:50857。
- 关闭数据库,打开 RMAN 还原数据库,执行以下语句:(我们需要将数据库恢复到的完整状态)
RESTORE DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/home/dm_bak/db_full_bak_for_time_lsn';
- 恢复数据库到指定时间点 /LSN
RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' WITH
ARCHIVEDIR'/home/dm_arch/arch' UNTIL TIME'2018-11-16 10:56:40.624931';
或
RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' WITH
ARCHIVEDIR'/home/dm_arch/arch' UNTIL LSN 50857;
- 恢复db_magic,执行以下命令:
RECOVER DATABASE 'D:dmdbmsdataDAMENGdm.ini' UPDATE DB_MAGIC;
- 逻辑备份还原命令:
- 逻辑备份:
SCHEMAS 方式的导出一个或多个模式下的所有对象。
例如,设置 SCHEMAS=USER01,导出模式 USER01 模式下的所有对象。
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log SCHEMAS=USER01 DIRECTORY=/mnt/data/dexp
远程导出:
./dexp USERID=SYSDBA/SYSDBA@x.x.x.x:5236 FILE=db_str.dmp LOG=db_str.log SCHEMAS=USER01 DIRECTORY=/mnt/data/dexp
- 逻辑还原:
SCHEMAS 方式的导入一个或多个模式下的所有对象。
例如,设置 SCHEMAS=USER01,导入模式 USER01 模式下的所有对象。导入的数据库文件在 /mnt/data/dexp,即将生成的日志文件放在 /mnt/data/dimp。
./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log SCHEMAS=USER01 DIRECTORY=/mnt/data/dimp
远程导入:
./dimp SYSDBA/SYSDBA@192.168.0.248:8888 FILE=/emc_2/data/dexp/TDS.dmp LOG=dimp02.log DIRECTORY=/emc_2/data/dimp SCHEMAS=TDS



