一、项目背景:
1.1 客户需求:
将物理机房生产环境的Oracle/MysqL及阿里云的RDS数据库备份出来,存储到一个集中数据库存储服务器,实现异地备份,并且在还原环境内要将MysqL/Oracle以及阿里云RDS备份数据还原到测试环境,并判断还原数据库是否存在异常,检验数据的一致性,如有异常邮件或微信告警,每周生成Excel报表发送给负责人。
1.2 需求要点:
网络通信:阿里金融云/公有云/物理机房环境网络须在固定网段互通。
网络安全:各个网段隔离,有需求通信的网段开放通信,需实现端口级别控制。
数据传输:采用定时crond+scp+rsync配合传输。
数据校验:保障数据库还原成功的可靠性。
1.3 解决方案:
网络通信:在阿里云端,采用深信服IPSec VPN与物理机房Cisco设备隧道互通。开通传输网段,将此网段作为网络传输中转网段。
网络安全:各个网段隔离,如有跨地区或机房相互通信的需求,需将此环境下的数据传输到中转网段,再实现数据传输。使用阿里云安全组deny any,开通需要通信的白名单端口。
数据传输:采用定时crond+scp+rsync配合传输。
数据校验:导入文件存在日志,查看日志与比对库数目。
监控告警:采用smarteye自定义监控,监控VPN状况,同事采用自定义脚本+数据库还原异常告警。如果VPN中断或数据库恢复异常发送短信,邮件,微信消息通知管理员。
报表生成:每日脚本将数据库还原日志文件进行处理,最终打包统一传输到一个Python环境下,利用自编写Python脚本处理文件数据,生成报表,每周发送给管理员。
二、逻辑拓扑:
2.1 Oracle数据库备份还原:
2.1 Oracle数据库备份还原:
三、技术细节:
3.1 Oracle数据库备份还原:
- createuserbackuseridentifiedbypwdbackuser;
默认情况下用户创建好后系统会默认给该用户分配一个表空间(users);
查看用户表空间:
- selectusername,default_tablespacefromdba_users;
需要为创建的用户创建自己的表空间:
- createtablespacebaktablesdatafile'/data/bakdir/baktab_data.dbf'size200M;
- grantcreatesession,createtable,createview,createsequence,unlimitedtablespacetobackuser;
将创建好的表空间分配给用户:
- alteruserbackuserdefaulttablespacebaktables;
创建Oracle数据库备份目录:
- createdirectorydump_diras'/backup/backup_dir';
查看备份目录:
- select*fromdba_directories;
授权备份用户对备份目录具有读写权限:
- Grantread,writeondirectorydump_dirtobackuser;
使用expdp导出数据库:
- expdpbackuser/pwdbackuserSCHEMAS=DB1dumpfile=DB1.dmpdirectory=dump_dirlog=DB1.log
查看备份日志:
Oracle自动备份脚本示例:
- #!/bin/bash
- exportORACLE_BASE=/u01/app/oracle
- exportORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
- exportORACLE_SID=ORCL
- exportPATH=$ORACLE_HOME/bin:$PATH
- filename=`date+%Y-%m-%d`'.dmp'
- logname=`date+%Y-%m-%d`'.log'
- dump_dir="/backup/backup_dir/"
- backdir="dump_dir"
- forSchameinDB1....DB2
- do
- /u01/app/oracle/product/11.2.0/db_1/bin/expdpbackuser/pwdbackuserSCHEMAS=${Schame}dumpfile=${Schame}-${filename}directory=${backdir}log=${Schame}-${logname}
- find${dump_dir}-mtime+7-name"*.dmp"-execrm-rf{}\;
- find${dump_dir}-mtime+7-name"*.log"-execrm-rf{}\;
- done
Oracle 备份检查脚本:
- #!/bin/bash
- DATE=`date+%F`
- MON=`date+%Y-%m`
- M_date=`date+%Y/%m/%d`
- DIR='/backup/backup_dir/'
- FDIR='/backup/Oracle_Excel/'
- if[!-d${FDIR}];then
- mkdir-p${FDIR}
- fi
- O_FILE='/backup/Oracle_Excel/tmp_OracleB.txt'
- #Oracle
- END_TIME=`find${DIR}-name"*-${DATE}.dmp"-execls-l{}\;|awk'{print$8}'|sort-r|head-1`
- FILE=`find${DIR}-name"*-${DATE}.dmp"-execls{}\;|awk'{printf("%s",$1)}'`
- #O_SIZE=`find${DIR}-name"*-${DATE}.dmp"-execdu{}\;|awk'{sum+=$1}END{printsum/1024"M"}'`
- O_SIZE=`find${DIR}-name"*-${DATE}.dmp"-execdu-sh{}\;|awk'{printf("%s",$1)}'`
- #writefile
- echo-e"${M_date},ORACLE,分库备份,(逻辑)每天,22:00:00,${END_TIME},成功,${FILE},否,${O_SIZE},否\n\c">>${O_FILE}
- Week=`date+%w`
- if[${Week}-eq0];then
- if[!-d${FDIR}${DATE}];then
- mkdir-p${FDIR}${DATE}
- fi
- mv${O_FILE}${FDIR}${DATE}
- /usr/bin/zip-r${FDIR}OracleB_${DATE}.zip${FDIR}${DATE}/*
- if[$?-eq0];then
- /usr/bin/scp${FDIR}OracleB_${DATE}.ziproot@192.168.11.11:/user/backup/oracle/Oracle_Excel
- fi
- rm-rf${FDIR}OracleB_${DATE}.zip
- fi
查看数据存储服务器:
脚本拆分开,在那个步失败,可以单独进行恢复统一进行调用:
SCP传输
- #!/bin/bash
- fdate=`date+%Y-%m-%d-d'-1day'`
- /usr/bin/scp-P2621root@172.16.84.12:/backup/backup_dir/*-${fdate}.dmp/user/backup/oracle/oraclebak
分类归档压缩:
- #!/bin/bash
- fdate=`date+%Y-%m-%d-d'-1day'`
- filename=`date+%Y-%m-%d-d'-1day'`'.dmp'
- dump_dir="/user/backup/oracle/oraclebak"
- I=`ls/user/backup/oracle/oraclebak/|grep$filename|awk-F'-''{print$1}'|uniq`
- cd${dump_dir}
- forSchamein${I[*]}
- do
- tarzcf${Schame}-$filename.tar.gz${Schame}-$filename
- done
- find${dump_dir}-name"*.dmp"-execrm-rf{}\;
- find${dump_dir}-mtime+7-name"*.dmp.tar.gz"-execrm-rf{}\;
rsync进行断点传输:
- #!/bin/bash
- #Data=`date+%Y-%m-%d""%H:%m`
- dir="/user/backup/oracle/"
- fdate=`date+%Y-%m-%d-d'-1day'`
- filename=`date+%Y-%m-%d-d'-1day'`'.dmp'
- /usr/bin/rsync-rP--timeout=3600--rsh=ssh/user/backup/oracle/oraclebak/DB1-${fdate}.dmp.tar.gzroot@172.17.130.130:/DATA/oracle/oracle_bak&&echo"$DataDB1rsyncissuccess!">>${dir}Logdir/oracle-rsync.log
- if["$?"=="0"];then
- Data=`date+%Y-%m-%d""%H:%m`
- /usr/bin/rsync-rP--timeout=3600--rsh=ssh/user/backup/oracle/oraclebak/DB2-${fdate}.dmp.tar.gzroot@172.17.130.130:/DATA/oracle/oracle_bak&&echo"$DataDB2rsyncissuccess!">>${dir}Logdir/oracle-rsync.log
- if["$?"=="0"];then
- unsetData
- Data=`date+%Y-%m-%d""%H:%m`
- /usr/bin/rsync-rP--timeout=3600--rsh=ssh/user/backup/oraclebak/DB3-${fdate}.dmp.tar.gzroot@172.17.130.130:/DATA/oracle/oracle_bak&&echo"$DataDB3rsyncissuccess!">>${dir}Logdir/oracle-rsync.log
- if["$?"=="0"];then
- unsetData
- Data=`date+%Y-%m-%d""%H:%m`
- echo"$Datarsyncissuccess!">>${dir}Logdir/oracle-rsync.log
- fi
- fi
- fi
总体调用:
- #!/bin/bash
- #Data=`date+%Y-%m-%d""%H:%m`
- dir="/user/backup/oracle/"
- /bin/bash${dir}1_oracle_scp.sh
- if["$?"=="0"];then
- Data=`date+%Y-%m-%d""%H:%m`
- echo"$Data1_oracle_scp.shisexecsuccess!">>${dir}Logdir/oracle-back.log&&/bin/bash${dir}2_oracle_tar.sh
- if["$?"=="0"];then
- unsetData
- Data=`date+%Y-%m-%d""%H:%m`
- echo"$Data2_oracle_tar.shisexecsuccess!">>${dir}Logdir/oracle-back.log&&/bin/bash${dir}3_oracle_rsync.sh
- if["$?"=="0"];then
- unsetData
- Data=`date+%Y-%m-%d""%H:%m`
- echo"$Data3_oracle_rsync.shisexecsuccess!">>${dir}Logdir/oracle-back.log
- fi
- fi
- fi
在还原服务器进行Oracle数据库还原:
首先初步核查传输过来的库数目及文件大小是否异常,如果异常可以进行重新拉取:
- #!/bin/bash
- oracle_path="/DATA/oracle/oracle_bak/"
- Data=`date+%Y-%m-%d""%H:%M`
- dir="/user/backup/oracle/"
- fdate=`date+%Y-%m-%d-d'-1day'`
- check_data=`date+%Y-%m-%d-d'-3day'`
- check_size=`du-sh/DATA/oracle/oracle_bak/${check_data}/|awk'{print$1}'|cut-dM-f1|awk-F.'{print$1}'`
- filename=`date+%Y-%m-%d-d'-1day'`'.dmp'
- NUM=`ls${oracle_path}*.tar.gz|wc-l`
- SIZE=`du-sh/DATA/oracle/oracle_bak/${fdate}/|awk'{print$1}'|cut-dM-f1|awk-F.'{print$1}'`
- if["$NUM"!="3"]||[$SIZE-lt${check_size}];then
- /usr/bin/rsync-ravP--timeout=3600--rsh=sshroot@10.199.75.14:/user/backup/oracle/oraclebak/DB1-${fdate}.dmp.tar.gz${oracle_path}
- if["$?"=="0"];then
- /usr/bin/rsync-ravP--timeout=3600--rsh=sshroot@10.199.75.14:/user/backup/oracle/oraclebak/DB2-${fdate}.dmp.tar.gz${oracle_path}
- if["$?"=="0"];then
- /usr/bin/rsync-ravP--timeout=3600--rsh=sshroot@10.199.75.14:/user/backup/oracle/oraclebak/DB3-${fdate}.dmp.tar.gz${oracle_path}
- fi
- fi
- fi
解压传输过来的数据库:
- #!/bin/bash
- #数据库存储文件
- oracle_path="/DATA/oracle/oracle_bak/"
- #数据库恢复目录
- repath="/DATA/oracle/oracle_restore/"
- #数据库导入目录
- backdir="/home/oracle/app/backup_dir/"
- #数据库归档文件命名
- dadir=`date+%Y-%m-%d-d-1day`
- #数据库导入日志目录
- implogdir="/DATA/oracle/implogdir/"
- oraclecmd="/home/oracle/app/oracle/product/12.1.0/dbhome_1/bin/sqlplus"
- if[!-d${implogdir}${dadir}];then
- mkdir-p${implogdir}${dadir}
- fi
- if[!-d${repath}];then
- mkdir-p${repath}
- fi
- if[!-d${oracle_path}${dadir}];then
- mkdir${oracle_path}${dadir}
- fi
- if[!-d${repath}${dadir}];then
- mkdir${repath}${dadir}
- fi
- #把压缩文件存放在日期目录
- sudochown-Roracle:dba${oracle_path}*
- cd${oracle_path}
- mv*-"$dadir".dmp.tar.gz$dadir
- #把压缩文件解压到还原目录
- cd${oracle_path}${dadir}
- oracle=`ls`
- forIin${oracle[*]}
- do
- /bin/tarzxf$I-C${repath}${dadir}
- done
- cp${repath}${dadir}/*${backdir}
进行Oracle还原库用户初始化:(此处列两个库做说明)
- #!/bin/bash
- exportORACLE_BASE=/home/oracle/app
- exportORACLE_HOME=$ORACLE_BASE/oracle/product/12.1.0/dbhome_1
- exportORACLE_SID=ORCL
- exportPATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
- #数据库恢复目录
- repath="/DATA/oracle/oracle_restore/"
- #数据库导入目录
- backdir="/home/oracle/app/backup_dir/"
- #数据库归档文件命名
- dadir=`date+%Y-%m-%d-d-1day`
- #数据库导入日志目录
- implogdir="/DATA/oracle/implogdir/"
- oraclecmd="/home/oracle/app/oracle/product/12.1.0/dbhome_1/bin/sqlplus"
- cd${backdir}
- fordbinDB1...DBn
- do
- if["$db"=="DB1"];then
- sqlplus-S/nolog<<EOF
- conn/assysdba
- dropuser${db}cascade;
- createuser${db}identifiedbyDBuser1;
- alteruserDB_user1defaulttablespacetab1;
- grantcreatesession,createprocedure,unlimitedtablespaceto${db};
- Grantread,writeondirectorydump_dirto${db};
- exit;
- else["$db"=="GPSUSER"];
- sqlplus-S/nolog<<EOF
- conn/assysdba
- dropuser${db}cascade;
- createuser${db}identifiedbyDBuser2;
- alteruserDBdefaulttablespacetab2;
- grantcreatesession,writeondirectorydump_dirto${db};
- exit;
- EOF
- fi
- done
Oracle数据库采用impdp进行导入:
- #!/bin/bash
- exportORACLE_BASE=/home/oracle/app
- exportORACLE_HOME=$ORACLE_BASE/oracle/product/12.1.0/dbhome_1
- exportORACLE_SID=glpfin
- exportPATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
- #数据库存储文件
- oracle_path="/DATA/oracle/oracle_bak/"
- #数据库恢复目录
- repath="/DATA/oracle/oracle_restore/"
- #数据库导入目录
- backdir="/home/oracle/app/backup_dir/"
- #数据库归档文件命名
- dadir=`date+%Y-%m-%d-d'-1day'`
- #数据库导入日志目录
- implogdir="/DATA/oracle/implogdir/"
- oraclecmd="/home/oracle/app/oracle/product/12.1.0/dbhome_1/bin/sqlplus"
- I=`ls/DATA/oracle/oracle_restore/$dadir/|grep$dadir|awk-F'-''{print$1}'|uniq`
- cd${backdir}
- fordbin${I[*]}
- do
- impdpsystem/51idc.comdirectory=dump_dirdumpfile=${db}-${dadir}.dmplogfile=import-${db}-${dadir}.log
- rm-rf${backdir}${db}-${dadir}.dmp&&mvimport-${db}-${dadir}.log${implogdir}${dadir}
- /bin/mail-rxuel@anchnet.com-s"Oracle-${db}-backup-mail"oraclebak@anchnet.com<${implogdir}${dadir}/import-${db}-${dadir}.log
- done
- find${oracle_path}-mtime+30-name"*.tar.gz"-execrm-rf{}\;
- find${implogdir}-ctime+30-typed-execrm-rf{}\;
- find${repath}-mtime+7-name"*.dmp"-execrm-rf{}\;
- find${repath}-typed-mtime+7-execrm-rf{}\;
分析导入log,处理后写入文件
- #!/bin/bash
- date=`date+%Y/%m/%d""%H:%M`
- Logdir="/DATA/oracle/Logdir/"
- dadir=`date+%Y-%m-%d-d'-1day'`
- implogdir="/DATA/oracle/implogdir/"
- if[-d${implogdir}${dadir}];then
- File=`ls${implogdir}${dadir}|grep${dadir}|awk-F'-''{print$2}'|uniq`
- forIin${File[*]}
- do
- echo${date}>>${Logdir}${I}-import.log
- tail-1${implogdir}${dadir}/import-${I}-${dadir}.log>>${Logdir}${I}-import.log
- done
- fi
VPN监控脚本:
- #!/bin/bash
- IP=10.199.75.14
- dir="/DATA/oracle/netdir/"
- if[!-d${dir}];then
- mkdir-p${dir}
- fi
- echo1>${dir}ping.lock
- whiletrue
- do
- Time=`date+%F`
- TIME="${Time}23:59"
- if["${data}"=="${TIME}"];then
- mkdir${dir}${Time}&&mv${dir}ping2.log${dir}${Time}-ping2.log
- mv${dir}${Time}-ping2.log${dir}${Time}
- fi
- find${dir}-mtime+7-name"*-ping2.log"-execrm-rf{}\;
- find${dir}-mtime+7-typed-execrm-rf{}\;
- data=`date+%F''%H:%M`
- data1=`date+%F''%H:%M:%S`
- echo"------------${data1}---------------">>${dir}ping2.log
- ping-c10${IP}>>${dir}ping2.log
- if[$?-eq1];then
- STAT=`cat${dir}ping.lock`
- if[${STAT}-eq1];then
- /usr/bin/python/DATA/oracle/netdir/GFweixin.pyxuelVPN-monitor"GLPfromPDC(192.168.11.11)ping金融云(10.75.128.8)中断,请检查深信服VPN!\nTIME:${
- data1}"echo0>${dir}ping.lock
- else
- continue
- fi
- else
- STAT=`cat${dir}ping.lock`
- if[${STAT}-eq0];then
- /usr/bin/python/DATA/oracle/netdir/GFweixin.pyxuelVPN-monitor"VPNmonitorfrom物理机(192.168.11.11)ping金融云(10.199.75.14)恢复!\nTIME:${data1}"
- echo1>${dir}ping.lock
- else
- continue
- fi
- fi
- done
如有异常会发送告警:
微信告警:
短信告警:
日志收集脚本:
- #!/bin/bash
- DATE=`date+%F`
- MON=`date+%Y-%m`
- FDIR='/user/backup/MysqL/MysqL_Excel/'
- if[!-d${FDIR}];then
- mkdir-p${FDIR}
- fi
- DIR='/user/backup/MysqL/sub-treasury/'
- MysqL_FILE='/user/backup/MysqL/MysqL_Excel/tmp_MysqLB.txt'
- M_date=`date+%Y/%m/%d`
- M_SIZE=`find${DIR}-name"*-${DATE}.sql.tar.gz"-execdu{}\;|awk'{sum+=$1}END{printsum/1024"M"}'`
- #writefile
- echo-e"${M_date},MysqL,分库备份(逻辑),每天,22:02:00,${DIR}*-${DATE}.sql.tar.gz,是,${M_SIZE},否\n\c">>${MysqL_FILE}
- Week=`date+%w`
- if[${Week}-eq0];then
- if[!-d${FDIR}${DATE}];then
- mkdir-p${FDIR}${DATE}
- fi
- mv${MysqL_FILE}${FDIR}${DATE}
- /usr/bin/zip-r${FDIR}MysqLB_${DATE}.zip${FDIR}${DATE}/*
- if[$?-eq0];then
- /usr/bin/scp${FDIR}MysqLB_${DATE}.ziproot@172.16.6.150:/DATA/oracle/Excel/MysqL_ZIP
- fi
- rm-rf${FDIR}MysqLB_${DATE}.zip
- fi
集中处理文件脚本:
- #!/bin/bash
- DATE=`date+%F`
- LDATE=`date+%F-d'-1day'`
- MON=`date+%Y-%m`
- DIR='/DATA/oracle/Excel/'
- tmp_dir='/DATA/oracle/Excel/Tmp_restore/'
- res_dir='/DATA/oracle/Excel/Totle_restore/'
- ZIP='/usr/bin/unzip'
- zipfunction(){
- $ZIP$1-d${tmp_dir}
- TXT=`find${tmp_dir}-nametmp_*.txt`
- cp$TXT${res_dir}
- rm-rf${tmp_dir}*
- }
- foriin`find${DIR}-name*_${LDATE}.zip-execls{}\;`
- do
- zipfunction$i
- done
- cd${DIR}scripts/
- if[$?-eq0];then
- /bin/python34${DIR}scripts/GLP_excel.py
- fi
- if[!-d${DIR}scripts/${MON}];then
- mkdir-p${DIR}scripts/${MON}
- fi
- mv${DIR}scripts/Oralce_bak.xlsx${DIR}scripts/${MON}/GLP_${DATE}.xlsx
- cd${DIR}scripts/${MON}/
- /bin/mailx-rxuel@anchnet.com-s"Oracle-Excel-report"-a${DIR}scripts/${MON}/GLP_${DATE}.xlsxOraclebak@anchnet.com<${DIR}scripts/${MON}/GLP_${DATE}.xlsx
- rm-rf${DIR}Totle_restore/*
Python脚本将文件集中处理生成Excel:(python写的不是很好,初步完成生成报表功能。)
- #!/bin/envpython34
- importxlsxwriter
- #定义excel对象workbook
- workbook=xlsxwriter.Workbook("Oracle.xlsx")
- #MysqLsheet格式定义
- worksheet_M=workbook.add_worksheet('MysqL备份详情表')
- worksheet_M.set_column('A:K',12)
- worksheet_M.set_row(0,17)
- worksheet_M.set_column('C:C',20)
- worksheet_M.set_column('H:H',58)
- #MysqLDWsheet格式定义
- worksheet_MDW=workbook.add_worksheet('MysqL-DW备份详情表')
- worksheet_MDW.set_column('A:K',12)
- worksheet_MDW.set_row(0,17)
- worksheet_MDW.set_column('C:C',20)
- worksheet_MDW.set_column('H:H',58)
- #Oraclesheet格式定义
- worksheet_O=workbook.add_worksheet('ORACLE备份详情表')
- worksheet_O.set_column('A:K',12)
- worksheet_O.set_row(0,17)
- worksheet_O.set_column('G:H',40)
- worksheet_O.set_column('C:C',16)
- #NFSsheet格式定义
- worksheet_N=workbook.add_worksheet('NFS备份详情表')
- worksheet_N.set_column('A:K',14)
- worksheet_N.set_row(0,17)
- worksheet_N.set_column('H:H',59)
- #定义表头格式
- merge_format=workbook.add_format({
- 'bold':1,'border':1,'align':'center','valign':'vcenter','fg_color':'#FAEBD7'
- })
- #表各项目名称格式
- name_format=workbook.add_format({
- 'bold':1,'fg_color':'#E0FFFF'
- })
- #表内容格式
- normal_format=workbook.add_format({
- 'align':'center'
- })
- #写入个表项目名称函数
- defset_title(file_list,row,col,worksheet):
- foriinfile_list:
- worksheet.write(row,i,name_format)
- col+=1
- #写入表内容函数
- defset_content(file_content,worksheet):
- withopen(file_content,'r')asF:
- foriinF:
- listnum=list(i.split(','))
- col=0
- forjinlistnum:
- worksheet.write(row,j,normal_format)
- col+=1
- row+=1
- #写入MysqLsheet表头
- worksheet_M.merge_range('A1:K1','MysqL备份详情表',merge_format)
- worksheet_M.merge_range('A12:K12','MysqL还原详情表',merge_format)
- #写入MysqLDWsheet表头
- worksheet_MDW.merge_range('A1:K1','MysqL-DW备份详情表',merge_format)
- worksheet_MDW.merge_range('A12:K12','MysqL-DW还原详情表',merge_format)
- #写入Oraclesheet表头
- worksheet_O.merge_range('A1:K1','ORACLE备份详情表',merge_format)
- worksheet_O.merge_range('A11:K11','ORACLE传输详情表',merge_format)
- worksheet_O.merge_range('A21:K21','ORACLE还原详情表',merge_format)
- #写入NFSsheet表头
- worksheet_N.merge_range('A1:J1','NFS备份详情表',merge_format)
- worksheet_N.merge_range('A12:J12','vsftp备份详情表',merge_format)
- #定义MysqL表各项目名称
- MysqL_Baklist=['备份日期','备份对象','备份类型','备份周期','备份开始时间','备份结束时间','备份状态','备份文件','是否压缩','备份文件大小','是否补备']
- MysqL_Reslist=['还原日期','还原对象','还原类型','还原周期','还原开始时间','还原状态','库数目','库数目对比、还原详情','补还原']
- #定义MysqL-DW表各项目名称
- MysqLDW_Baklist=['备份日期','是否补备']
- MysqLDW_Reslist=['还原日期','补还原']
- #定义Oracle表各项目名称
- Oracle_Baklist=['备份日期','是否补备']
- Oracle_Tralist=['传输日期','传输对象','类型','传输周期','开始时间','scp传输打包状态','rsync状态','rsync文件','rsync重传']
- Oracle_Reslist=['还原日期','还原详情','补还原']
- #定义NFS表各项目名称
- Rsync_list=['备份日期','日志文件','是否补备']
- Vsftp_list=['备份日期','是否补备']
- #写入MysqL表项目名称
- set_title(MysqL_Baklist,row=1,col=0,worksheet=worksheet_M)
- set_title(MysqL_Reslist,row=12,worksheet=worksheet_M)
- #写入MysqL-DW表项目名称
- set_title(MysqLDW_Baklist,worksheet=worksheet_MDW)
- set_title(MysqLDW_Reslist,worksheet=worksheet_MDW)
- #写入Oracle表项目名称
- set_title(Oracle_Baklist,worksheet=worksheet_O)
- set_title(Oracle_Tralist,row=11,worksheet=worksheet_O)
- set_title(Oracle_Reslist,row=21,worksheet=worksheet_O)
- #写入NFS表项目名称
- set_title(Rsync_list,worksheet=worksheet_N)
- set_title(Vsftp_list,worksheet=worksheet_N)
- #定义MysqL内容数据文件路径
- MysqLB_file='/DATA/oracle/Excel/Totle_restore/tmp_MysqLB.txt'
- MysqLR_file='/DATA/oracle/Excel/Totle_restore/tmp_MysqLR.txt'
- #定义MysqL-DW内容数据文件路径
- MysqLDWB_file='/DATA/oracle/Excel/Totle_restore/tmp_MysqLDWB.txt'
- MysqLDWR_file='/DATA/oracle/Excel/Totle_restore/tmp_MysqLDWR.txt'
- #定义Oracle内容数据文件路径
- OracleB_file='/DATA/oracle/Excel/Totle_restore/tmp_OracleB.txt'
- OracleT_file='/DATA/oracle/Excel/Totle_restore/tmp_OracleT.txt'
- OracleR_file='/DATA/oracle/Excel/Totle_restore/tmp_OracleR.txt'
- #定义NFS内容数据文件路径
- Rsync_file='/DATA/oracle/Excel/Totle_restore/tmp_rsync.txt'
- Vsftp_file='/DATA/oracle/Excel/Totle_restore/tmp_vsftpd.txt'
- #写入MysqL数据内容
- set_content(MysqLB_file,row=2,worksheet=worksheet_M)
- set_content(MysqLR_file,row=13,worksheet=worksheet_M)
- #写入MysqL数据内容
- set_content(MysqLDWB_file,worksheet=worksheet_MDW)
- set_content(MysqLDWR_file,worksheet=worksheet_MDW)
- #写入Oracle数据内容
- set_content(OracleB_file,worksheet=worksheet_O)
- set_content(OracleT_file,worksheet=worksheet_O)
- set_content(OracleR_file,row=22,worksheet=worksheet_O)
- #写入NFS数据内容
- set_content(Rsync_file,worksheet=worksheet_N)
- set_content(Vsftp_file,worksheet=worksheet_N)
- #关闭workbook
- workbook.close()
报表查看: