1. 程式人生 > >PHP備份MYSQL資料庫的一個完整方案

PHP備份MYSQL資料庫的一個完整方案

1. mydb.php //DB類
2. backup.php //備份指令碼
3. restore.php //還原指令碼

mydb.php

<?
class db{

var $linkid;
var $sqlid;
var $record;

function db($host="",$username="",$password="",$database="")
{
if(!$this->linkid)    @$this->linkid = mysql_connect($host, $username, $password) or die("連線伺服器失敗.");
@mysql_select_db($database,$this->linkid) or die("無法開啟資料庫");
return $this->linkid;}

function query($sql)
{if($this->sqlid=mysql_query($sql,$this->linkid)) return $this->sqlid;
else {
    $this->err_report($sql,mysql_error);
return false;}
}

function nr($sql_id="")
{if(!$sql_id) $sql_id=$this->sqlid;
return mysql_num_rows($sql_id);}

function nf($sql_id="")
{if(!$sql_id) $sql_id=$this->sqlid;
return mysql_num_fields($sql_id);}

function nextrecord($sql_id="")
{if(!$sql_id) $sql_id=$this->sqlid;
if($this->record=mysql_fetch_array($sql_id))    return $this->record;
else return false;
}

function f($name)
{
if($this->record[$name]) return $this->record[$name];
else return false;
}

function close() {mysql_close($this->linkid);}

function lock($tblname,$op="WRITE")
{if(mysql_query("lock tables ".$tblname." ".$op)) return true; else return false;}

function unlock()
{if(mysql_query("unlock tables")) return true; else return false;}

function ar() {
      return @mysql_affected_rows($this->linkid);
    }

function i_id() {
    return mysql_insert_id();
}

function err_report($sql,$err)
{
echo "Mysql查詢錯誤<br>";
echo "查詢語句:".$sql."<br>";
echo "錯誤資訊:".$err;
}
/****************************************類結束***************************/
}?>

backup.php

<?
global $mysqlhost, $mysqluser, $mysqlpwd, $mysqldb;
$mysqlhost="localhost"; //host name
$mysqluser="root";                //login name
$mysqlpwd="";                //password
$mysqldb="";          //name of database

include("mydb.php");
$d=new db($mysqlhost,$mysqluser,$mysqlpwd,$mysqldb);
/*--------------介面--------------*/if(!$_POST['act']){/*----------------------*/
$msgs[]="伺服器備份目錄為backup";
$msgs[]="對於較大的資料表,強烈建議使用分卷備份";
$msgs[]="只有選擇備份到伺服器,才能使用分卷備份功能";
show_msg($msgs);
?>
<form name="form1" method="post" action="backup.php">
    <table width="99%" border="1" cellpadding='0' cellspacing='1'>
      <tr align="center" class='header'><td colspan="2">資料備份</td></tr>
      <tr><td colspan="2">備份方式</td></tr>
      <tr><td><input type="radio" name="bfzl" value="quanbubiao">          備份全部資料</td><td>備份全部資料表中的資料到一個備份檔案</td></tr>
      <tr><td><input type="radio" name="bfzl" value="danbiao">備份單張表資料
          <select name="tablename"><option value="">請選擇</option>
            <?
    $d->query("show table status from $mysqldb");
    while($d->nextrecord()){
    echo "<option value='".$d->f('Name')."'>".$d->f('Name')."</option>";}
    ?>
          </select></td><td>備份選中資料表中的資料到單獨的備份檔案</td></tr>
      <tr><td colspan="2">使用分卷備份</td></tr>
      <tr><td colspan="2"><input type="checkbox" name="fenjuan" value="yes">
          分卷備份 <input name="filesize" type="text" size="10">K</td></tr>
      <tr><td colspan="2">選擇目標位置</td></tr>
      <tr><td colspan="2"><input type="radio" name="weizhi" value="server" checked>備份到伺服器</td></tr><tr class="cells"><td colspan='2'> <input type="radio" name="weizhi" value="localpc">
          備份到本地</td></tr>
      <tr><td colspan="2" align='center'><input type="submit" name="act" value="備份"></td></tr>
    </table></form>
<?/*-------------介面結束-------------*/}/*---------------------------------*/
/*----*/else{/*--------------主程式-----------------------------------------*/
if($_POST['weizhi']=="localpc"&&$_POST['fenjuan']=='yes')
{$msgs[]="只有選擇備份到伺服器,才能使用分卷備份功能";
show_msg($msgs); pageend();}
if($_POST['fenjuan']=="yes"&&!$_POST['filesize'])
{$msgs[]="您選擇了分卷備份功能,但未填寫分卷檔案大小";
show_msg($msgs); pageend();}
if($_POST['weizhi']=="server"&&!writeable("./backup"))
{$msgs[]="備份檔案存放目錄'./backup'不可寫,請修改目錄屬性";
show_msg($msgs); pageend();}

/*----------備份全部表-------------*/if($_POST['bfzl']=="quanbubiao"){/*----*/
/*----不分卷*/if(!$_POST['fenjuan']){/*--------------------------------*/
if(!$tables=$d->query("show table status from $mysqldb"))
{$msgs[]="讀資料庫結構錯誤"; show_msg($msgs); pageend();}
$sql="";
while($d->nextrecord($tables))
{
$table=$d->f("Name");
$sql.=make_header($table);
$d->query("select * from $table");
$num_fields=$d->nf();
while($d->nextrecord())
{$sql.=make_record($table,$num_fields);}
}
$filename=date("Ymd",time())."_all.sql";
if($_POST['weizhi']=="localpc") down_file($sql,$filename);
elseif($_POST['weizhi']=="server")
{if(write_file($sql,$filename))
$msgs[]="全部資料表資料備份完成,生成備份檔案'./backup/$filename'";
else $msgs[]="備份全部資料表失敗";
show_msg($msgs);
pageend();
}
/*-----------------不要卷結束*/}/*-----------------------*/
/*-----------------分卷*/else{/*-------------------------*/
if(!$_POST['filesize'])
{$msgs[]="請填寫備份檔案分卷大小"; show_msg($msgs);pageend();}
if(!$tables=$d->query("show table status from $mysqldb"))
{$msgs[]="讀資料庫結構錯誤"; show_msg($msgs); pageend();}
$sql=""; $p=1;
$filename=date("Ymd",time())."_all";
while($d->nextrecord($tables))
{
$table=$d->f("Name");
$sql.=make_header($table);
$d->query("select * from $table");
$num_fields=$d->nf();
while($d->nextrecord())
{$sql.=make_record($table,$num_fields);
if(strlen($sql)>=$_POST['filesize']*1000){
     $filename.=("_v".$p.".sql");
     if(write_file($sql,$filename))
     $msgs[]="全部資料表-卷-".$p."-資料備份完成,生成備份檔案'./backup/$filename'";
     else $msgs[]="備份表-".$_POST['tablename']."-失敗";
     $p++;
     $filename=date("Ymd",time())."_all";
     $sql="";}
}
}
if($sql!=""){$filename.=("_v".$p.".sql");  
if(write_file($sql,$filename))
$msgs[]="全部資料表-卷-".$p."-資料備份完成,生成備份檔案'./backup/$filename'";}
show_msg($msgs);
/*---------------------分卷結束*/}/*--------------------------------------*/
/*--------備份全部表結束*/}/*---------------------------------------------*/

/*--------備份單表------*/elseif($_POST['bfzl']=="danbiao"){/*------------*/
if(!$_POST['tablename'])
{$msgs[]="請選擇要備份的資料表"; show_msg($msgs); pageend();}
/*--------不分卷*/if(!$_POST['fenjuan']){/*-------------------------------*/
$sql=make_header($_POST['tablename']);
$d->query("select * from ".$_POST['tablename']);
$num_fields=$d->nf();
while($d->nextrecord())
{$sql.=make_record($_POST['tablename'],$num_fields);}
$filename=date("Ymd",time())."_".$_POST['tablename'].".sql";
if($_POST['weizhi']=="localpc") down_file($sql,$filename);
elseif($_POST['weizhi']=="server")
{if(write_file($sql,$filename))
$msgs[]="表-".$_POST['tablename']."-資料備份完成,生成備份檔案'./backup/$filename'";
else $msgs[]="備份表-".$_POST['tablename']."-失敗";
show_msg($msgs);
pageend();
}
/*----------------不要卷結束*/}/*------------------------------------*/
/*----------------分卷*/else{/*--------------------------------------*/
if(!$_POST['filesize'])
{$msgs[]="請填寫備份檔案分卷大小"; show_msg($msgs);pageend();}
$sql=make_header($_POST['tablename']); $p=1;
$filename=date("Ymd",time())."_".$_POST['tablename'];
$d->query("select * from ".$_POST['tablename']);
$num_fields=$d->nf();
while ($d->nextrecord())
{
    $sql.=make_record($_POST['tablename'],$num_fields);
      if(strlen($sql)>=$_POST['filesize']*1000){
     $filename.=("_v".$p.".sql");
     if(write_file($sql,$filename))
     $msgs[]="表-".$_POST['tablename']."-卷-".$p."-資料備份完成,生成備份檔案'./backup/$filename'";
     else $msgs[]="備份表-".$_POST['tablename']."-失敗";
     $p++;
     $filename=date("Ymd",time())."_".$_POST['tablename'];
     $sql="";}
}
if($sql!=""){$filename.=("_v".$p.".sql");  
if(write_file($sql,$filename))
$msgs[]="表-".$_POST['tablename']."-卷-".$p."-資料備份完成,生成備份檔案'./backup/$filename'";}
show_msg($msgs);
/*----------分卷結束*/}/*--------------------------------------------------*/
/*----------備份單表結束*/}/*----------------------------------------------*/

/*---*/}/*-------------主程式結束------------------------------------------*/

function write_file($sql,$filename)
{
$re=true;
if([email protected]$fp=fopen("./backup/".$filename,"w+")) {$re=false; echo "failed to open target file";}
if([email protected]($fp,$sql)) {$re=false; echo "failed to write file";}
if([email protected]($fp)) {$re=false; echo "failed to close target file";}
return $re;
}

function down_file($sql,$filename)
{
ob_end_clean();
header("Content-Encoding: none");
header("Content-Type: ".(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') ? 'application/octetstream' : 'application/octet-stream'));
   
header("Content-Disposition: ".(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') ? 'inline; ' : 'attachment; ')."filename=".$filename);
   
header("Content-Length: ".strlen($sql));
header("Pragma: no-cache");
   
header("Expires: 0");
echo $sql;
$e=ob_get_contents();
ob_end_clean();
}

function writeable($dir)
{

if(!is_dir($dir)) {
@mkdir($dir, 0777);
}

if(is_dir($dir))
{

if($fp = @fopen("$dir/test.test", 'w'))
    {
@fclose($fp);
@unlink("$dir/test.test");
$writeable = 1;
}
else {
$writeable = 0;
}

}

return $writeable;

}

function make_header($table)
{global $d;
$sql="DROP TABLE IF EXISTS ".$table."/n";
$d->query("show create table ".$table);
$d->nextrecord();
$tmp=preg_replace("//n/","",$d->f("Create Table"));
$sql.=$tmp."/n";
return $sql;
}

function make_record($table,$num_fields)
{global $d;
$comma="";
$sql .= "INSERT INTO ".$table." VALUES(";
for($i = 0; $i < $num_fields; $i++)
{$sql .= ($comma."'".mysql_escape_string($d->record[$i])."'"); $comma = ",";}
$sql .= ")/n";
return $sql;
}

function show_msg($msgs)
{
$title="提示:";
echo "<table width='100%' border='1'    cellpadding='0' cellspacing='1'>";
echo "<tr><td>".$title."</td></tr>";
echo "<tr><td><br><ul>";
while (list($k,$v)=each($msgs))
{
echo "<li>".$v."</li>";
}
echo "</ul></td></tr></table>";
}

function pageend()
{
exit();
}
?>

restore.php

<?
session_start();
global $mysqlhost, $mysqluser, $mysqlpwd, $mysqldb;
$mysqlhost="localhost"; //host name
$mysqluser="root";                //login name
$mysqlpwd="";                //password
$mysqldb="";          //name of database

include("mydb.php");
$d=new db($mysqlhost,$mysqluser,$mysqlpwd,$mysqldb);

/******介面*/if(!$_POST['act']&&!$_SESSION['data_file']){/**********************/
$msgs[]="本功能在恢復備份資料的同時,將全部覆蓋原有資料,請確定是否需要恢復,以免造成資料損失";
$msgs[]="資料恢復功能只能恢復由dShop匯出的資料檔案,其他軟體匯出格式可能無法識別";
$msgs[]="從本地恢復資料需要伺服器支援檔案上傳並保證資料尺寸小於允許上傳的上限,否則只能使用從伺服器恢復";
$msgs[]="如果您使用了分卷備份,只需手工匯入檔案卷1,其他資料檔案會由系統自動匯入";
show_msg($msgs);
?>
<form action="" method="post" enctype="multipart/form-data" name="restore.php">
<table width="91%" border="0" cellpadding="0" cellspacing="1">
<tr align="center" class="header"><td colspan="2" align="center">資料恢復</td></tr>
<tr><td width="33%"><input type="radio" name="restorefrom" value="server" checked>
從伺服器檔案恢復 </td><td width="67%"><select name="serverfile">
      <option value="">-請選擇-</option>
<?
$handle=opendir('./backup');
while ($file = readdir($handle)) {
      if(eregi("^[0-9]{8,8}([0-9a-z_]+)(/.sql)$",$file)) echo "<option value='$file'>$file</option>";}
closedir($handle);
?>
    </select> </td></tr>
<tr><td><input type="radio" name="restorefrom" value="localpc">         從本地檔案恢復</td>
<td><input type="hidden" name="MAX_FILE_SIZE" value="1500000"><input type="file" name="myfile"></td></tr>
<tr><td colspan="2" align="center"> <input type="submit" name="act" value="恢復"></td>    </tr></table></form>


<?/**************************介面結束*/}/*************************************/
/****************************主程式*/if($_POST['act']=="恢復"){/**************/
/***************伺服器恢復*/if($_POST['restorefrom']=="server"){/**************/
if(!$_POST['serverfile'])
{$msgs[]="您選擇從伺服器檔案恢復備份,但沒有指定備份檔案";
    show_msg($msgs); pageend(); }
if(!eregi("_v[0-9]+",$_POST['serverfile']))
{$filename="./backup/".$_POST['serverfile'];
if(import($filename)) $msgs[]="備份檔案".$_POST['serverfile']."成功匯入資料庫";
else $msgs[]="備份檔案".$_POST['serverfile']."匯入失敗";
show_msg($msgs); pageend();  
}
else
{
$filename="./backup/".$_POST['serverfile'];
if(import($filename)) $msgs[]="備份檔案".$_POST['serverfile']."成功匯入資料庫";
else {$msgs[]="備份檔案".$_POST['serverfile']."匯入失敗";show_msg($msgs);pageend();}
$voltmp=explode("_v",$_POST['serverfile']);
$volname=$voltmp[0];
$volnum=explode(".sq",$voltmp[1]);
$volnum=intval($volnum[0])+1;
$tmpfile=$volname."_v".$volnum.".sql";
if(file_exists("./backup/".$tmpfile))
    {
    $msgs[]="程式將在3秒鐘後自動開始匯入此分卷備份的下一部份:檔案".$tmpfile.",請勿手動中止程式的執行,以免資料庫結構受損";
    $_SESSION['data_file']=$tmpfile;
    show_msg($msgs);
    sleep(3);
    echo "<script language='javascript'>";
    echo "location='restore.php';";
    echo "</script>";
    }
else
    {
    $msgs[]="此分卷備份全部匯入成功";
    show_msg($msgs);
    }
}
/**************伺服器恢復結束*/}/********************************************/
/*****************本地恢復*/if($_POST['restorefrom']=="localpc"){/**************/
switch ($_FILES['myfile']['error'])
{
case 1:
case 2:
$msgs[]="您上傳的檔案大於伺服器限定值,上傳未成功";
break;
case 3:
$msgs[]="未能從本地完整上傳備份檔案";
break;
case 4:
$msgs[]="從本地上傳備份檔案失敗";
break;
      case 0:
break;
}
if($msgs){show_msg($msgs);pageend();}
$fname=date("Ymd",time())."_".sjs(5).".sql";
if (is_uploaded_file($_FILES['myfile']['tmp_name'])) {
      copy($_FILES['myfile']['tmp_name'], "./backup/".$fname);}

if (file_exists("./backup/".$fname))
{
$msgs[]="本地備份檔案上傳成功";
if(import("./backup/".$fname)) {$msgs[]="本地備份檔案成功匯入資料庫"; unlink("./backup/".$fname);}
else $msgs[]="本地備份檔案匯入資料庫失敗";
}
else ($msgs[]="從本地上傳備份檔案失敗");
show_msg($msgs);
/****本地恢復結束*****/}/****************************************************/
/****************************主程式結束*/}/**********************************/
/*************************剩餘分卷備份恢復**********************************/
if(!$_POST['act']&&$_SESSION['data_file'])
{
$filename="./backup/".$_SESSION['data_file'];
if(import($filename)) $msgs[]="備份檔案".$_SESSION['data_file']."成功匯入資料庫";
else {$msgs[]="備份檔案".$_SESSION['data_file']."匯入失敗";show_msg($msgs);pageend();}
$voltmp=explode("_v",$_SESSION['data_file']);
$volname=$voltmp[0];
$volnum=explode(".sq",$voltmp[1]);
$volnum=intval($volnum[0])+1;
$tmpfile=$volname."_v".$volnum.".sql";
if(file_exists("./backup/".$tmpfile))
    {
    $msgs[]="程式將在3秒鐘後自動開始匯入此分卷備份的下一部份:檔案".$tmpfile.",請勿手動中止程式的執行,以免資料庫結構受損";
    $_SESSION['data_file']=$tmpfile;
    show_msg($msgs);
    sleep(3);
    echo "<script language='javascript'>";
    echo "location='restore.php';";
    echo "</script>";
    }
else
    {
    $msgs[]="此分卷備份全部匯入成功";
    unset($_SESSION['data_file']);
    show_msg($msgs);
    }
}
/**********************剩餘分卷備份恢復結束*******************************/
function import($fname)
{global $d;
$sqls=file($fname);
foreach($sqls as $sql)
{
str_replace("/r","",$sql);
str_replace("/n","",$sql);
if(!$d->query(trim($sql))) return false;
}
return true;
}
function show_msg($msgs)
{
$title="提示:";
echo "<table width='100%' border='1'    cellpadding='0' cellspacing='1'>";
echo "<tr><td>".$title."</td></tr>";
echo "<tr><td><br><ul>";
while (list($k,$v)=each($msgs))
{
echo "<li>".$v."</li>";
}
echo "</ul></td></tr></table>";
}

function pageend()
{
exit();
}
?>

檔案結構非常清晰,只要在檔案2和3裡面設定好資料庫伺服器的地址、使用者名稱、密碼就可以備份還原資料了。需要注意的是:

·使用時候要在同級目錄下建一個Backup目錄,許可權需要可寫,用於存放匯出的指令碼。
·當備份的資料庫比較大的時候,伺服器指令碼超時時間要調大一些。
·支援分卷備份,還原時候只要選擇分卷備份的第一個指令碼就會自動還原所有的指令碼。
·分卷檔案大小不要太大,最好不超過2MB。
·安全起見,指令碼不用時候記得從伺服器上刪除。

相關推薦

PHP備份MYSQL資料庫一個完整方案

1. mydb.php //DB類2. backup.php //備份指令碼3. restore.php //還原指令碼 mydb.php <?class db{ var $linkid;var $sqlid;var $record; function db($host

php備份Mysql資料庫

1、本地環境 web:apache php:PHP 7.0.10 (cli) (built: Aug 18 2016 09:48:53) ( ZTS ) mysql: 5.7.14 2、基本思路 獲取備份資料表名 獲取備份表結構 獲取資料 寫入資料到檔案 3、獲取表名 獲取所有資料表名,可以在頁面上做一

推薦一個PHPMySQL資料庫備份還原類

在GitHub上發現的一個PHP的MySQL資料庫備份還原類,寫的不錯,目測用的人似乎不多,好東西就推廣一下哈 匯出後的sql檔案格式如下: -- -- MySQL database dump -- Created by DBManage class, Po

mysql資料庫完整備份、差異備份、增量備份

完整備份:(t為資料庫名) Mysql -uroot -pPassword  t -e "FLUSH TABLES";  // 關閉所有開啟的表, 把記憶體中的快取寫入磁碟 Mysql -uroot -pPassword  t -e "FLUSH TABLES WITH

一個備份MySQL資料庫的簡單Shell指令碼

Shell指令碼是我們寫不同型別命令的一種指令碼,這些命令在這一個檔案中就可以執行。我們也可以逐一敲入命令手動執行。如果我們要使用shell指令碼就必須在一開始把這些命令寫到一個文字檔案中,以後就可以隨意反覆執行這些命令了。 我首先要在本文帶給你的是完整指令碼。後面會對

MySQL資料庫完整備份刪庫,除了跑路還能怎麼辦?

1.背景 前段時間,由於運維同事的一次誤操作,清空了內網核心資料庫,導致了公司內部管理系統長時間不可用,大量知識庫內容由於沒有備份險些丟失。 結合這兩天微盟的刪庫跑路事件,我們可以看到,資料庫的備份與恢復顯得尤為重要。 本文將對此次內網資料恢復過程做一些整理,介紹刪庫後的搶救方案。 同時,引發對資料庫穩定性的

PHP 連線mysql資料庫

報錯: Warning: mysqli::mysqli(): (HY000/2002): No such file or directory <span style="font-size:18px;">cd /var sudo mkdir m

MySQL學習筆記(七)使用AutoMySQLBackup工具自動備份MySQL資料庫

首先到官網檢視開源軟體AutoMySQLBackup下載地址。 2        輸入“cd /tmp”切換到/tm

MySQL資料庫叢集-PXC方案完整版資源

MySQL資料庫叢集-PXC方案完整版資源 第1章 課程摘要 課程內容的概要介紹,包括課程目標,面向使用者,預備知識,課程大綱,軟體與硬體環境等。 第2章 建立PXC叢集 學習安裝與建立PXC叢集,為了搭建三高特點的資料庫叢集,我們將把兩組PXC叢集組建成分片,由MyCat做資料切分

小程式登入——PHP後臺處理資料庫完整過程以及程式碼

    注:這裡用到的是本地測試,所以後面的URL網址並沒有使用https。       你需要做的幾件小事: 頁面 php mysql      關於頁面,直接貼程式碼。具體自

PHP 生成 MySql 資料庫字典

專案說明 通過配置 MySql 資料庫資訊,使用 PHP 生成資料表字典可以輸出在當前頁面,可以生成檔案儲存在指定位置,也可以下載格式支援網頁HTML格式、CSV格式(Excel 讀取)、ZIP壓縮格式資料庫型別 MySql ,資料庫連線方式使用 PDO , PHP 版本建議 5.5 以上生成的檔名可以自定

如何在生產環境下實現每天自動備份mysql資料庫

www.syncnavigator.cn SyncNavigator 做資料同步時所支援的資料庫型別: 支援sqlserver 2000-2014所有版本,全相容,和MYsql 4.x 、MYsql 5.x 、MYsql 6.x版本。 來源資料庫和目標資料庫可以版本不同,比如:來源資料庫

PHP操作MySQL資料庫常用函式

PHP操作MySQL資料庫常用函式 php操作mysql資料庫,俗稱天龍八步: 第一步:連線資料庫 第二步:判斷連線錯誤 第三步:選擇資料庫 第四步:設定字符集 第五步:準備SQL語句 第六步:執行併發送SQL語句 第七步:處理結果集 第八步:關閉連線

MySQL】Django自動備份MySQL資料庫

使用命令列備份 錯誤的輸入: 正確的輸入: 使用$(date +%Y%m%d_%H%M%S) django自動備份: 使用P

新增計劃任務每天定時備份mysql資料庫並打包壓縮

 1、備份資料庫指令碼 backups.bat @echo off set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%" "C:/Program Files/MySQL/MySQL Server 5.7/bin/mysqldump" --opt

linux定時備份mysql資料庫

1、檢視磁碟空間情況: [[email protected] backup]# df -h 檔案系統 容量 已用 可用 已用% 掛載點 /dev/mapper/centos-root 17G 2.7G 15G 16

LINUX 下自動備份mysql資料庫

mysql自動備份分為兩個部分,一個部分是shell指令碼的編寫,另外一個部分是新增自動執行命令到crontab。 1.首先是shell指令碼的編寫,每天自動備份的的做法如下所示,shell指令碼首先用#!/bin/bash指定直譯器的路徑,接下來設定儲存路徑的變數。我們利用mysqldump這

mydumper備份mysql資料庫

mydumper介紹 MySQL自身的mysqldump工具支援單執行緒工作,依次一個個匯出多個表,沒有一個並行的機制,這就使得它無法迅速的備份資料。 mydumper作為一個實用工具,能夠良好支援多執行緒工作,可以並行的多執行緒的從表中讀入資料並同時寫到不同的檔案裡,這

通過windows伺服器定時任務,定時備份mysql資料庫

為了防止伺服器宕機,導致mysql資料庫損壞無法修復,所以每天定時進行備份。一旦有問題直接還原資料庫! 50多個G的資料庫備份完成sql大概在20G,通過壓縮後大概在2G左右。 長時間進行後硬碟吃不消。所以做了一個定時清理備份檔案的指令碼。 點此進入下一篇文章->精簡mysql

python3.6指令碼備份mysql資料庫

環境cnetos7.3+python3.6+mysql5.7 安裝python3.6環境 1.安裝IUS軟體源 安裝EPEL依賴 sudo yum install epel-release 2.安裝python3.6 sudo yum install pyth