|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的好朋友们!之前公司用的一个网上找的MySQL主动备份到FTP的Shell剧本,一向用着不错。可是成绩就是跟着备份文件的愈来愈多,不能不按期清算FTP上的老备份文件,非常的方便。
实践上MySQL备份无需保存太长工夫的,假如能有主动清算旧的备份文件的功效就行了。不外网上找了一下,固然也有这方面的剧本,不外大概不太切合我的需求吧。因而只能本人手动改下之前的谁人Shell剧本来完成咯。
起首我们要断定保存备份的工夫,我以为一个月的备份保存就充足了。由于基础不会呈现1个月后要规复1个月之前备份的情形。(假如有请本人手动备份,究竟主动备份仍是不克不及代替手动备份的局部)。那末我们的思绪就出来了:在上传以当天日期为文件名的备份的时分,特地删除下一个月之前的同日期备份,就能够确保办事器上保存的是比来一个月的备份了。
然后我们必要晓得Linux下的一个下令:date。这是个能够检察以后办事器的工夫日期信息的下令。固然这里我们必要晓得的是这个下令的参数,究竟我们必要失掉的是日期局部。
输出上面这个下令,能够看到“年-月-日”的输出,相似“2011-09-09”:那末,假如我们要失掉1个月之前的日期怎样办呢?利用上面的这条下令就能够失掉:date-dlast-month+%Y-%m-%d 怎样?复杂吧。实践备份的时分,由于之前剧本利用的是“m-d-Y”的情势,也就是“月-日-年”的情势,以是我略微做了下调剂。可是上面这个Shell剧本中的是依照“年-月-日”来发生文件名的。
因而,给出全部备份Shell剧本,必要的伴侣只必要填写下有中文申明的局部,便可在本人的Linux办事器上利用。利用举措:复制到某个目次下,然后赐与实行权限,再在cron中设置天天指准时间运转便可。(关于这局部,请自行查找相干申明,这里不再复述)
带主动清算功效的MySQL备份到FTP的Shell剧本以下:
- #!/bin/bashMyUSER="db_username"#数据库用户名,倡议利用root账户大概具有全局权限的用户名MyPASS="db_password"#数据库暗码MyHOST="localhost"#数据库办事器#Linuxbinpaths,changethisifitcantbeautodetectedviawhichcommandMYSQL="$(whichmysql)"MYSQLDUMP="$(whichmysqldump)"CHOWN="$(whichchown)"CHMOD="$(whichchmod)"GZIP="$(whichgzip)"#数据库备份的路径DEST="/home/backup"#MaindirectorywherebackupwillbestoredMBD="$DEST/mysql"#GethostnameHOST="$(hostname)"#Getdataindd-mm-yyyyformatNOW="$(date+%d-%m-%Y)"OLD="$(date-dlast-month+%d-%m-%Y)"#FiletostorecurrentbackupfileFILE=""#StorelistofdatabasesDBS=""#DONOTBACKUPthesedatabasesIGGY="test"rm-rf$MBD[!-d$MBD]&&mkdir-p$MBD||:#Onlyrootcanaccessit!$CHOWN0.0-R$DEST$CHMOD0600$DEST#GetalldatabaselistfirstDBS="$($MYSQL-u$MyUSER-h$MyHOST-p$MyPASS-Bseshowdatabases)"cat>ftpcc.sh<<EOFcd$MBDftp-i-n<<!openblog.renhao.org#在这里填写FTP办事器的域名或IPuserftp_userftp_pass#在这里填写FTP用户名和暗码,注重空格分开binarymput*.gzEOFfordbin$DBSdoskipdb=-1if["$IGGY"!=""];thenforiin$IGGYdo["$db"="$i"]&&skipdb=1||:donefiif["$skipdb"="-1"];thenFILE="$MBD/$db.$HOST.$NOW.gz"echo"delete$db.$HOST.$OLD.gz">>ftpcc.sh#doallinonejobinpipe,#connecttomysqlusingmysqldumpforselectmysqldatabase#andpipeitouttogzfileinbackupdir:)$MYSQLDUMP-u$MyUSER-h$MyHOST-p$MyPASS$db|$GZIP-9>$FILEfidonecat>>ftpcc.sh<<EOFclosebye!EOFshftpcc.shrmftpcc.sh
复制代码
如许的Shell剧本运转后,能够失掉每一个MySQL库的自力备份文件,且以gz格局紧缩以便节俭空间。
如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的小伙伴们! |
|