zoukankan      html  css  js  c++  java
  • Oracle RAC 实验环境RMAN备份v1.01

    Oracle RAC 实验环境RMAN备份v1.01

    环境:RHEL 6.5 + Oracle GI 11.2.0.4 + RAC 11.2.0.4 (2 nodes)
    需求:制定RAMN备份策略
    版本:v1.01
    说明:之前说过本系列的实验环境宗旨就是完全模拟生产环境,所有的操作记录在案,每次版本变更都需要详细记录。

    1.前期准备

    确认备份路径?
    备份路径是NAS存储的一个目录,通过NFS映射过来。
    /etc/fstab增加一行:

    192.168.1.196:/mnt/HD/HD_a2/Public     /public nfs rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,actimeo=0,vers=3,timeo=600
    

    注:这里之所以有很多参数,可参考:《在NAS设备上用NFS服务为RAC数据库和集群件存储oracle文件时的mount选项》
    然后创建挂载点目录,挂载:

    mkdir /public
    mount -a
    

    备份路径规划为:/public/hotback/jyzhao

    mkdir -p /public/hotback/jyzhao
    

    确认备份策略?
    根据我这里测试环境的数据量,制定出如下备份策略:

    • 制定备份保留策略为保留最近的3份备份
    • 每天11:30进行0级全备,删除保留策略之外的陈旧备份
    • 每天6:00、12:00、18:00进行归档日志备份
    • 每天13:00删除备份目录下的陈旧备份文件夹

    注:我这里的备份时间都是白天时段,是因为我的实验环境都是白天开启,晚上关机。而如果是7*24的生产环境,一般都选择晚上业务闲暇时进行定时备份。

    2.备份脚本

    依据之前的文章[《Oracle RMAN 备份一例》](http://www.cnblogs.com/jyzhao/p/3809099.html),根据本实验环境的具体情况进行备份策略和脚本的制定。 备份脚本部署在RAC节点1(192.168.1.50)的oracle用户下:

    2.1 数据库0级备份脚本
    vi db0_backup.rman

    #!/bin/bash
    #db0 level backup
    foldername=`date +%Y%m%d`
    BACKUP_BASE=/public/hotback/jyzhao
    cd $BACKUP_BASE
    if [ -d $foldername ]
    then
            echo    'go on'
    else
            echo    'need mkdir'
            mkdir $foldername
    fi
     
    export ORACLE_BASE=/opt/app/oracle
    export ORACLE_HOME=/opt/app/oracle/product/11.2.0/dbhome_1
    export ORACLE_SID=jyzhao1
    export NLS_LANG="simplified chinese_china.ZHS16GBK"
    export NLS_DATE_FORMAT="YYYY-MM-DD HH24:Mi:SS"
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32
    export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:/sbin:/bin:/usr/sbin:/usr/bin
    
    rman target /  log=$BACKUP_BASE/$foldername/full_LOG.log << RMAN_BACKUP
    run{
    CONFIGURE RETENTION POLICY TO REDUNDANCY 3;
    CONFIGURE CONTROLFILE AUTOBACKUP ON;
    CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '$BACKUP_BASE/$foldername/controlfile%F';
    allocate channel c1 device type disk;
    backup incremental level 0 tag 'db0' database format '$BACKUP_BASE/$foldername/db0_%d_%T_%s' include current controlfile;
    delete noprompt obsolete;
    release channel c1;
    }
    RMAN_BACKUP
    

    2.2 数据库归档日志备份脚本
    arch_backup.rman

    #!/bin/bash
    #arch backup
    foldername=`date +%Y%m%d`
    BACKUP_BASE=/public/hotback/jyzhao
    cd $BACKUP_BASE
    if [ -d $foldername ]
    then
            echo    'go on'
    else
            echo    'need mkdir'
            mkdir $foldername
    fi
     
    export ORACLE_BASE=/opt/app/oracle
    export ORACLE_HOME=/opt/app/oracle/product/11.2.0/dbhome_1
    export ORACLE_SID=jyzhao1
    export NLS_LANG="simplified chinese_china.ZHS16GBK"
    export NLS_DATE_FORMAT="YYYY-MM-DD HH24:Mi:SS"
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32
    export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:/sbin:/bin:/usr/sbin:/usr/bin
    
    rman target /  log=$BACKUP_BASE/$foldername/arch_LOG.log << RMAN_BACKUP
    run{
    CONFIGURE RETENTION POLICY TO REDUNDANCY 3;
    allocate channel c1 device type disk;
    sql 'alter system archive log current';
    backup archivelog all delete input format '$BACKUP_BASE/$foldername/arch_%d_%T_%s';
    release channel c1;
    }
    crosscheck archivelog all;
    delete noprompt expired archivelog all;
    RMAN_BACKUP
    

    2.3 删除历史无用文件夹
    虽然已经制定了保留策略可以删除历史的陈旧备份,但是由于我这里的备份思路是每天建立一个新的文件夹,那么久而久之就会有很多的文件夹存留,不方便查看和管理,所以这里定期在系统级别删除过期备份的空文件夹。
    比如我这里的冗余策略是3,那么我就删除5天以上都没有修改的文件夹,防止误删除有用的备份。

    vi del_old.sh

    #!/bin/bash
    #del old folders
    find /public/hotback/jyzhao/. -mtime +5
    

    2.4 赋予以上脚本可执行权限
    赋予脚本可执行的权限:

    [oracle@jyrac1 rman_scripts]$ pwd
    /home/oracle/rman_scripts
    [oracle@jyrac1 rman_scripts]$ chmod u+x *
    [oracle@jyrac1 rman_scripts]$ ls -lrth
    total 12K
    -rwxr--r-- 1 oracle oinstall 1.1K Aug  6 17:02 db0_backup.rman
    -rwxr--r-- 1 oracle oinstall   69 Aug  6 17:03 del_old.sh
    -rwxr--r-- 1 oracle oinstall  960 Aug  6 17:17 arch_backup.rman
    

    3.定时执行

    根据备份策略,编辑定时执行的语句。
    [oracle@jyrac1 ~]$ crontab -l
    30 11 * * * /home/oracle/rman_scripts/db0_backup.rman > /dev/null 2&>1#
    0 6,12,18 * * * /home/oracle/rman_scripts/arch_backup.rman > /dev/null 2&>1#
    0 13 * * * /home/oracle/rman_scripts/del_old.sh > /dev/null 2&>1#
    

    至此完成实验RAC环境RMAN备份策略的制定。

  • 相关阅读:
    AChartEngine方法的使用及事件汇总
    免费的Android UI库及组件推荐
    消灭Bug!十款免费移动应用测试框架推荐
    AChartEngine 安卓折线图 柱形图等利器
    添加几个有用的网址
    演示Android百度地图操作功能
    Android 如何在Eclipse中查看Android API源码 及 support包源码
    Android入门之GPS定位详解
    软考之数据库部分
    SSE && WebSockets
  • 原文地址:https://www.cnblogs.com/jyzhao/p/7304918.html
Copyright © 2011-2022 走看看