Pencadangan basis data reguler adalah tugas yang sangat penting bagi pengembang. Ini mencegah risiko kehilangan data seolah-olah ada masalah yang terjadi di server seperti peretasan atau kerusakan server. Jadi, Anda harus mengatur pencadangan basis data terjadwal untuk mencegah kehilangan data di masa mendatang.
Anda dapat mengambil cadangan database mysql dengan banyak cara. Anda dapat langsung masuk ke cpanel hosting Anda dan mengambil cadangan penuh hanya dengan beberapa klik, tetapi jika Anda tidak memiliki akses ke cpanel, Anda dapat membuat skrip PHP sederhana dan mengaturnya ke pencadangan terjadwal. Jadi Dalam Postingan ini saya akan membagikan script PHP berikut yang berguna untuk mengambil backup / ekspor database MySql.
Gunakan Skrip PHP berikut untuk mengambil cadangan database Mysql
<?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; } ?> |