डेवलपर्स के लिए नियमित डेटाबेस बैकअप बहुत महत्वपूर्ण कार्य है। यह डेटा खोने के जोखिम को रोकता है जैसे कि हैकिंग या सर्वर क्रैश जैसी सर्वर पर कोई समस्या होती है। इसलिए भविष्य में किसी भी डेटा हानि से बचने के लिए आपको अनुसूचित डेटाबेस बैकअप सेट करना होगा।
आप कई तरह से mysql डेटाबेस बैकअप ले सकते हैं। आप सीधे अपने होस्टिंग cpanel में लॉग इन कर सकते हैं और कुछ ही क्लिक में पूर्ण बैकअप ले सकते हैं, लेकिन यदि आपके पास cpanel तक पहुंच नहीं है, तो आप साधारण PHP स्क्रिप्ट बना सकते हैं और इसे शेड्यूल्ड बैकअप पर सेट कर सकते हैं। तो इस पोस्ट में मैं MySql डेटाबेस बैकअप / निर्यात लेने के लिए निम्नलिखित उपयोगी PHP स्क्रिप्ट साझा करने जा रहा हूँ।
Mysql डेटाबेस बैकअप लेने के लिए निम्न PHP स्क्रिप्ट का उपयोग करें
<?php // Pass your database information $mysqlUserName = "db Username"; $mysqlPassword = "db Password"; $mysqlHostName = "db Hostname"; $DbName = "database name which you want to take backup"; $backup_name = "backup file name"; //optional $tables = "Your tables"; //optional //or add 5th parameter(array) of specific tables: array("mytable1","mytable2","mytable3") for multiple tables exportDB($mysqlHostName,$mysqlUserName,$mysqlPassword,$DbName, $tables=false, $backup_name=false ); function exportDB($host,$user,$pass,$name, $tables=false, $backup_name=false ) { $mysqli = new mysqli($host,$user,$pass,$name); $mysqli->select_db($name); $mysqli->query("SET NAMES 'utf8'"); $queryTables = $mysqli->query('SHOW TABLES'); while($row = $queryTables->fetch_row()) { $target_tables[] = $row[0]; } if($tables !== false) { $target_tables = array_intersect( $target_tables, $tables); } foreach($target_tables as $table) { $result = $mysqli->query('SELECT * FROM '.$table); $fields_amount = $result->field_count; $rows_num=$mysqli->affected_rows; $res = $mysqli->query('SHOW CREATE TABLE '.$table); $TableMLine = $res->fetch_row(); $content = (!isset($content) ? '' : $content) . "\n\n".$TableMLine[1].";\n\n"; for ($i = 0, $st_counter = 0; $i < $fields_amount; $i++, $st_counter=0) { while($row = $result->fetch_row()) { //when started (and every after 100 command cycle): if ($st_counter%100 == 0 || $st_counter == 0 ) { $content .= "\nINSERT INTO ".$table." VALUES"; } $content .= "\n("; for($j=0; $j<$fields_amount; $j++) { $row[$j] = str_replace("\n","\\n", addslashes($row[$j]) ); if (isset($row[$j])) { $content .= '"'.$row[$j].'"' ; } else { $content .= '""'; } if ($j<($fields_amount-1)) { $content.= ','; } } $content .=")"; //every after 100 command cycle [or at last line] ....p.s. but should be inserted 1 cycle eariler if ( (($st_counter+1)%100==0 && $st_counter!=0) || $st_counter+1==$rows_num) { $content .= ";"; } else { $content .= ","; } $st_counter=$st_counter+1; } } $content .="\n\n\n"; } //$backup_name = $backup_name ? $backup_name : $name."___(".date('H-i-s')."_".date('d-m-Y').")__rand".rand(1,11111111).".sql"; $backup_name = $backup_name ? $backup_name : $name.".sql"; header('Content-Type: application/octet-stream'); header("Content-Transfer-Encoding: Binary"); header("Content-disposition: attachment; filename=\"".$backup_name."\""); echo $content; exit; } ?> |