shoutmix

09 Februari 2010

Backup Database using PHP

satu hal yang paling menyusahkan dalam backup data adalah.. backup data/ekspor yang ditawarkan dari phpmyadmin menyulitkanku. Dimana setelah berhasil di eksport, berikutnya pas di impor error.. apalagi kl udah main database dengan ukuran 12mb..

akhirnya gw memutuskan bikin skrip sendiri untuk convert dan ujung2nya pusing. Walo akhirnya sekarang bisa. Jadi rada-rada ingin share aja

konsep dari program ini adalah Backup data ke sql seperti halnya phpmyadmin. Tentu kita berfikir, kenapa cape2 bikin skrip sendiri yang mirip phpmyadmin. ada 3 alasan:

  1. Ambisi pribadi. jangan komen.. semua juga begitu
  2. masalah import. Saat import lebih dari 16mb (32 mb malah), phpmyadminnya ngambek (kayak anak kecil aja) dan saat dibuka.. tambah pusing karena isinya udah banyak dan waktu untuk edit2 udah bisa dibilang Ngak ada lagi
  3. waktu.. seperti yang tertulis di atas.. bayangkan server anda down ato kena virus tp untuk mengembalikannya cuma dikasi waktu 2 hari.
    kejadian ini pernah terjadi pada forum yg saya ikuti.. bahkan sampe 1 minggu.. Parah khan

Konsep dari program ini sebagai berikut

  • buka database sesuai permintaan. Tentunya mengurangi beban server mysql jadi kita bisa menentukan database mana aja yang di backup
  • melihat isi table dari database bersangkutan. Pada awalnya gw gk sadar kl ada salah ketik nama database, jadi kemudian sy tambahin.. kl ngak ada nanti ada peringatan
  • select semua data lalu masukkan ke variabel string
  • setiap input/insert diberi komentar Break.. nantinya break ini akan 
  • setelah semua di dapat langsung taro di file yang tertulis
sebenarnya ada versi no 1 yang gw bikin di server kantor. sistemnya sama tetapi bedanya saya spesifikasikan table yang akan di backup (ada beberapa sy skip).. dan tiap table yg di export di taro di tempat berbeda (file berbeda) dengan format {namaDB}_{table}.sql
Skrip dapat dilihat pada halaman selanjutnya



//koneksi
$link mysql_connect('localhost''root''');

if (!
$link) {

    die(
'Could not connect: ' mysql_error());

//=======other variable=========
$filename='backup.sql.txt';
$aDB=array('test','cdcol');



foreach( 
$aDB as $sDB)
{

    
$resDB=@mysql_list_tables ($sDB);

    if(
$resDB)

    {

        while(
$row0=mysql_fetch_array($resDB))

        {

            
//print_r($row);echo "";

            //$str.='-- table '.$row[0];

            
$str.="\n";

            
$str.=sqlTable($sDB,$row0[0],$link);

      

        }
//while($row=mysql_fetch_array($resDB))

    
}else{ //if($resDB)

        
$str.="\nNO Database with that name";



    } 
//else if($resDB)
}//foreach($aDB as $sDB)


function sqlTable($db,  $table$link)
{

    
$sql="select * from $db.$table";

    
$res=mysql_db_query($db,$sql$link)or die(mysql_error());

    while(
$row=mysql_fetch_array($res,MYSQL_NUM))
    {

        
$s.="INSERT DELAYED INTO `$db.".$table."` VALUES('$row[0]'";

        for(
$i=1;$i<sizeof($row);$i++)
        {
            
$s.=", '".addslashes($row[$i])."'";

        }
//for($i=1;$i



         
$s.=");
\n-- [break here]
\n"
;



    }  
//while($row=mysql_fetch_array($res,MYSQL_NUM))



     
return $s;
//INSERT DELAYED INTO `jenjang` (`jid`, `label`) VALUES(7, 'SP-1');
//function sqlTable($table, $link)
print ''.substr($str,0,1000).'...';



if (! 
$handle fopen($filename'w+')) {

         echo 
"Cannot open file ($filename)";

         exit;

//if (!$handle



     
if (fwrite($handle$str) === FALSE) {

        echo 
"Cannot write to file ($filename)";

        exit;

    }
//if (fwrite($han



    
fclose($handle);



thx forum indowebster untuk pewarnaannya
untuk menggunakan ada 3 variabel yang harus di ubah yaitu
$link = Koneksinya
$aDb = databasenya
$filename = targetnya

0 komentar:

Posting Komentar

Powered By Blogger