Semua tentu setuju bahwa backup database sangat perlu dan suatu keharusan jika tidak ingin kehilangan data penting dalam database. Kerusakan atau kegagalan server hosting bisa saja terjadi sewaktu-waktu dan database mysql sebuah web bisa saja rusak dan tidak bisa diselamatkan. Untuk mencegah hal tersebut, maka sangat bijak apabila backup database dilakukan secara berkala, sehingga apabila terjadi kerusakan ataupun kehilangan database dapat direstore kembali datanya, walaupun mungkin tidak 100% karena proses restore dilakukan dengan menggunakan backup database terakhir, sebelum terjadi resiko kehilangan/kerusakan.
Ada beberapa cara untuk membackup database, diantaranya yaitu:
- Backup database melalui PhpMyadmin
- Backup database menggunakan script php.
Untuk cara yang pertama yaitu melalui PhpMyadmin, sudah banyak yang tau. Maka pada kesempatan ini saya akan bagikan script php untuk membuat backup database.
Script ini dimasukan ke dalam halaman php dan kemudian dihost di server host. Yang diperlukan adalah nama host, nama database, dan password database. Script php ini tidak selalu harus diletakkan di server host dimana database mysql berada, tapi bisa juga ditempatkan / disimpan di tempat lain. Dan jika anda memilih untuk meletakkan di tempat lain, misalnya di localhost komputer Anda, Anda hanya perlu mengganti nama host dan mysql berada. Tentu saja dengan syarat mysql database yang akan dibackup harus bisa diakses dari tempat lain selain dari server host itu sendiri (database mysql harus bisa remote mysql).
Berikut ini script php untuk membuat backup databasenya, dengan menggunakan script ini maka semua table dalam database akan dibackup dan dibuatkan query dumpnya dalam satu file sql.
<?php //isikan dengan nama host,username,password,dan nama database backup_database_tables('localhost','root','password','database', '*'); // koneksi ke database function backup_database_tables($host,$user,$pass,$name,$tables) { $link = mysql_connect($host,$user,$pass); mysql_select_db($name,$link); //membaca seluruh table dalam database if($tables == '*') { $tables = array(); $result = mysql_query('SHOW TABLES'); while($row = mysql_fetch_row($result)) { $tables[] = $row[0]; } } else { $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.';'; $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)) { $return.= 'INSERT INTO '.$table.' VALUES('; for($j=0; $j<$num_fields; $j++) { $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"; } //Menyimpan ke dalam file sql $handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+'); fwrite($handle,$return); fclose($handle); } ?>
Selanjutnya untuk melakukan backup database, anda cukup membuka file php yang berisi script ini, dan kemudian file sql yang berisi query dump akan terbentuk dan disimpan di folder sama dengan dimana anda meletakkan script php ini.
dan berikut screenshot contoh isi dari file sql yang terbentuk tersebut, file sql ini dapat anda gunakan untuk restore database Anda nantinya.
Silahkan download script php backup database ini untuk anda pergunakan, anda hanya perlu mengganti nama host, username , password , dan nama database.
Download script php backup database
password zip : www.bayuajie.com
tanya dongs,,biar waktu save sql nya ada popup download gimana ya mas?? jadi nanti user bisa menentukan sendiri dimana mau save hasil backupnya,,
boleh share disini atau ke imel yak,, makasiii
Halo, mas Arif.
untuk menunjukan file hasil backup sql , sehingga user dapat memilih file mana yang akan didownload, tambahkan script berikut di bawahnya , tempatkan scriptnya sebelum tanda ?>
$target_dir=’.’;
$handle = opendir ($target_dir);
echo “Isi direktori “.$target_dir.” :
“;
while (($file = readdir($handle)) !== false){
if($file != “.” AND $file != “..”)
{echo ““.$file.”
“;}
}
closedir($handle);
kenapa setelah dibuka nggak ada apa-apanya kak? kosong..
pertanyaan gak detail, apanya yang kosong?
untuk tampilan halamannya memang kosong, namun jika dilihat di folder dimana script php ini berada, akan ada file sql yang terbentuk.
mas bayu knapa di line ke 32($return.=’drop table’.$table.’;’;) eror “undefined variabel”?
dan di line ke 44 di fungsion ” ereg_replace” ?
halo rizky
saya bukan yang menulis script ini.
error tersebut saya yakini karena versi php rizky adalah versi yag lebih baru, sehingga tidak mengenali variablenya,
saran saya turunkan versi phpnya, .. jika di cpanel , cari fasilitas PHP version, lalu rubah ke versi php yang lebih rendah, atau jika perlu yang terendah (paling awal)..
mudah2an membantu
salam, luar biasa mas,
kalo bole req, apa mungkin kalo kita bikin 2 buah webserver dengan 2 database mysql yang sama dan saling terkoneksi, di lokal host aja mas,
jadi ketika terjadi perubahan atau ada yang input data pada server satu, akan otomatis merubah database pada server 2, demikian juga sebaliknya,
kalo menggunakan mysql replikasi itu sifatnya hanya satu arahkan,
analoginya kan seperti dropbox, google drive atau yang lain, sebanyak apa perangkat yang terhubung dengan dropbox kalo pada salah satu perangkatnya ada yang menghapus/menambah/merubah file yang ada, maka secara otomatis akan akan merubah/menghapus/menambah dan memperbaharui file yang ada di perangkat lain,
hanya saja itukan sifatnya file, bukan database (mysql)
Hi, Agus .. hal seperti itu sangat mungkin, hanya saja saya belum bisa membuatnya.. sepertinya rumit sekali. Jika dalam komputer dalam satu jaringan LAN, saya pernah mencobanya dan bisa. Jika dengan PC di rumah kita misalnya, dengan web host server/hosting , saya juga pernah mencobanya.. jadi script yang saya buat merefresh tiap detik misalnya untuk memeriksa table dalam sebuah database, jika ada perubahan penambahan record/row baru di database di web hosting, maka akan otomatis ditambahkan ke database di PC rumah… hanya seperti itu yang pernah saya buat menggunakan script php. Jika cara kerjanya seperti yang anda terangkan, saya belum bisa.. saya serahkan pada masternya saja, hehehe….
mas mau tanya dong. klo hasil backup yang berbentuk .sql itu mau di simpan di folder yang udah di sediakan bentuk skrip tambahanya gimana ya? mohon pencerahanya
Halo Rasti, untuk menyimpan database sql nya ke folder yang sudah disediakan, cukup menambahkan path lokasi foldernya, contohnya seperti ini :
$handle = fopen(‘db-backup-‘.time().’-‘.(md5(implode(‘,’,$tables))).’.sql’,’w+’);
ditambahkan nama dan path foldernya, menjadi:
$handle = fopen(‘new/’.‘db-backup-‘.time().’-‘.(md5(implode(‘,’,$tables))).’.sql’,’w+’);
Jadi, nanti file sql nya akan disimpan di folder “new”, yang mana letak folder “new” ini berada sama di mana file script backup ini berada. Jika ingin membuat foldernya di tempat lain, tinggal merubah path lokasi foldernya.