PDA

View Full Version : پیشتیبان گیری اتوماتیک از دیتابیس



سلیمانی پور
چهارشنبه 28 مهر 1389, 09:38 صبح
اگر یکی از دوستان با قرار دادن یک فایل نمونه، روش پیشتیبان گیری اتوماتیک از دیتابیس های مای اسکیوال را توضیح دهند متشکر خواهم شد.

mn3250
چهارشنبه 28 مهر 1389, 10:24 صبح
http://www.php-mysql-tutorial.com/wikis/mysql-tutorials/using-php-to-backup-mysql-databases.aspx

funpatogh
چهارشنبه 28 مهر 1389, 22:08 عصر
http://davidwalsh.name/backup-mysql-database-php
احتمال دادم که لینک اول به خاطر تابع system که توش استفاده شده کار نکنه

funpatogh
چهارشنبه 28 مهر 1389, 22:17 عصر
اینم یکی دیگه که با فرم هستش و کار شما رو راحت تر میکنه


<?php
if($_SERVER['REQUEST_METHOD'] == "POST"){
$db_host = "";
$db_name = "";
$db_user = "";
$db_pass = "";
$table = "";
//Name of host you want to use
$db_host = $_POST["host"];

//Name of database you want to use
$db_name = $_POST["db_name"];
//User
$db_user = $_POST["user"];
//Password
$db_pass = $_POST["pass"];
//Name of table or tables
$table = $_POST["table"];
mysql_connect($db_host,$db_user,$db_pass);

mysql_select_db($db_name) or die("Unable to select database.");

function datadump ($table) {
$result ="";
$row="";

$result .= "# Dump of $table \n";

$result .= "# Dump DATE : " . date("d-M-Y") ."\n\n";

$query = mysql_query("select * from $table");

$num_fields = @mysql_num_fields($query);
//Retrieve the data from the original database
for ($i =0; $i <$num_fields; $i++) {
$result .= "INSERT INTO ".$table." VALUES(";
$data = mysql_query("SELECT * FROM $table");
while($info = mysql_fetch_array( $data,MYSQL_ASSOC )){
$comma_separated = implode(",", $info);
//Insert the data from the original array in to sql statement
if ($i<($num_fields)) $result .= "$comma_separated";

$result .= ");\n";

return $result . "\n\n\n";
}
}
}

$table1 = datadump ($table); //Add more datadumps if needed


$content = $table1; // Add additional datadumps to the string

//Creates an .sql file for download to your computer
$file_name = "MySQL_Database_Backup.sql";
header('Content-Disposition: attachment; filename='.basename($file_name));
//Remove the form from the $content data
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
ob_clean();
//flush();
echo $content;
exit;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<form action="<?php $_SERVER['PHP_SELF'];?>" method="POST" enctype="multipart/form-data" name="backup">
<label>Host:</label> <br />
<input name="host" type="text" maxlength="20" /><br />
<label>Database name:</label> <br />
<input name="db_name" type="text" maxlength="20" /><br /><label>Table:</label> <br />
<input name="table" type="text" maxlength="20" /><br /><label>User:</label> <br />
<input name="user" type="text" maxlength="20" /><br /><label>Password:</label> <br />
<input name="pass" type="password" maxlength="20" /><br />
<input name="submit" type="submit" /> &nbsp; <input name="reset" type="reset" />
</form>
</body>
</html>

mehregan
چهارشنبه 12 آبان 1389, 23:13 عصر
چطوری میشه پشتیبان را روزی یکبار به ایمیل ارسال کنه؟ (بصورت فشرده شده)

funpatogh
پنج شنبه 13 آبان 1389, 02:11 صبح
شما یک صفحه درست کن که هر بار اجراش کردی عملیان بک آپ و ارسال از طریق ایمیل رو انجام بدهد و صفحه رو ذخیره کن بعد این صفحه رو یا با cron job روزی یکبار صدا بزن یا اینکه توی صفحات سایتت include کن و توی یک زمان که خودت تعیین میکنی بگو اون عملیات رو برات انجام بدهد وارسال کنه

yasgig
پنج شنبه 13 آبان 1389, 12:19 عصر
کد زیر رو به cron jobs بدین حله:

mysqldump -unamekarbari -ppassword database_name | gzip -9 > /home/username/db_name.gz