一、建立脚本,导出dump文件
1、dm_bak.sh
#####################################
# call shell bakup DMSERVER
#####################################
#新建一个文件夹,路径为/home/dmdba/bakdb_script/userExp/
cd /home/dmdba/bakdb_script/userExp/
./database1.sh
./database2.sh
2、database1.sh
#################################################
# dm export : database1
#################################################
DF=database1_`date +%Y%m%d`_expdp.dmp
LF=database1_`date +%Y%m%d`_expdp.log
SC="database1"
#进入达梦数据库安装bin路径
cd /home/dmdba/dmdbms/bin
#username、password、ip、SCHEMAS需要替换
/home/dmdba/dmdbms/bin/dexp "username"/"password"@IP:5236 DIRECTORY=/home/dmdba/bakdb_script/dumpFile FILE=$DF SCHEMAS="\"database1\"" TABLESPACE=N DROP=N LOG=$LF LOG_WRITE=N
3、database2.sh
#################################################
# dm export : database2
#################################################
DF=database2_`date +%Y%m%d`_expdp.dmp
LF=database2_`date +%Y%m%d`_expdp.log
SC="database2"
#进入达梦数据库安装bin路径
cd /home/dmdba/dmdbms/bin
#username、password、ip、SCHEMAS需要替换
/home/dmdba/dmdbms/bin/dexp "username"/"password"@IP:5236 DIRECTORY=/home/dmdba/bakdb_script/dumpFile FILE=$DF SCHEMAS="\"database1\"" TABLESPACE=N DROP=N LOG=$LF LOG_WRITE=N
二、将dump文件备份到其他服务器
4、scp_bak.sh
#################################################
# Use the scp command to periodically back up files to another server
#################################################
filepath=/home/dmdba/bakdb_script/dumpFile
echo "`date +%Y%m%d` start upload......"
echo "`date +%Y%m%d` start upload......" > /home/dmdba/bakdb_script/logs/`date +%Y%m%d`.log
sleep 5s
#B server password
password='B server password'
echo "start copy datafile from remote path..."
echo "start copy datafile from remote path..." >> /home/dmdba/bakdb_script/logs/`date +%Y%m%d`.log
/usr/bin/expect <<EOF
set timeout 10
#username: B server login name IP:B server IP
#/home/dmdba/bakDump: 备份到B服务器的路径
spawn scp -r -p $filepath username@IP:/home/dmdba/bakDump
expect "*assword:"
send "$password\r"
send "exit\r"
expect eof
EOF
if [ $? = 0 ]; then
echo "datafile copy successful!"
echo "datafile copy successful!" >> /home/dmdba/bakdb_script/logs/`date +%Y%m%d`.log
else
echo "datafile copy failed!"
echo "datafile copy failed!" >> /home/dmdba/bakdb_script/logs/`date +%Y%m%d`.log
fi
三、定时删除服务器上的备份文件
5、delete_bak.sh
#################################################
# Regularly delete log and dump files 7 days ago
#################################################
#!/bin/sh
dumppath=/home/dmdba/bakdb_script/dumpFile
logpath=/home/dmdba/bakdb_script/logs
#detele logs
echo "`date +%Y%m%d` start delete logs: `find $logpath -mtime +7 -name "*.log"`"
find $logpath -mtime +7 -name "*.log" -exec rm -rf {} \;
#delete dumpfile
echo "`date +%Y%m%d` start delete dumpfile: `find $dumppath -mtime +7 -name "*.dmp"`"
find $dumppath -mtime +7 -name "*.dmp" -exec rm -rf {} \;
find $dumppath -mtime +7 -name "*.log" -exec rm -rf {} \;
注意:备份到另一台服务器也需要定时清除dump文件
四、在linux设置定时任务crontab
6、首次运行先执行crontab -e,按esc,按:,输入wq
7、crontab -l 查看定时任务
8、Crontab -e 编译定时任务
五、其他说明
9、Cron表达式
秒分时日月周年
*/5 6-9 * 12 1~5
每年12月周一到周五6点到9点每隔5分钟执行一次
10、各个脚本编写完成之后需要赋予执行权限
Chmod a+x 文件名 所有用户赋予执行权限
Chmod +x 文件名 当前用户赋予执行权限
11、定时删除脚本
# 命令格式
find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \;
# 示例命令,将/home/kafka/logs目录下所有10天前带"."的文件删除
find /home/kafka/logs -mtime +10 -name "*.*" -exec rm -rf {} \;
find:Linux的查找命令,用户查找指定条件的文件
/home/kafka/logs:想要进行清理的任意目录
-mtime:标准语句写法
+10:查找10天前的文件,这里用数字代表天数,+30表示查找30天前的文件
"*.*":希望查找的数据类型,".jpg"表示查找扩展名为jpg的所有文件,""表示查找所有文件,-exec:固定写法
rm -rf:强制删除文件,包括目录
{} \;:固定写法;
11、安装yum install expept
Linux 使用scp命令定时将文件备份到另一台服务器,A为主服务器,B为备份服务器,需要每天定时将A上的文件备份到B上。首先在A上安装expept
yum install expect
12、看linux服务器是否能访问外网
ping www.baidu.com