已索引

应该根据实际情况选择数据库的备份方式,如逻辑备份或物理备份、Job或者Crond、备份软件统一备份等。
本文可作为备份方案的一个参考。

Crond 备份

数据库备份脚本:

# cat /home/dmdba/tools/backup_db.sh
#!/bin/bash  

source /home/dmdba/.bash_profile
cd /home/dmdba/tools/

# 登录信息
username=SYSDBA
passwd=xxxxxxxx
ipaddr=localhost
port=5236

# 达梦bin目录
DMPATH=/dmdb/dmdbms/bin

# 设置生成文件的目录  
FILE_DIR="/orabak/rman"  
  
# 设置生成文件的前缀和后缀  
FILE_PREFIX="DB_DMDB_FULL_"  
  
# 设置保留文件的最大天数  
MAX_DAYS=7  

# 备份数据
backup_sql="backup database full to \"${FILE_PREFIX}$(date +%Y_%m_%d_%H_%M_%S)\" backupset '${FILE_DIR}/${FILE_PREFIX}$(date +%Y_%m_%d_%H_%M_%S)' compressed level 1;"

# 新增备份
$DMPATH/disql SYSDBA/"$passwd"@$ipaddr:$port  -e "$backup_sql" 

# 删除历史备份
find "$FILE_DIR" -type d -name "${FILE_PREFIX}*" -mtime +$MAX_DAYS -exec rm -rf {} \;

exit

数据库归档备份脚本:

# cat /home/dmdba/tools/backup_arch.sh 
#!/bin/bash  

source /home/dmdba/.bash_profile
cd /home/dmdba/tools/

# 登录信息
username=SYSDBA
passwd=xxxxxxxx
ipaddr=localhost
port=5236

# 达梦bin目录
DMPATH=/dmdb/dmdbms/bin

# 设置生成文件的目录  
FILE_DIR="/orabak/rman"  
  
# 设置生成文件的前缀和后缀  
FILE_PREFIX="ARCH_DMDB_"  

# 设置保留文件的最大天数  
MAX_DAYS=7  

# 备份数据
# 注意:如果有 delete input 的话,可能在备库停机期间删除主库的归档,导致备库日志缺失而不能同步,需要重建备库。
# 建议不要使用 delete input,同时,在归档的 REALTIME 部分增加 ARCH_STANDBY_APPLY = 1 参数。
backup_sql="backup archivelog all NOT BACKED UP delete input to \"${FILE_PREFIX}$(date +%Y_%m_%d_%H_%M_%S)\" backupset '${FILE_DIR}/${FILE_PREFIX}$(date +%Y_%m_%d_%H_%M_%S)';"

# 新增备份
cd ${DMPATH} 
$DMPATH/disql SYSDBA/"$passwd"@$ipaddr:$port  -e "$backup_sql"

# 删除历史备份
find "$FILE_DIR" -type d -name "${FILE_PREFIX}*" -mtime +$MAX_DAYS -exec rm -rf {} \;

为数据库备份和归档日志备份设置两个计划任务:

$ crontab -l
01 04 * * * /home/dmdba/tools/backup_db.sh > /dev/null 2>&1
*/20 * * * * /home/dmdba/tools/backup_arch.sh > /dev/null 2>&1

DM Job

建议使用图形界面来配置Job。

--开启代理
SP_INIT_JOB_SYS(1);

--设置全量备份
call SP_CREATE_JOB('full_bak',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('full_bak');
call SP_ADD_JOB_STEP('full_bak','a', 6,'06080000/dmdb/dmdata/DAMENG/bak', 1, 1, 1, 1,NULL, 0);
call SP_ADD_JOB_SCHEDULE('full_bak','b', 1, 2, 1, 1, 0,'23:30:00',NULL,'2023-11-29 16:59:50',NULL,'');
call SP_JOB_CONFIG_COMMIT('full_bak');

--设置增量备份
call SP_CREATE_JOB('inc_bak',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('inc_bak');
call SP_ADD_JOB_STEP('inc_bak','a', 6,'16080000/dmdb/dmdata/DAMENG/bak|/dmdb/dmdata/DAMENG/bak', 1, 1, 1, 1,NULL, 0);
call SP_ADD_JOB_SCHEDULE('inc_bak','b', 1, 2, 1, 126, 0,'23:40:00',NULL,'2023-11-29 17:01:20',NULL,'');
call SP_JOB_CONFIG_COMMIT('inc_bak');

--设置定时清理
call SP_CREATE_JOB('clear_bak',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('clear_bak');
call SP_ADD_JOB_STEP('clear_bak','a', 0,'SP_DB_BAKSET_REMOVE_BATCH(null,sysdate-7)', 1, 1, 0, 0,NULL, 0);
call SP_ADD_JOB_SCHEDULE('clear_bak','b', 1, 1, 1, 0, 0,'23:50:00',NULL,'2023-11-29 17:02:52',NULL,'');
call SP_JOB_CONFIG_COMMIT('clear_bak');

-- By 许望(RHCA、OCM、VCP)
最后修改:2025 年 03 月 27 日 11 : 48 AM
如果觉得我的文章对你有用,请随意赞赏