Linux 自动备份 Oracle 数据库至阿里云 OSS Shell 脚本

之前发过一篇文章,Linux 自动备份 Oracle 数据库 Shell 脚本,在这里,稍微改良一下,备份好的文件,上传至阿里 OSS(对象存储) 中。

这里主要是利用阿里 OSSUtil 命令行工具:工具详细描述。官网工具里面有很多详细的操作文档。

安装(Linux操作系统)

 
  1. wget http://gosspublic.alicdn.com/ossutil/1.6.18/ossutil64 # 下载工具
  2.  
  3. chmod 755 ossutil64 # 文件可执行权限授权

配置

 
  1. ./ossutil64 config

1:请输入配置文件名,文件名可以带路径(默认为:/root/.ossutilconfig,回车将使用默认配置文件。如果用户设置为其它文件,在使用命令时需要将–config-file选项设置为该文件)

默认即可,我这里路径就是:/root/.ossutilconfig

2:请输入语言(CH/EN,默认为:CH,该配置项将在此次 config 命令成功结束后生效):

默认即可:CH

3:请输入endpoint:oss-cn-shenzhen-internal.aliyuncs.com

地域节点。在 Bucket 基础数据可以查看;
我这里使用的是 VPC 内网,是因为 ECS 服务器 跟 OSS 的 Bucket 都在同一个区域,否则需要使用外网:oss-cn-shenzhen.aliyuncs.com

4:请输入accessKeyID:LT***GK**N***Lhy****paZ7

具体创建教程可查看:创建 AccessKey

5:请输入accessKeySecret:e***4lM****QZBP****Xe***o138*

创建教程同上:创建 AccessKey

6:请输入stsToken:

非必配项,若采用STS临时授权方式访问OSS需要配置该项,否则置空即可。stsToken生成方式参见:临时访问凭证

查看配置文件

 
  1. cat /root/.ossutilconfig
  2.  
  3. [Credentials]
  4. language=CH
  5. endpoint=oss-cn-shenzhen-internal.aliyuncs.com
  6. accessKeyID=LT***GK**N***Lhy****paZ7
  7. accessKeySecret=e***4lM****QZBP****Xe***o138*

配置完毕

测试上传文件(cp 命令):cp 命令用于上传、下载、拷贝文件。

单个文件上传:

 
  1. ./ossutil cp izpan.txt oss://bucketName/izpan.txt

递归文件夹上传:

 
  1. ./ossutil cp -r izpan/ oss://bucketName/izpan

文件下载:oss 目录与本地目录位置互换

 
  1. ./ossutil cp -r oss://bucketName/izpan.txt izpan/

bucketName 指的是您的 Bucket 名称

更多 cp 命令的用户可查看文档


Oracle Shell 脚本

以上是 OSSUtil 工具的简单使用说明。配合下我们的 Oracle 备份 Shell 脚本,完成自动备份并上传 OSS 的动作

 
  1. #!/bin/sh
  2. export ORACLE_BASE=/mnt/u01/app/oracle
  3. export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
  4. export ORACLE_SID=orcl
  5. export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
  6. export ORACLE_DIRECTORY=bakdir
  7. # 备份目录
  8. export DATA_DIR=/mnt/backup/bakdir
  9. # 当前脚本目录(OSSUtil)
  10. export SHELL_DIR=/mnt/backup/bakdir
  11. # 删除备份时间 30 天
  12. export DEL_TIME=`date -d "30 days ago" +%Y%m%d`
  13. # 备份时间
  14. export BAKUP_TIME=`date +%Y%m%d%H%M%S`
  15. # 字符编码
  16. export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
  17. # 账号
  18. export db_user="test"
  19. # 密码
  20. export db_password="123456"
  21. # db schemas
  22. export db_schemas="data_schemas"
  23. # oss bucket name
  24. export OSS_BUCKET_NAME="izpan-database-bak"
  25.  
  26. mkdir -p $DATA_DIR
  27. echo "-- $(date +'%Y%m%d%H%M%S') 自动备份数据库并压缩开始 " >> $DATA_DIR/BAK_LOG.txt;
  28. echo "------------------------------------------------------------------" >> $DATA_DIR/BAK_LOG.txt;
  29. echo "-- $(date +'%Y%m%d%H%M%S') 开始备份的文件名:$DATA_DIR/${ORACLE_SID}_${BAKUP_TIME}.dmp" >> $DATA_DIR/BAK_LOG.txt;
  30. echo "Bakup file path $DATA_DIR/${ORACLE_SID}_${BAKUP_TIME}.dmp"
  31. expdp $db_user/$db_password@$ORACLE_SID schemas=$db_schemas directory=$ORACLE_DIRECTORY dumpfile=${ORACLE_SID}_${BAKUP_TIME}.dmp logfile=${ORACLE_SID}_${BAKUP_TIME}.log
  32. echo "-- $(date +'%Y%m%d%H%M%S') 备份成功:$DATA_DIR/${ORACLE_SID}_${BAKUP_TIME}.dmp" >> $DATA_DIR/BAK_LOG.txt;
  33. echo "------------------------------------------------------------------" >> $DATA_DIR/BAK_LOG.txt;
  34. echo "-- $(date +'%Y%m%d%H%M%S') 开始进行压缩:$DATA_DIR/${ORACLE_SID}_${BAKUP_TIME}.dmp -> tar.gz" >> $DATA_DIR/BAK_LOG.txt;
  35. cd $DATA_DIR && tar -czvf ${ORACLE_SID}_${BAKUP_TIME}.tar.gz ${ORACLE_SID}_${BAKUP_TIME}.dmp ${ORACLE_SID}_${BAKUP_TIME}.log
  36. echo "-- $(date +'%Y%m%d%H%M%S') 压缩成功:$DATA_DIR/${ORACLE_SID}_${BAKUP_TIME}.tar.gz" >> $DATA_DIR/BAK_LOG.txt;
  37. echo "------------------------------------------------------------------" >> $DATA_DIR/BAK_LOG.txt;
  38. echo "-- $(date +'%Y%m%d%H%M%S') 开始删除30天前备份记录文件:$DATA_DIR/${ORACLE_SID}_${DEL_TIME}.dmp" >> $DATA_DIR/BAK_LOG.txt;
  39. rm -rf $DATA_DIR/${ORACLE_SID}_${DEL_TIME}*
  40. echo "-- $(date +'%Y%m%d%H%M%S') 删除30天前备份记录文件:$DATA_DIR/${ORACLE_SID}_${DEL_TIME}.dmp 结束" >> $DATA_DIR/BAK_LOG.txt;
  41. echo "------------------------------------------------------------------" >> $DATA_DIR/BAK_LOG.txt;
  42. echo "-- $(date +'%Y%m%d%H%M%S') 开始删除当前备份记录文件:$DATA_DIR/${ORACLE_SID}_${BAKUP_TIME}.dmp" >> $DATA_DIR/BAK_LOG.txt;
  43. rm -rf $DATA_DIR/${ORACLE_SID}_${BAKUP_TIME}.dmp $DATA_DIR/${ORACLE_SID}_${BAKUP_TIME}.log
  44. echo "-- $(date +'%Y%m%d%H%M%S') 删除当前备份记录文件$DATA_DIR/${ORACLE_SID}_${BAKUP_TIME}.dmp 成功" >> $DATA_DIR/BAK_LOG.txt;
  45. echo "------------------------------------------------------------------" >> $DATA_DIR/BAK_LOG.txt;
  46. echo "-- $(date +'%Y%m%d%H%M%S') 自动备份数据库并压缩完毕 " >> $DATA_DIR/BAK_LOG.txt;
  47. echo "------------------------------------------------------------------" >> $DATA_DIR/BAK_LOG.txt;
  48. echo "-- $(date +'%Y%m%d%H%M%S') 自动上传压缩包至阿里 OSS 开始 " >> $DATA_DIR/BAK_LOG.txt;
  49. echo "------------------------------------------------------------------" >> $DATA_DIR/BAK_LOG.txt;
  50. echo "-- $(date +'%Y%m%d%H%M%S') 开始上传当前备份记录文件:$DATA_DIR/${ORACLE_SID}_${BAKUP_TIME}.tar.gz " >> $DATA_DIR/BAK_LOG.txt;
  51. cd $SHELL_DIR && ./ossutil64 cp $DATA_DIR/${ORACLE_SID}_${BAKUP_TIME}.tar.gz oss://${OSS_BUCKET_NAME}/${ORACLE_SID}_${BAKUP_TIME}.tar.gz
  52. rm -rf $DATA_DIR/${ORACLE_SID}_${BAKUP_TIME}.tar.gz
  53. echo "-- $(date +'%Y%m%d%H%M%S') 上传当前备份记录文件 $DATA_DIR/${ORACLE_SID}_${BAKUP_TIME}.tar.gz 成功" >> $DATA_DIR/BAK_LOG.txt;
  54. echo "------------------------------------------------------------------" >> $DATA_DIR/BAK_LOG.txt;
  55. echo "-- $(date +'%Y%m%d%H%M%S') 自动上传压缩包至阿里 OSS 结束 " >> $DATA_DIR/BAK_LOG.txt;
  56. echo " " >> $DATA_DIR/BAK_LOG.txt;
  57. echo " " >> $DATA_DIR/BAK_LOG.txt;

脚本输出

 
  1. -- 20200730122522 自动备份数据库并压缩开始
  2. ------------------------------------------------------------------
  3. -- 20200730122522 开始备份的文件名:/mnt/backup/bakdir/orcl_20200730122522.dmp
  4. -- 20200730122528 备份成功:/mnt/backup/bakdir/orcl_20200730122522.dmp
  5. ------------------------------------------------------------------
  6. -- 20200730122528 开始进行压缩:/mnt/backup/bakdir/orcl_20200730122522.dmp -> tar.gz
  7. -- 20200730122528 压缩成功:/mnt/backup/bakdir/orcl_20200730122522.tar.gz
  8. ------------------------------------------------------------------
  9. -- 20200730122528 开始删除30天前备份记录文件:/mnt/backup/bakdir/orcl_20200630.dmp
  10. -- 20200730122528 删除30天前备份记录文件:/mnt/backup/bakdir/orcl_20200630.dmp 结束
  11. ------------------------------------------------------------------
  12. -- 20200730122528 开始删除当前备份记录文件:/mnt/backup/bakdir/orcl_20200730122522.dmp
  13. -- 20200730122528 删除当前备份记录文件/mnt/backup/bakdir/orcl_20200730122522.dmp 成功
  14. ------------------------------------------------------------------
  15. -- 20200730122528 自动备份数据库并压缩完毕
  16. ------------------------------------------------------------------
  17. -- 20200730122528 自动上传压缩包至阿里 OSS 开始
  18. ------------------------------------------------------------------
  19. -- 20200730122528 开始上传当前备份记录文件:/mnt/backup/bakdir/orcl_20200730122522.tar.gz
  20. -- 20200730122528 上传当前备份记录文件 /mnt/backup/bakdir/orcl_20200730122522.tar.gz 成功
  21. ------------------------------------------------------------------
  22. -- 20200730122528 自动上传压缩包至阿里 OSS 结束

强烈建议:如有需放置生产环境,请在放置前,请自行测试是否可用,如造成文件丢失的,后果自负。

 

转载至https://izpan.com/article-204.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值