Mansion明陞

Mansion明陞 > 电脑网络 > mysql自动备份的实现方法
2010七月19

mysql自动备份的实现方法

文/蒹葭苍苍整理

让服务器每天备份一次 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(“无法建立目录 $dirTon”);
 }
 //如果目录不存在,则建立之
 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__).’..mysqlbinmysqldump -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”;
?>

文章作者:Mansion明陞
本文地址:http://www.xiangfei.org/mysqlbf/
版权所有 © 未注明“转载”的博文一律为原创,转载时必须以链接形式注明作者和原始出处!

解决近期WordPress 头像无法显示问题的插件
解决近期WordPress 头像无法显示问题的插件

微言有大义——写给张老新诗集《星星草》的序
微言有大义——写给张老新诗集《星星草》的序

实拍:彩云之南的云
实拍:彩云之南的云

文艺和政治的冲突
文艺和政治的冲突

One Response to “mysql自动备份的实现方法”

  1. #1 admin 回复 | 引用 Post:2010-07-19 23:00

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

    [回复]

发表评论