暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
达梦dmrman自动恢复.txt
96
6页
1次
2024-01-11
25墨值下载
#!/bin/bash
#!/usr/bin/expect
# Last updated: 2023-08-02
# ---------------------------------------------------------------------
# Copyright (C) 2023 zs #
# #
# Desc : For dm dmrman auto restore and recover #
# DmRecover.sh 备份路径 SYSDBA 密码
# 备份文件格式
#[root@ogauss1 dmbak]# ls -lrt
#total 140
#drwxr-xr-x 2 dmdba dinstall 4096 Dec 13 01:00
DB_DAMENG_INCREMENT_2023_12_13_01_00_19
#drwxr-xr-x 2 dmdba dinstall 4096 Dec 14 01:00
DB_DAMENG_INCREMENT_2023_12_14_01_00_23
#drwxr-xr-x 2 dmdba dinstall 4096 Dec 15 01:00
DB_DAMENG_INCREMENT_2023_12_15_01_00_25
#drwxr-xr-x 2 dmdba dinstall 4096 Dec 16 00:30
DB_DAMENG_FULL_2023_12_16_00_30_25
#drwxr-xr-x 2 dmdba dinstall 4096 Dec 17 01:00
DB_DAMENG_INCREMENT_2023_12_17_01_00_25
#drwxr-xr-x 2 dmdba dinstall 4096 Dec 18 01:00
DB_DAMENG_INCREMENT_2023_12_18_01_00_26
#drwxr-xr-x 2 dmdba dinstall 4096 Dec 21 01:00
DB_DAMENG_INCREMENT_2023_12_21_01_00_28
#drwxr-xr-x 2 dmdba dinstall 4096 Dec 22 01:00
DB_DAMENG_INCREMENT_2023_12_22_01_00_28
#drwxr-xr-x 2 dmdba dinstall 4096 Dec 23 00:30
DB_DAMENG_FULL_2023_12_23_00_30_28
#drwxr-xr-x 2 dmdba dinstall 4096 Dec 24 01:00
DB_DAMENG_INCREMENT_2023_12_24_01_00_30
#drwxr-xr-x 2 dmdba dinstall 4096 Dec 25 01:00
DB_DAMENG_INCREMENT_2023_12_25_01_00_32
# ---------------------------------------------------------------------
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LD_LIBRARY_PATH=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b08-
1.el7_9.x86_64/jre/lib::/opt/dmhs/bin:/opt/dmhs/odbc/lib:/opt/dmdbms/bin:/opt/dm
dbms/bin
DM_HOME=/opt/dmdbms
ProgramName=${0##*/}
v_pwd=$(cd $(dirname "$0") || exit;pwd)
v_tmpfile=$v_pwd/log/tmp_log
v_tmpbackup_folder=$v_pwd/tmp_backup
v_backupfile_path=$1
v_username=$2
v_passsword=$3
date_str="$(date +%Y%m%d)"
v_logfile=$v_pwd/log/"dmrecover"_$date_str".log"
v_fullfile=
v_incrfiles=()
v_inst_name=
v_start_date=$(date +"%Y-%m-%d %H:%M:%S")
v_start_date_con=$(date -d "$v_start_date" +%s)
anynowtime="date +'%Y-%m-%d %H:%M:%S'"
NOW="echo [\`$anynowtime\`]"
recho(){
echo "$(eval "$NOW") $*"| tee -a "$v_logfile"
# echo "$*"| tee -a "$v_logfile"
}
Usage()
{
cat << EOF
Usage:
$ProgramName backupfile_path username password
eg: $ProgramName /dmbak/dmrman SYSDBA 123456
EOF
}
Welcome(){
recho
"#------------------------------------------------------------------------------
--#"
recho "# 欢迎使用 DM 备份自动恢复工具 "
recho "#说明 "
recho "# 1. 工具目前可实现将数据库自动恢复至最新备份 "
recho "# 2. 恢复过程需要使用 SYSDBA 用户进行参数调整,密码错误会造成恢复失败 "
recho "# 请提前确认 SYSDBA 用户密码正确 "
recho "#
"
recho
"#------------------------------------------------------------------------------
--#"
}
Envcheck(){
# 1. 检查 DM_HOME 是否存在
if [ ! -d $DM_HOME ]; then
recho " 脚本$ProgramName 内置 DM_HOME=$DM_HOME 路径不存在,请检查或调整!!!"
exit 1
fi
# 2. 检查备份目录是否存在
if [ ! -d $v_backupfile_path ]; then
recho " 指定备份文件目录不存在,请检查或调整!!!"
exit 1
fi
# 3. 检查 dmap 进程是否启动
v_dmap_cnt=$(ps -ef|grep dmap|grep -v grep|wc -l)
if [[ $v_dmap_cnt -eq 0 ]]; then
recho " 达梦 dmap 进程未启动,进行启动..."
$DM_HOME/bin/DmAPService start >> $v_logfile
v_dmap_cnt=$(ps -ef|grep dmap|grep -v grep|wc -l)
if [[ $v_dmap_cnt -gt 0 ]]; then
recho " 达梦 dmap 进程启动成功..."
else
recho " 达梦 dmap 进程启动失败,请检查!!!"
fi
fi
# 4. 检查 dmap 进程是否启动
if [ ! -d $v_tmpbackup_folder ]; then
mkdir -p $v_tmpbackup_folder
fi
}
BackupFileGet(){
vv_fullfile=$(ls -rt $v_backupfile_path|grep FULL|tail -n 1)
v_fullfile=$v_backupfile_path/$vv_fullfile
recho " FULL 备份:$v_fullfile"
v_inst_name=$(echo $vv_fullfile|awk -F"_" {'print $2'})
v_fullfile_date=$(echo $vv_fullfile|awk -F"_" {'print $4$5$6'})
vv_incrfiles=$(ls -rt $v_backupfile_path|grep INCREMENT)
for sfile in ${vv_incrfiles}
do
v_incrfile_date=$(echo $sfile|awk -F"_" {'print $4$5$6'})
if [[ $v_incrfile_date -gt $v_fullfile_date ]];then
vv_incrfiles=$v_backupfile_path/${sfile}
recho " INCR 备份:${vv_incrfiles}"
v_incrfiles[${#v_incrfiles[*]}]=$vv_incrfiles
fi
done
# for i in ${!v_incrfiles[*]}
# do
# echo $i ${v_incrfiles[i]}
# done
}
DbRecoverMain(){
Dbkill
Dbrestore
Dbrestoreincr
Dbrecover
Dbupdatemagic
Dbopen
Dbcheck
}
Dbkill(){
v_dbpid=$(ps -ef|grep dmser|grep /dmdata/$v_inst_name/dm.ini|awk '{print $2}')
if [ X$v_dbpid != "X" ];then
kill -9 $v_dbpid
vv_dbpid=$(ps -ef|grep dmser|grep /dmdata/$v_inst_name/dm.ini|awk '{print
$2}')
if [ X$vv_dbpid != "X" ];then
recho " 数据库进程存在,且关闭失败,请检查!!!"
fi
fi
}
Dbrestore(){
recho " 还原数据库 FULL 备份:$v_fullfile..."
if [ ! -f "/dmdata/$v_inst_name/dm.ini" ];then
$DM_HOME/bin/dmrman CTLSTMT="RESTORE DATABASE TO '/dmdata/$v_inst_name' FROM
BACKUPSET '$v_fullfile'" > $v_tmpfile 2>&1
else
$DM_HOME/bin/dmrman CTLSTMT="RESTORE DATABASE '/dmdata/$v_inst_name/dm.ini'
FROM BACKUPSET '$v_fullfile'" > $v_tmpfile 2>&1
fi
cat $v_tmpfile >> $v_logfile
v_restore_flag=$(cat $v_tmpfile|grep successfully|wc -l)
if [[ $v_restore_flag -gt 0 ]];then
recho " 还原数据库 FULL 备份:$v_fullfile 成功..."
else
recho " 还原数据库 FULL 备份:$v_fullfile 失败,请检查!!!"
of 6
25墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。