需求 客户原有个中心机房A,里面有台windows 服务器运行oracle 11g
在不远的机房B里有台XXG备份一体机对这个oracle进行定时备份,但是由于XXG备份一本体过保且备份故障无法继续了。
客户想要实现一个简易的备份,并能存储到B机房的服务器中,以防止数据丢失。
简易RMAN设计 由于数据库不是很大,实际的数据量只有几十G,于是计划如下:
1、在A中心的数据库服务器上配置定时RMAN备份
2、在B中心的服务器上配置FTP,并打通A中心数据库服务器到B中心FTP的网络
3、配置A中心的数据库RMAN备份后,进行RAR压缩备份,再上传备份包到B中心的FTP上
4、A中心的数据库服务器保留15天备份。B中心的备份一直保留。
A中心的数据库服务器新建如下
1 2 3 4 5 6 7 8 9 --备份目录 F:\BACKUP --FTP上传日志记录 F:\backup\FTP-LOG --存储相关的执行脚本 F:\scriptr\rman_backup_full.bat //备份执行脚本 F:\script\Dbfull.rman //备份脚本 F:\script\ftp.bat //FTP上传脚本 F:\script\clear15.bat //定时清理
配置脚本 1、创建备份脚本
备份脚本F:\script\Dbfull.rman
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 run{ allocate channel c1 type disk; backup incremental level 0 tag 'db0' format 'f:\backup\rman_backup_db%u_%s_%p.dbf'database include current controlfile; release channel c1; sql 'alter system archive log current'; allocate channel c10 type disk; backup filesperset 50 format 'f:\backup\rman_backup_arch%u_%s_%p.dbf' archivelog all delete input; release channel c10; } run{ allocate channel t1 type disk; allocate channel t2 type disk; allocate channel t3 type disk; report obsolete; crosscheck backup; crosscheck archivelog all; delete noprompt obsolete; delete noprompt expired backup; delete noprompt expired archivelog all; release channel t1; release channel t2; release channel t3; }
执行任务脚本F:\scriptr\rman_backup_full.bat
1 rman target / log='F:\backup\FTP-LOG\RMAN_BACKUP_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%".log' cmdfile=f:\script\Dbfull.rman
FTP定时上传任务脚本F:\script\ftp.bat
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 "c:\Program Files (x86)\WinRAR\Rar.exe" a -ep -df -m0 F:\backup\RMAN_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%.rar F:\backup\*.log F:\backup\*.dbf set FILENAME=RMAN_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%.rar echo open 10.10.1.253 >>F:\script\ftp.txt echo ftpuser>>F:\script\ftp.txt echo Jiacheng2022>>F:\script\ftp.txt echo bin >>F:\script\ftp.txt echo prompt off >>F:\script\ftp.txt echo lcd f:\backup >>F:\script\ftp.txt echo mput %FILENAME% >>F:\script\ftp.txt echo prompt on >>F:\script\ftp.txt echo bye >>F:\script\ftp.txt echo quit >>F:\script\ftp.txt ftp -s:F:\script\ftp.txt >F:\backup\FTP-LOG\ftp_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%.log 2>F:\backup\FTP-LOG\err_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%.log del f:\script\ftp.txt
保留15天备份脚本F:\script\clear15.bat
1 forfiles /p "F:\backup" /m *.rar /d -15 /c "cmd /c del @path"
最后在windows上创建三个定时任务:
1、每天定时备份oracle脚本:\scriptr\rman_backup_full.bat
2、定时FTP上传脚本F:\script\ftp.bat (与第一个任务时间错开)
3、定时清理空间F:\script\clear15.bat
最后就是告诉运维工程师,定期检查F:\BACKUP\FTP-LOG目录,看看有没有报错即可。
总结 这个就是个纯简易方案,还是存在不少缺陷
1、没有任何的纠错机制,各个脚本之间独立运行,一步报错后面步步错。
2、任务之间的时间间隔要自己提前计算好
3、还需要运维工程师定期检查
当然,白嫖还想要啥,哈哈!对付能用就行。
欢迎联系我一起讨论。我的微信号:Eric_xu_2023
也欢迎关注我的公众号: