Membuat Backup Databse Sendiri


Membuat Backup Databse Sendiri

kali ini saya akan share tutorial cara membuat backup database dengan menggunakan PHP, dalam tutorial ini contoh database yang akan di backup adalah MySQL, dengan menggunakan backup database ini anda tidak perlu membackup dari PhpMyAdmin atau dari cpanel karena dengan ini anda bisa menempatkan kode backup database ini di dalam web aplikasi yang sudah anda buat maupun yang sedang di kerjakan.
karena satu tugas yang paling penting setiap pengembang web aplikasi adalah perlunya sering melakukan backup database, padahal sebagian besar web hosting baik yang free maupun berbayar tidak mengijinkan exec() di dalam PHP. mungkin dengan tutorial ini bisa menjadi alternatif untuk membackup database anda
Ok petama buatlah projek dengan nama terserah anda kemudian buat file koneksi.php dan simpan di dalam projek yang sudah anda buat, lalu salin kode berikut
<?php
 $host = 'localhost';
 $user = 'root';
 $pass = '';
 $db = 'dbiubttgis';

 $conn = mysql_connect($host, $user, $pass);
 mysql_select_db($db, $conn);
untuk $host, $user, $pass dan $db, ganti dan sesuaikan dengan database yang akan anda backup
selanjutnya buat file dengan nama function.php dan simpan file di dalam projek yang sudah anda buat, lalu salin kode berikut
<?php
 // set function backup
 function backup_db($table = '*') {
  $result = null;
  $tables = array();

  // check table yang akan di backup
  if ($table == '*') {
   $sql = 'SHOW TABLES';
   $rs = mysql_query($sql) or die ($sql);

   while ($row = mysql_fetch_array($rs)) {
    $name = $row[0];

    array_push($tables, $name);
   }
  } else {
   $tables = is_array($table) ? $table : explode(',', $table);
  }

  // loop table
  foreach ($tables as $table) {
   // create table
   $sql = 'SHOW CREATE TABLE '.$table;
   $rs = mysql_query($sql);
   $row = mysql_fetch_array($rs);
   $create_table = $row[1];

   // show data table
   $sql = 'SELECT * FROM '.$table;
   $rs = mysql_query($sql);

   // set field per table
   $fields = mysql_num_fields($rs);

   // create comment table
   $result .= "--------------------\n";
   $result .= '-- CREATE TABLE '.$table."\n";
   $result .= "--------------------\n";
   $result .= 'DROP TABLE '.$table.";\n";
   $result .= $create_table."\n\n";

   // loop field per table
   for ($i=0; $i<$fields; $i++) {

    // loop data table
    while($row = mysql_fetch_array($rs)) {
     $result .= 'INSERT INTO '.$table.' VALUES (';

     // loop value field per table
     for ($j=0; $j<$fields; $j++) {
      $row[$j] = addslashes($row[$j]);
      $row[$j] = preg_replace('/\n/i','\\n',$row[$j]);

      if (isset($row[$j])) {
       $result .= '"'.$row[$j].'"';
      } else {
       $result .= 'NULL';
      }

      $result .= $j < ($fields - 1) ? ', ' : '';
     }

     $result .= ");\n";
    }
   }
   $result .= "\n\n\n";
  }

  // simpan file sql
  $handle = fopen('db-backup-'.time().'-'.md5(implode(',', $tables)).'.sql', 'w+');
  fwrite($handle, $result);
  fclose($handle);
 }
file function ini yang akan memproses backup dari database yang sudah anda tentukan di file koneksi
dan yang terakhir buat file dengan nama index.php kemudian simpan di dalam projek yang sudah anda buat lalu salin kode berikut
<?php
 // load koneksi dan function
 require_once __DIR__.'/koneksi.php';
 require_once __DIR__.'/function.php';

 // show table dari database
 $sql = 'SHOW TABLES';
 $rs = mysql_query($sql) or die ($sql);

 if (isset($_POST['backup'])) {
  backup_db($_POST['table']);
 }
?>
<!DOCTYPE html>
<html>
<head>
<title>MEMBUAT BACKUP DATABSE SENDIRI</title>
<script type="text/javascript">
 window.onload = function() {
  _('all-table', 'id').addEventListener('click', function(e) {
   var checked = _('all-table', 'id').checked,
   tables = _('table', 'class');

   for(var i=0; i<tables.length; i++) {
    if (checked) {
     tables[i].checked = true;
    } else {
     tables[i].checked = false;
    }
   }
  });
 }

 function _(element, type) {
  var e = type == 'id' ? document.getElementById(element) : document.getElementsByClassName(element);
  return e;
 }
</script>
</head>
<body style="font-style: Verdana; font-size: 14px">
<form method="POST">
<h3>LIST TABLE</h3>
<hr />
<label><input type="checkbox" id="all-table" /> <b>Semua table</b></label>< br />
<?php while ($row = mysql_fetch_array($rs)) { ?>
<label><input type="checkbox" name="table[]" class="table" value="<?php echo $row[0]; ?>" /> <?php echo $row[0]; ?></label>< br />
<?php } ?>
<hr />
<button type="submit" name="backup">BACKUP DATABASE</button>
<p>* pilih table yang akan anda backup</p>
</form>
</body>
</html>
sekarang buka projek yang sudah anda buat dengan browser, jika tidak terjadi error maka anda akan mendapatkan tampilan dengan semua table yang ada di databse yang sudah anda tentukan, setelah itu coba anda ceklist salah satu table atau lebih kemudian klik button backup database, setelah itu buka projek yang sudah anda buat anda akan menemukan file bari dengan nama db-backup-... dengan ekstensi .sql
dalam tutorial ini saya membackup table categories dengan isi file .sql sebagai berikut



ada 3 untuk menggunakan function backup_db yaitu :
1. backup_db('*') jika di jalankan dalam script maka semua table yang ada di database anda akan di backup
2. backup_db('table_1, table_2') jika di jalankan dalam script maka table_1 dan table_2 table yang ada di database anda akan di backup
3. backup_db(array('table_1', 'table_2')) jika di jalankan dalam script maka table_1 dan table_2 table yang ada di database anda akan di backup
cara 2 dan 3 akan menghasilkan output yang sama, jadi anda hanya perlu memilih salah satu dari ke 3 cara di atas
Ok. sampai disini dulu tutorial kali ini selamat mencoba dan semoga bisa bermanfaat

Berbagi Via

Share Facebook Share Twitter Share Google+ Share Pinterest
Jangan lupa tinggalkan komentarnya ya :)

1 comment:

  1. ArenaDomino Partner Terbaik Untuk Permainan Kartu Anda!
    Halo Bos! Selamat Datang di ( arenakartu.org )
    Arenadomino Situs Judi online terpercaya | Dominoqq | Poker online
    Daftar Arenadomino, Link Alternatif Arenadomino Agen Poker dan Domino Judi Online Terpercaya Di Asia
    Daftar Dan Mainkan Sekarang Juga 1 ID Untuk Semua Game
    ArenaDomino Merupakan Salah Satu Situs Terbesar Yang Menyediakan 9 Permainan Judi Online Seperti Domino Online Poker Indonesia,AduQQ & Masih Banyak Lain nya,Disini Anda Akan Nyaman Bermain :)

    Game Terbaru : Perang Baccarat !!!

    Promo :
    - Bonus Rollingan 0,5%, Setiap Senin
    - Bonus Referral 20% (10%+10%), Seumur Hidup


    Wa :+855964967353
    Line : arena_01
    WeChat : arenadomino
    Yahoo! : arenadomino

    Situs Login : arenakartu.org

    Kini Hadir Deposit via Pulsa Telkomsel / XL ( Online 24 Jam )
    Min. DEPO & WD Rp 20.000,-

    INFO PENTING !!!
    Untuk Kenyamanan Deposit, SANGAT DISARANKAN Untuk Melihat Kembali Rekening Kami Yang Aktif Sebelum Melakukan DEPOSIT di Menu SETOR DANA.

    ReplyDelete