如何用php写一个mysql自动备份的功能?(兩個代碼參考,未測試。) - 小施Blog - 凡走过,必留下痕迹.
方法一:   可以将这个脚本放进crontab,每天凌晨执行一次,自动备份    
 
 这个脚本每天最多只执行一次,而且只保留最近五天的备份在服务器上。    
 
 代码:    
 
 
 
#!/bin/bash    
 #This   is   a   ShellScript   For   Auto   DB   Backup    
 #Powered   by   aspbiz    
 #2004-09    
 
 #Setting    
 #设置数据库名,数据库登录名,密码,备份路径,日志路径,数据文件位置,以及备份方式    
 #默认情况下备份方式是tar,还可以是mysqldump,mysqldotcopy    
 #默认情况下,用root(空)登录mysql数据库,备份至/root/dbxxxxx.tgz    
 DBName=mysql    
 DBUser=root    
 DBPasswd=    
 BackupPath=/root/    
 LogFile=/root/db.log    
 DBPath=/var/lib/mysql/    
 #BackupMethod=mysqldump    
 #BackupMethod=mysqlhotcopy    
 #BackupMethod=tar    
 #Setting   End    
 
 
 NewFile="$BackupPath"db$(date   +%y%m%d).tgz    
 DumpFile="$BackupPath"db$(date   +%y%m%d)    
 OldFile="$BackupPath"db$(date   +%y%m%d   --date='5   days   ago').tgz    
 
 echo   "-------------------------------------------"   >>   $LogFile    
 echo   $(date   +"%y-%m-%d   %H:%M:%S")   >>   $LogFile    
 echo   "--------------------------"   >>   $LogFile    
 #Delete   Old   File    
 if   [   -f   $OldFile   ]    
 then    
 rm   -f   $OldFile   >>   $LogFile   2>&1    
 echo   "[$OldFile]Delete   Old   File   Success!"   >>   $LogFile    
 else    
 echo   "[$OldFile]No   Old   Backup   File!"   >>   $LogFile    
 fi    
 
 if   [   -f   $NewFile   ]    
 then    
 echo   "[$NewFile]The   Backup   File   is   exists,Can't   Backup!"   >>   $LogFile    
 else    
 case   $BackupMethod   in    
 mysqldump)    
 if   [   -z   $DBPasswd   ]    
 then    
 mysqldump   -u   $DBUser   --opt   $DBName   >   $DumpFile    
 else    
 mysqldump   -u   $DBUser   -p$DBPasswd   --opt   $DBName   >   $DumpFile    
 fi    
 tar   czvf   $NewFile   $DumpFile   >>   $LogFile   2>&1    
 echo   "[$NewFile]Backup   Success!"   >>   $LogFile    
 rm   -rf   $DumpFile    
 ;;    
 mysqlhotcopy)    
 rm   -rf   $DumpFile    
 mkdir   $DumpFile    
 if   [   -z   $DBPasswd   ]    
 then    
 mysqlhotcopy   -u   $DBUser   $DBName   $DumpFile   >>   $LogFile   2>&1    
 else    
 mysqlhotcopy   -u   $DBUser   -p   $DBPasswd   $DBName   $DumpFile   >>$LogFile   2>&1    
 fi    
 tar   czvf   $NewFile   $DumpFile   >>   $LogFile   2>&1    
 echo   "[$NewFile]Backup   Success!"   >>   $LogFile    
 rm   -rf   $DumpFile    
 ;;    
 *)    
 /etc/init.d/mysqld   stop   >/dev/null   2>&1    
 tar   czvf   $NewFile   $DBPath$DBName   >>   $LogFile   2>&1    
 /etc/init.d/mysqld   start   >/dev/null   2>&1    
 echo   "[$NewFile]Backup   Success!"   >>   $LogFile    
 ;;    
 esac    
 fi    
 
 echo   "-------------------------------------------"   >>   $LogFile



方法二:
     
#!/usr/local/php/bin/php  
 <?  
 #auto   backup   mysql   date   use   mysqldump  
 #author   Robin(eway365@hotmail.com)  
 
 set_time_limit(0);  
 $pwd                             =   "1q2w3e4r";  
 $dbip                           =   "192.168.0.206";  
 $user                           =   "root";  
 $savepath                   =   "/db_bak/";  
 $save_time_limit     =   60*60*2;  
 $old_time_for_del   =   3;  
 
 
 if(!is_dir($savepath))  
 {  
                 mkdir($savepath,0700);  
 mkdir($savepath."log",0700);  
 }  
 
 
 while(true)  
 {  
 $fp   =   fopen   ($savepath."log/".date("Ymd").".log",   "a");  
 flock($fp,   LOCK_EX);  
 
 
 
                 $old_dir   =   date("Ymd",mktime(0,0,0,date("m"),date("d")-$old_time_for_del,date("Y")));  
                 
                 system("rm   -rf   ".$savepath.$old_dir);  
 fwrite($fp,"rm   -rf   ".$savepath.$old_dir."\n");  
 
                 $dir_child   =   date("Ymd");  
                 if(!is_dir($savepath.$dir_child))  
                 {  
                                 mkdir($savepath.$dir_child,0700);  
 fwrite($fp,"create   dir   ".$savepath.$dir_child."\n");  
                 }  
 
                 $filename   =   $savepath.$dir_child."/".date("His");  
                 fwrite($fp,date("H:i:s")."   backup   starting.............\n");  
 
 
                 system("/usr/local/mysql/bin/mysqldump     -u   ".$user."   -p".$pwd."   -h   ".$dbip."   billing>".$filename."_billing.sql");  
                 system("/usr/local/mysql/bin/mysqldump     -u   ".$user."   -p".$pwd."   -h   ".$dbip."   door_server>".$filename."_door_server.sql");  
                 system("/usr/local/mysql/bin/mysqldump     -u   ".$user."   -p".$pwd."   -h   ".$dbip."   myth_world>".$filename."_myth_world.sql");  
 
                 fwrite($fp,date("H:i:s")."   backup   succes.................OK\n\n\n");  
 flock($fp,LOCK_UN);  
 fclose($fp);  
                 sleep($save_time_limit);  
 }  
 ?>
 
Tags:
学习笔记 » Mysql相关 | 评论(0) | 引用(3) | 阅读(777)
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
昵称   密码   游客无需密码
网址   电邮   [注册]
               

验证码 不区分大小写