Script PHP Backup dan Restore Database MySQL


Script PHP Backup dan Restore Database MySQL. Ketika membuat sebuah program tentu saja kita membutuhkan database sebagai tempat penyimpanan data.

Biasanya kita melakukan backup atau restore data dari database secara manual melalui phpMyAdmin. Pada kesempatan ini saya akan membagikan script PHP backup dan restore database MySQL.

Pada artikel ini tidak ada tutorial dalam penggunaannya, karena saya yakin Anda semua seudah paham dalam penerapannya, maka dari itu saya hanya akan membagikan dalam bentuk scriptnya saja. Dan sebelumnya juga pada postingan lainnya saya membagikan script file koneksi PHP.

Bagi Anda yang kebetulan sedang mencari script php backup dan restore silahkan bisa menggunakannya script dibawah ini.

Dalam penggunaan script backup dan restore ini ada 3 page yaitu, backup data, download backup data dan rstore data. Berikut adalah ke tiga page tersebut.

alt="Script PHP Backup dan Restore Database MySQL"

1. backup-data.php

<section class="content-header">
    <h1>Backup<small>Database</small></h1>
    <ol class="breadcrumb">
        <li><a href="home-user.php"><i class="fa fa-dashboard"></i>Dashboard</a></li>
        <li class="active">Backup Database</li>
    </ol>
</section>
<section class="content">
    <div class="row">
        <div class="col-md-12">
   <div class="box box-primary">    
    <div class="box-body">
     <div class="panel-body">
      <?php
       error_reporting(0);
       $file=date("Ymd").'_backup_database_'.time().'.sql';
       backup_tables("localhost","root","","db_sppdinas",$file);
      ?>
      <p align="center">Backup database telah berhasil !</p><br />
      <p align="center"><a style="cursor:pointer" onclick="location.href='./pages/backup-restore/download_backup_data.php?nama_file=<?php echo $file;?>'" title="Download">Download file database</a></p>
      <?php
      /*
      untuk memanggil nama fungsi :: jika anda ingin membackup semua tabel yang ada didalam database, biarkan tanda BINTANG (*) pada variabel $tables = '*'
      jika hanya tabel-table tertentu, masukan nama table dipisahkan dengan tanda KOMA (,)
      */
      function backup_tables($host,$user,$pass,$name,$nama_file,$tables ='*') {
       $link = mysql_connect($host,$user,$pass);
       mysql_select_db($name,$link);
       
       if($tables == '*'){
        $tables = array();
        $result = mysql_query('SHOW TABLES');
        while($row = mysql_fetch_row($result)){
         $tables[] = $row[0];
        }
       }
       else{//jika hanya table-table tertentu
        $tables = is_array($tables) ? $tables : explode(',',$tables);
       }
       
       foreach($tables as $table){
        $result = mysql_query('SELECT * FROM '.$table);
        $num_fields = mysql_num_fields($result);
                
        $return.= 'DROP TABLE '.$table.';';//menyisipkan query drop table untuk nanti hapus table yang lama
        $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
        $return.= "\n\n".$row2[1].";\n\n";
        
        for ($i = 0; $i < $num_fields; $i++) {
         while($row = mysql_fetch_row($result)){
          //menyisipkan query Insert. untuk nanti memasukan data yang lama ketable yang baru dibuat
          $return.= 'INSERT INTO '.$table.' VALUES(';
          for($j=0; $j<$num_fields; $j++) {
           //akan menelusuri setiap baris query didalam
           $row[$j] = addslashes($row[$j]);
           $row[$j] = ereg_replace("\n","\\n",$row[$j]);
           if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
           if ($j<($num_fields-1)) { $return.= ','; }
          }
          $return.= ");\n";
         }
        }
        $return.="\n\n\n";
       }       
       //simpan file di folder
       $nama_file;
       
       $handle = fopen('./pages/backup-restore/backup/'.$nama_file,'w+');
       fwrite($handle,$return);
       fclose($handle);
      }
      ?>
     </div>
    </div>
   </div>
        </div>
 </div>
</section>

2. download-backup-data.php

<?php
 $file=$_GET['nama_file']; 
    // nama file yang akan didownload
 header("Content-Disposition: attachment; filename=".$file);
    // ukuran file yang akan didownload
 header("Content-length: ".$file);
    // jenis file yang akan didownload
 header("Content-type: ".$file);

 // proses membaca isi file yang akan didownload dari folder
 $fp  = fopen("./backup/".$file, 'r');
 $content = fread($fp, filesize('./backup/'.$file));
 fclose($fp);
 echo $content;
 exit;
?>

3. restore-data.php

<section class="content-header">
    <h1>Restore<small>Database</small></h1>
    <ol class="breadcrumb">
        <li><a href="home-user.php"><i class="fa fa-dashboard"></i>Dashboard</a></li>
        <li class="active">Restore Database</li>
    </ol>
</section>
<section class="content">
    <div class="row">
        <div class="col-md-12">
   <div class="box box-primary">    
    <div class="box-body">
     <div class="panel-body">
      <form enctype="multipart/form-data" method="post" class="form-horizontal">
       <div class="form-group">
        <label class="col-sm-3 control-label">File Database (*.sql)</label>
        <div class="col-sm-7">
         <input type="text" name="nip" class="form-control" maxlength="12">
         <input type="file" name="datafile" size="30" />
        </div>
       </div>
       <div class="form-group">
        <div class="col-sm-offset-3 col-sm-7">
         <button type="submit" name="restore" class="btn btn-danger">Restore Database</button>
        </div>
       </div>
      </form>
      <?php
      if(isset($_POST['restore'])){
       $koneksi=mysql_connect("localhost","root","");
       mysql_select_db("db_sppdinas",$koneksi);
       
       $nama_file=$_FILES['datafile']['name'];
       $ukuran=$_FILES['datafile']['size'];
       
       if ($nama_file==""){
        echo "Fatal Error";
       }
       else{
        //definisikan variabel file dan alamat file
        $uploaddir='./pages/backup-restore/restore/';
        $alamatfile=$uploaddir.$nama_file;

        if (move_uploaded_file($_FILES['datafile']['tmp_name'],$alamatfile)){
         $filename = './pages/backup-restore/restore/'.$nama_file.'';         
         $templine = '';
         $lines = file($filename);

         foreach ($lines as $line){
          if (substr($line, 0, 2) == '--' || $line == '')
           continue;
         
          $templine .= $line;
          if (substr(trim($line), -1, 1) == ';'){
           mysql_query($templine) or print('Error performing query \'<strong>' . $templine . '\': ' . mysql_error() . '<br /><br />');
           $templine = '';
          }
         }
         echo "<center>Restore Database Telah Berhasil, Silahkan dicek !</center>";
        }
        else{
         echo "Restore Database Gagal, kode error = " . $_FILES['location']['error'];
        } 
       }

      }
      else{
       unset($_POST['restore']);
      }
      ?>
     </div>
    </div>
   </div>
        </div>
 </div>
</section>

Itu merupakan ke tiga action page yang di perlukan dalam pemrosesan backup dan restore database MySQL. Silahkan untuk Anda terapkan pada project yang sedang Anda bangun. Apabila masih bingung cara penerapannya silahkan bisa di tanyakan di kolom komentar atau bisa Anda baca tutorialnya disini.

Baiklah, itu saja yang bisa saya bagikan mengenai script php backup dan restore database MqSQL, semoga bermanfaat.

Terima kasih.

Comments