پشتيبان گيری از ديتابيس mysql با استفاده از اسكريپت PHP

سلام.

برای اين كار از تابع زير استفاده كنيد:

function &backup_tables($host, $user, $pass, $name, $tables = '*'){
 $data = "\n/*---------------------------------------------------------------".
 "\n SQL DB BACKUP ".date("d.m.Y H:i")." ".
 "\n HOST: {$host}".
 "\n DATABASE: {$name}".
 "\n TABLES: {$tables}".
 "\n ---------------------------------------------------------------*/\n";
 $link = mysql_connect($host,$user,$pass);
 mysql_select_db($name,$link);
 mysql_query( "SET NAMES `utf8` COLLATE `utf8_general_ci`" , $link ); // Unicode

if($tables == '*'){ //get all of the tables
 $tables = array();
 $result = mysql_query("SHOW TABLES");
 while($row = mysql_fetch_row($result)){
 $tables[] = $row[0];
 }
 }else{
 $tables = is_array($tables) ? $tables : explode(',',$tables);
 }

foreach($tables as $table){
 $data.= "\n/*---------------------------------------------------------------".
 "\n TABLE: `{$table}`".
 "\n ---------------------------------------------------------------*/\n"; 
 $data.= "DROP TABLE IF EXISTS `{$table}`;\n";
 $res = mysql_query("SHOW CREATE TABLE `{$table}`", $link);
 $row = mysql_fetch_row($res);
 $data.= $row[1].";\n";

$result = mysql_query("SELECT * FROM `{$table}`", $link);
 $num_rows = mysql_num_rows($result);

if($num_rows>0){
 $vals = Array(); $z=0;
 for($i=0; $i<$num_rows; $i++){
 $items = mysql_fetch_row($result);
 $vals[$z]="(";
 for($j=0; $j<count($items); $j++){
 if (isset($items[$j])) { $vals[$z].= "'".mysql_real_escape_string( $items[$j], $link )."'"; } else { $vals[$z].= "NULL"; }
 if ($j<(count($items)-1)){ $vals[$z].= ","; }
 }
 $vals[$z].= ")"; $z++;
 }
 $data.= "INSERT INTO `{$table}` VALUES "; 
 $data .= " ".implode(";\nINSERT INTO `{$table}` VALUES ", $vals).";\n";
 }
 }
 mysql_close( $link );
 return $data;
}

حالا كافيه تابع فوق رو داخل برنامتون بصورت زير فراخوانی كنيد:

$backup_file = 'db-backup-'.date("Y-m-d-H-i-s").'.sql';

// get backup
 $mybackup = backup_tables("localhost","DB-User","DB-Password","DB-Name","*");

// save to file
 $handle = fopen($backup_file,'w+');
 fwrite($handle,$mybackup);
 fclose($handle);

با اجرای اين دستورات، فايلی با نام db-backup-Date كنار فايل php شما، ذخيره خواهد شد.

موفق باشيد…

یک دیدگاه برای “پشتيبان گيری از ديتابيس mysql با استفاده از اسكريپت PHP”

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *