Latar Belakang
Database banyak digunakan untuk menyimpan data baik pada aplikasi desktop maupun berbasis web. untuk alasan keamana, database perlu dilakukan proses backup. sehingga jika suatu saat terjadi kerusakan data, dapat dilakukan proses restore database.
Bagi teman-teman yang terbiasa menggunakan aplikasi phpmyadmin pasti pernah menggunakna fasilitas export dan import database. nah pada artikel kalo ini saya akan membahas tentang sebuah aplikasi sederhana yang digunakan untuk backup dan restore database. Dalam aplikasi ini terdapat 3 file yaitu :
- index.php yang digunakan untuk backup sekaligus halaman utama aplikasi
- download_backup_data.php yang digunakan untuk mendownload file database (*.sql) yang sudah tersimpan didalam folder backup
- recovery_data.php digunakan untuk restore atau mengembalikan database ke keadaan semula sesuai dengan isi query yang ada didalam file backup database
Script Backup Database
1) Buat nama file untuk backup database
//membuat nama file
$file=date(“DdMY”).’_ri32_backup_data_’.time().’.sql’;
2) Memanggil fungsi backup database
//panggil fungsi dengan memberi parameter untuk koneksi dan nama file untuk backup
backup_tables(“localhost”,”root”,””,”absensi_db“,$file);
3) Fungsi untuk backup database
/*
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 = ‘*’)
{
//untuk koneksi database
$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);
}//looping dulu ah
foreach($tables as $table)
{
$result = mysql_query(‘SELECT * FROM ‘.$table);
$num_fields = mysql_num_fields($result);//menyisipkan query drop table untuk nanti hapus table yang lama
$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))
{
//menyisipkan query Insert. untuk nanti memasukan data yang lama ketable yang baru dibuat. so toy mode : ON
$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 yang anda tentukan sendiri. kalo saya sech folder “DATA”
$nama_file;$handle = fopen(‘./backup/‘.$nama_file,’w+’);
fwrite($handle,$return);
fclose($handle);
}
4) Membuat link untuk download file backup database
<a style=”cursor:pointer” onclick=”location.href=’download_backup_data.php?nama_file=‘” title=”Download”>Backup database telah selesai. Download file database
Script download File Backup database
Script Upload file sebelum di Restore
//definisikan variabel file dan alamat file
$uploaddir=’./restore/‘;
$alamatfile=$uploaddir.$nama_file;//periksa jika proses upload berjalan sukses
if (move_uploaded_file($_FILES[‘datafile’][‘tmp_name’],$alamatfile))
Script untuk restore database
$filename = ‘./restore/’.$nama_file.”;
// Temporary variable, used to store current query
$templine = ”;
// Read in entire file
$lines = file($filename);
// Loop through each line
foreach ($lines as $line)
{
// Skip it if it’s a comment
if (substr($line, 0, 2) == ‘–‘ || $line == ”)
continue;
// Add this line to the current segment
$templine .= $line;
// If it has a semicolon at the end, it’s the end of the query
if (substr(trim($line), -1, 1) == ‘;’)
{
// Perform the query
mysql_query($templine) or print(‘Error performing query \’‘ . $templine . ‘\’: ‘ . mysql_error() . ‘‘);
// Reset temp variable to empty
$templine = ”;
}}
echo “Berhasil Restore Database, silahkan di cek.”;
Tampilan Output
Download
https://blogri32.blogspot.co.id/2017/12/free-downloads.html
Sekian tutorial dari saya, semoga dapat bermanfaat untuk teman-teman dan Anda semua…aamiin
Depok, 15-12-2010
KangAgus
Filed under: Website | Tagged: Aplikasi, backup, dan, Database, membuat, menggunakan, php, restore, untuk, web |
thank’s ilmunya bermanfaat banget….
LikeLike
Alhamdulilah, sama2 🙂
LikeLike
makasih mas, saya nyari2x k mana2x baru k temu di sini,…
LikeLike
sama2 🙂
LikeLike
Mas agus trima kasih atas Ilmunya saya menggunakan referensi dari tutorial mas agus beserta tutorial dari ‘http://blog.rosihanari.net/membuat-sendiri-script-php-untuk-backup-mysql’
Saya mohon pencerahannya, saya mencoba script yg saya buat sendiri
dimana saya melakukan upload file yang saya sudah upload menggunakan mysqldump terlebih dahulu ke directory mysql/bin lalu saya mengeksekusi function restore database di sheel via php, dengan code sbb:
if(isset($_FILES[‘datafile’]))
{
$file = $_FILES[‘datafile’][‘tmp_name’];
}
//mengupload file sql ke directory bin
$temp=”C:/xampp/mysql/bin/backup.sql”;
if(move_uploaded_file($file,”$temp”))
{
$command = “C:/xampp/mysql/bin/mysql -u”.$username_data.” -p”.$password_data.” “.$database_data.” < backup.sql";
// mengeprint command eksekusi
echo $command;
// menjalankan command restore di shell via PHP
exec($command);
}
waktu saya melakukan exekusi pada script ini, tidak ditemukan error apapun, tapi database saya tidak mengalami restore, tapi apabila saya mengcopy command dari hasil page yg telah terexekusi dan menjalankannya ke command prompt, maka database saya akan te-restore, maaf apabila penjelasannya membinggungkan
Terima kasih
LikeLike
assalamu’alaikum mas andi
dalam referensi fungsi php shell_exec :
http://php.net/manual/en/function.shell-exec.php
terdapat catatan…
Note:
This function is disabled when PHP is running in safe mode.
Sehingga settingnya harus seperti ini :
safe_mode = off
exec = On
shell_exec = On
untuk itu silahkan baca tutorial dibawah ini :
http://kamtiez.web.id/exploit/membuat-safe-mode-on-menjadi-safe-mode-off-pada-php-shell.pl
semoga berhasil 🙂
LikeLike
was’alaikum mas agus,
trima kasih atas replynya,
saya minta maaf mas, ternyata terdapat kesalahan pada script $command saya, dimana seharusnya saya memberikah juga address direcotry dari file sql tersebut, tetapi saya langsung saja menuliskan nama file sqlnya.
Untuk info tentang safemodenya membantu juga jadi ada tambahan ilmu tentang relasi safemode dan fungsi execnya
(^_^)
LikeLike
good job mas andy 🙂
RABBI ZIDNII’ILMAN WARZHUQNI FAHMAN…AAMIIN
LikeLike
kenapa muncul
Deprecated: Function ereg_replace() is deprecated in D:\MY XAMPP\xampp\htdocs\backup-restore\index.php on line 77
LikeLike
Gan, makasih ya informasinya 😀
LikeLike
mas mau tanya donks yang dihasilkan dari php ini kan file sql kalau mau bikin file sql nya terpassword gimana ya?
LikeLike
mas agus syukron……atas Ilmunya saya menggunakan referensi dari tutorial mas agus, untuk web site saya dan lembaga saya mas,,,
LikeLike
Terima kasih Kang Agus Sumarna, tulisannya sangat bermanfaat sekali.
LikeLike
error_reporting(0);
LikeLike
terimakasih banyak untuk tutorialnnya mas
sangat bermanfaat sekali (y)
LikeLike