#!/bin/bash
# 达梦环境变量配置
export DM_HOME=/home/dmdba/dmdbms
export PATH=$DM_HOME/bin:$PATH
# 备份目录配置
FULL_BACKUP_DIR=/dmdata/dmbak/full
INCREMENT_BACKUP_DIR=/dmdata/dmbak/increment
LOG_DIR=/dmdata/dmbak/log
# 备份文件时间戳
DATE_STR=$(date +%Y%m%d_%H%M%S)
# 日志文件
LOG_FILE=${LOG_DIR}/backup_${DATE_STR}.log
# 数据库登录信息
USER=sysdba
PASS=Dm123456
HOST=localhost
PORT=5236
# 需要备份的模式列表(请替换为你自己的模式名)
SCHEMAS=("schema1" "schema2" "schema3")
# 删除3天前的备份文件和日志
find $FULL_BACKUP_DIR -type f -mtime +3 -exec rm -f {} \; >> $LOG_FILE 2>&1
find $INCREMENT_BACKUP_DIR -type f -mtime +3 -exec rm -f {} \; >> $LOG_FILE 2>&1
find $LOG_DIR -type f -mtime +3 -exec rm -f {} \; >> $LOG_FILE 2>&1
echo "[INFO] 备份开始,时间:$(date '+%F %T')" | tee -a $LOG_FILE
# 全量备份:循环备份各个模式(schema)
for schema in "${SCHEMAS[@]}"
do
echo "[INFO] 备份模式 $schema 开始..." | tee -a $LOG_FILE
disql ${USER}/${PASS}@${HOST}:${PORT} <<EOF >> $LOG_FILE 2>&1
BACKUP SCHEMA $schema BACKUPSET '${FULL_BACKUP_DIR}/schema_${schema}_full_bak_${DATE_STR}';
EXIT;
EOF
if [ $? -eq 0 ]; then
echo "[INFO] 备份模式 $schema 完成,时间:$(date '+%F %T')" | tee -a $LOG_FILE
else
echo "[ERROR] 备份模式 $schema 失败,请查看日志" | tee -a $LOG_FILE
fi
done
# 增量备份:针对全库(不指定模式)
echo "[INFO] 开始执行全库增量备份..." | tee -a $LOG_FILE
disql ${USER}/${PASS}@${HOST}:${PORT} <<EOF >> $LOG_FILE 2>&1
BACKUP DATABASE INCREMENT WITH BACKUPDIR '${INCREMENT_BACKUP_DIR}' BACKUPSET '${INCREMENT_BACKUP_DIR}/db_increment_bak_${DATE_STR}';
EXIT;
EOF
if [ $? -eq 0 ]; then
echo "[INFO] 增量备份完成,时间:$(date '+%F %T')" | tee -a $LOG_FILE
else
echo "[ERROR] 增量备份失败,请查看日志" | tee -a $LOG_FILE
fi
echo "[INFO] 备份全部完成,时间:$(date '+%F %T')" | tee -a $LOG_FILE
直接执行这个shell就可以进行备份
文章
阅读量
获赞