be smart نشر 27 يوليو 2015 أرسل تقرير نشر 27 يوليو 2015 السلام عليكمأرجو شرح كيفية عمل نسخ احتياطي تلقائي (يومي – أسبوعي – شهري) لجميع قواعد البيانات MySql الموجودة على السيرفر؟ اقتباس
0 Eng/Ahmed نشر 8 أغسطس 2015 أرسل تقرير نشر 8 أغسطس 2015 السلام عليكم.عملية النسخ الاحتياطي (Backup) غاية في الأهمية ﻷي عمل نقوم عليه ويجب علينا القيام به بشكل دوري حتى نضمن الحفاظ على بياناتنا (ملفات – إعدادات – قواعد بيانات) بشكل سليم حتى لو حصل أي ضرر للسيرفر (الهارد مثلاً)أو تخريب أو اختراق كل ماعليك إعادة رفع النسخة الاحتياطية السليمة والأحدث ويادار مادخلك شرموضوعنا نتكلم فيه عن عمل نسخ احتياطي تلقائي اتوماتيكي (يومي – أسبوعي – شهري) لجميع قواعد البيانات MySql الموجودة على السيرفرسنستخدم لهذه الغاية سكربت AutoMySQLBackupشويمكنك استخدام هذا الكود أخى الكريم لعمل نسخة احتياطية. <? //http://www.php4syria.com $dbname = "اسم قاعدة البيانات "; //dbname mysql_connect("localhost", "اسم المستخدم", "كلمة المرور"); mysql_select_db($dbname); mysql_query("SET character_set_client=utf8"); mysql_query("SET character_set_connection=utf8"); mysql_query("SET character_set_database=utf8"); mysql_query("SET character_set_results=utf8"); mysql_query("SET character_set_server=utf8"); $target="file"; if($target=="file") { header('Content-Type: application/octetstream'); header('Content-Disposition: filename="dayabackup.sql"'); $asfile="download"; } $crlf="\r\n"; $dump_buffer=""; $tables = mysql_query("show tables from $dbname"); $num_tables = mysql_num_rows($tables); if($num_tables == 0) { echo "# No Tables Found"; exit; } $dump_buffer.= "# نسخة احتياطية $crlf"; $dump_buffer.= "# Backup made:$crlf"; $dump_buffer.= "# التاريخ".date("F j, Y, g:i a")."$crlf"; $dump_buffer.= "# اسم القاعدة: $dbname$crlf"; $dump_buffer.= "# الجداول التي تم نسخها : $dbname $crlf"; $i = 0; while($i < $num_tables) { $table = mysql_tablename($tables, $i); //echo $table . "<br>"; $dump_buffer.= "# --------------------------------------------------------$crlf"; $dump_buffer.= "$crlf#$crlf"; $dump_buffer.= "# بنية الجدول '$table'$crlf"; $dump_buffer.= "#$crlf$crlf"; $db = $table; $dump_buffer.= get_table_def($table, $crlf,$dbname).";$crlf"; $dump_buffer.= "$crlf#$crlf"; $dump_buffer.= "# إرجاع أو إستيراد بيانات الجدول '$table'$crlf"; $dump_buffer.= "#$crlf$crlf"; $tmp_buffer=""; get_table_content($dbname, $table, 0, 0, 'my_handler', $dbname); $dump_buffer.=$tmp_buffer; $i++; $dump_buffer.= "$crlf"; } echo $dump_buffer; exit; function get_table_def($table, $crlf,$dbname) { $schema_create = "DROP TABLE IF EXISTS $table;$crlf"; $db = $table; $schema_create .= "CREATE TABLE $table ($crlf"; $result = mysql_query("SHOW FIELDS FROM " .$dbname."." . $table) or die(); while($row = mysql_fetch_array($result)) { $schema_create .= " $row[Field] $row[Type]"; if(isset($row["Default"]) && (!empty($row["Default"]) || $row["Default"] == "0")) $schema_create .= " DEFAULT '$row[Default]'"; if($row["Null"] != "YES") $schema_create .= " NOT NULL"; if($row["Extra"] != "") $schema_create .= " $row[Extra]"; $schema_create .= ",$crlf"; } $schema_create = ereg_replace(",".$crlf."$", "", $schema_create); $result = mysql_query("SHOW KEYS FROM " .$dbname."." . $table) or die(); while($row = mysql_fetch_array($result)) { $kname=$row['Key_name']; $comment=(isset($row['Comment'])) ? $row['Comment'] : ''; $sub_part=(isset($row['Sub_part'])) ? $row['Sub_part'] : ''; if(($kname != "PRIMARY") && ($row['Non_unique'] == 0)) $kname="UNIQUE|$kname"; if($comment=="FULLTEXT") $kname="FULLTEXT|$kname"; if(!isset($index[$kname])) $index[$kname] = array(); if ($sub_part>1) $index[$kname][] = $row['Column_name'] . "(" . $sub_part . ")"; else $index[$kname][] = $row['Column_name']; } while(list($x, $columns) = @each($index)) { $schema_create .= ",$crlf"; if($x == "PRIMARY") $schema_create .= " PRIMARY KEY ("; elseif (substr($x,0,6) == "UNIQUE") $schema_create .= " UNIQUE " .substr($x,7)." ("; elseif (substr($x,0,8) == "FULLTEXT") $schema_create .= " FULLTEXT ".substr($x,9)." ("; else $schema_create .= " KEY $x ("; $schema_create .= implode($columns,", ") . ")"; } $schema_create .= "$crlf)"; if(get_magic_quotes_gpc()) { return (stripslashes($schema_create)); } else { return ($schema_create); } } function get_table_content($db, $table, $limit_from = 0, $limit_to = 0,$handler) { // Defines the offsets to use if ($limit_from > 0) { $limit_from--; } else { $limit_from = 0; } if ($limit_to > 0 && $limit_from >= 0) { $add_query = " LIMIT $limit_from, $limit_to"; } else { $add_query = ''; } get_table_content_fast($db, $table, $add_query,$handler); } function get_table_content_fast($db, $table, $add_query = '',$handler) { $result = mysql_query('SELECT * FROM ' . $db . '.' . $table . $add_query) or die(); if ($result != false) { @set_time_limit(1200); // 20 Minutes // Checks whether the field is an integer or not for ($j = 0; $j < mysql_num_fields($result); $j++) { $field_set[$j] = mysql_field_name($result, $j); $type = mysql_field_type($result, $j); if ($type == 'tinyint' || $type == 'smallint' || $type == 'mediumint' || $type == 'int' || $type == 'bigint' ||$type == 'timestamp') { $field_num[$j] = true; } else { $field_num[$j] = false; } } // end for // Get the scheme if (isset($GLOBALS['showcolumns'])) { $fields = implode(', ', $field_set); $schema_insert = "INSERT INTO $table ($fields) VALUES ("; } else { $schema_insert = "INSERT INTO $table VALUES ("; } $field_count = mysql_num_fields($result); $search = array("\x0a","\x0d","\x1a"); //\x08\\x09, not required $replace = array("\\n","\\r","\Z"); while ($row = mysql_fetch_row($result)) { for ($j = 0; $j < $field_count; $j++) { if (!isset($row[$j])) { $values[] = 'NULL'; } else if (!empty($row[$j])) { // a number if ($field_num[$j]) { $values[] = $row[$j]; } // a string else { $values[] = "'" . str_replace($search, $replace, addslashes($row[$j])) . "'"; } } else { $values[] = "''"; } // end if } // end for $insert_line = $schema_insert . implode(',', $values) . ')'; unset($values); // Call the handler $handler($insert_line); } // end while } // end if ($result != false) return true; } function my_handler($sql_insert) { global $crlf, $asfile; global $tmp_buffer; if(empty($asfile)) $tmp_buffer.= htmlspecialchars("$sql_insert;$crlf"); else $tmp_buffer.= "$sql_insert;$crlf"; } function faqe_db_error() { return mysql_error(); } function faqe_db_insert_id($result) { return mysql_insert_id($result); } ?>شكرا جزيلا لك. اقتباس
السؤال
be smart
السلام عليكم
أرجو شرح كيفية عمل نسخ احتياطي تلقائي (يومي – أسبوعي – شهري) لجميع قواعد البيانات MySql الموجودة على السيرفر؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.