mysql自动备份的实现方法

2010.07.19 请收藏本站地址:feifeifilm.net

文/蒹葭苍苍整理

    让服务器每天备份一次 mysql 数据库并自动打包,同时删除 30 天前的备份文件。
1. 环境: Windows + Apache + PHP + MySQL
2. 假设 PHP 安装目录为 D:/php,MySQL 安装目录为 D:/mysql
3. 在 D:/php 下建立目录 WinRAR, 把你 winrar 安装目录下的 WinRAR.exe 和 Rarreg.key 复制到 D:/php/WinRAR
4. D:/php 下建立文件 mysql_backup.php
5. D:/php 下建立文件 mysql_backup.bat,内容只有一句

  php.exe mysql_backup.php

6. 双击该 bat 文件运行,如果能备份了,下一步添加任务计划
7. 把 D:/php/mysql_backup.bat 添加到任务计划,时间自己定吧

    mysql_backup.php 文件代码如下:

<?
function copyDir($dirFrom,$dirTo)  {
 //如果遇到同名文件无法复制,则直接退出
 if(is_file($dirTo)){
  echo(“无法建立目录 $dirTo\n”);
 }
 //如果目录不存在,则建立之
 if(!file_exists($dirTo)){
  mkdir($dirTo);
 }
 $handle = opendir($dirFrom);
 //打开当前目录
 readdir($handle); //排除”.”
 readdir($handle); //排除 “..”
 //循环读取文件
 while (false !== ($file = readdir($handle))) {
  //生成源文件名
  $fileFrom = $dirFrom . DIRECTORY_SEPARATOR .$file;
  //生成目标文件名
  $fileTo = $dirTo .DIRECTORY_SEPARATOR .$file;
  if(is_dir($fileFrom)){
   //如果是子目录,则进行递归操作
   copyDir($fileFrom,$fileTo);
  }
  else {
   //如果是文件,则直接用copy函数复制
   @copy($fileFrom,$fileTo);
  }
 }
}
 
//保存目录,路径要用反斜杠.您需要手动建立它.
//$store_folder = dirname(__FILE__).’\autobackup’;
$store_folder = ‘D:\MysqlAutoBakup’;
 
//用户名和密码
//该帐号须有操作[所有]的数据库及FILE的权限
//否则有些数据库不能备份.
$db_username = “root”;
$db_password = “”;
 
$time=time();
 
$nowdir = “$store_folder\\”.date(“Ymd”,$time).””;
if(is_dir($nowdir)) @rmdir($nowdir);//die(“directory  exists.\n”);
if(file_exists(“$nowdir.rar”)) @unlink(“$nowdir.rar”);//die(“file exists.\n”);
@mkdir($nowdir);
 
$result_link=mysql_connect(“localhost”,”$db_username”,”$db_password”);
$query=mysql_list_dbs();
 
while($result=mysql_fetch_array($query)){
 echo “dumping database `$result[Database]`,wait for a minute please…\n”;
 system (dirname(__FILE__).’\..\mysql\bin\mysqldump –opt ‘.”$result[Database] -u{$db_username} “.($db_password?”-p{$db_password}”:””).” > $nowdir\\$result[Database].sql”);
}
echo “\npackage database files right now ,please wait…\n”;
 
system( dirname(__FILE__).”\\WinRAR\\WinRAR.exe a -ep1 -r -o+ -m5 -df \”$nowdir.rar\” \”$nowdir\” ” );
 
//删除 30 天前的文件
@unlink(“$store_folder\\”.date(“Ymd”,$time-86400*30).”.rar”);
 
echo “\nOK!\n”;
?>
阅 4,421
0

  1. 2010.07.19 - admin

    我自己已经测试成功了的。

首先值得庆贺,我对flash刚入门,属于菜鸟级,但为这次屈原故里文化节设计了一个flash,被人民网和三峡秭归在线采用为网站专题页头。

申明哈,这次由国家文化部和国台办主办的端午文化节是端午节申遗成功后国家主办的第一个端午文化节,它的全称是“屈原故里端午文化节暨海峡两岸屈原文化论坛”。

其次,这次回家乡参加屈原故里文化节,又热又闹,使很多慕名跟着我去的朋友们简直是刻骨铭心,今后可能再也不想去了。