Membackup Database MySQL dengan PHP.

Adakalanya sebuah sistem informasi berbasis Web dengan menggunakan database MySQL kebingungan untuk membackup databasenya. Hal ini berbeda dengan database lain semisal FoxPro atau Acces. Biasanya kita menginstall paket Wamp/Xamp/PhpThriad di drive C, jadi satu dengan system windowsnya. Mungkin pada suatu saat Windows kita sedang error sehingga diharuskan untuk install ulang, sehingga otomatis mem-format drive C. Ditambah kita belum pernah mengeksport SQLnya dari phpMyAdmin. Apa jadinya dengan database mySQL yang telah kita buat bersusah payah tersebut. Dalam sekejap akan sirnalah data tersebut.

Nah untuk menanggulangi hal tersebut di atas MySQL telah menyediakan fasilitas khusus yang dinamakan : "mysqldump". Mysqldump adalah file berbentuk .exe (aplication) yang berguna untuk membackup database MySQL. File ini berada satu folder dengan excecutable-nya mysql.exe, yaitu di folder /bin. Untuk menggunakanya kita harus menutup koneksi dulu dengan MySQL dengan perintah mysql_close().

Berikut contohnya dalam command promt :

Database changed
mysql> select * from sd;
+----+--------+------------------+----------------------------------------------+--------------------+

id npsn nama_sd
alamat_sd
kep_sek

+----+--------+------------------+----------------------------------------------+--------------------+

1 123456 SD N Sumoroto Sumoroto, Sidoharjo,
Samigaluh

Dra. Sri Hartini

3 987655 SD N Sidoharjo Gorolangu, Sidoharjo,
Samigaluh, Kulon Progo Dwi Priyanto, S.Pd

4 123456 MIN Bangunrejo Puser, Banjararum, Kalibawang,
Kulon Progo Suratman, S.Pd


5 123456 SDN Sulur
Sulur, Sidoharjo, Samigaluh, Kulon Progo Drs. Sumijo


6 234567 SD N Samigaluh 1 Karang, Gerbosari, Samigaluh, Kulon
Progo Drs. Embuh

+----+--------+------------------+----------------------------------------------+--------------------+

5 rows in set (0.00 sec)

mysql>exit;
Bye


C:\wamp\mysql\bin>mysqldump -u root psb > db_psb.sql
C:\wamp\mysql\bin>dir *.sql

Volume in drive C is System

Volume Serial Number is 8F30-8959



Directory of C:\wamp\mysql\bin
11/05/2010 22:17 7.840 db_psb.sql
27/04/2010 08:48 7.334 perpus.sql
2 File(s) 15.174 bytes
0 Dir(s) 2.225.393.664 bytes free

C:\wamp\mysql\bin>

Pada direktori bin di atas sudah terbentuk file baru bertype .sql dengan nama db_psb.sql, yang nantinya dapat kita import dari phpMyAdmin. Nah sekarang bagaimana jika diterapkan dalam bahasa pemrograman php? Pertanyaan yang bagus :P.

Dalam php dikenal perintah untuk mengeksekusi shell, atau istilahnya untuk menjalankan file bertype .exe (aplication). Fungsi yang digunakan untuk mengeksekusi shell adalah : exec().

Contoh Skripnya secara sederhananya :

$command ="C:\wamp\MySQL\bin\mysqldump -u root db_perpus > backup/$file";
$backup=exec($command);

Untuk mencoba penerapannya dalam aplikasi, copylah skrip-skrip di bawah ini :

1. Buat database dengan nama psb.

CREATE TABLE `sd` (
`id` int(2) NOT NULL auto_increment,
`npsn` varchar(30) NOT NULL,
`nama_sd` varchar(100) NOT NULL,
`alamat_sd` varchar(200) NOT NULL,
`kep_sek` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


INSERT INTO `sd` VALUES (1,'123456','SD N Sumoroto','Sumoroto, Sidoharjo,
Samigaluh','Dra. Sri Hartini'),(3,'987655','SD N Sidoharjo','Gorolangu,
Sidoharjo, Samigaluh, Kulon Progo','Dwi Priyanto, S.Pd'),(4,'123456','MIN
Bangunrejo','Puser, Banjararum, Kalibawang, Kulon Progo','Suratman,
S.Pd'),(5,'123456','SDN Sulur','Sulur, Sidoharjo, Samigaluh, Kulon Progo','Drs.
Sumijo'),(6,'234567','SD N Samigaluh 1','Karang, Gerbosari, Samigaluh, Kulon
Progo','Drs. Embuh');

2. Buatlah sebuah halaman yang berisi link untuk mengarahkan ke skrip proses backup

Back Up Data

3. Buatlah file "backup.php" yang berisi perintah untuk membackup

backup/$file";

$backup=exec($command);



// header yang menunjukkan nama file yang akan didownload

header("Content-Disposition: attachment; filename=$file");



// header yang menunjukkan ukuran file yang akan didownload

header("Content-length: $file ");



// header yang menunjukkan jenis file yang akan didownload

header("Content-type:$file ");



// proses membaca isi file yang akan didownload dari folder 'backup'

$fp = fopen("backup/".$file, 'r');

$content = fread($fp, filesize('backup/'.$file));



fclose($fp);



// menampilkan isi file yang akan didownload

echo $content;



if ($backup) {

echo "";

} else {

echo "
";

}



exit;



?>

4. Jika telah berhasil akan didapati sebuah file dengan nama "backup@11-05-2010-22-32-17.sql", angka di belakang @ menunjukkan tanggal backup menurut tanggal sistem operasi. Bagus kan...

5. Cobalah di rumah skrip di atas

0 Responses

Tinggalkan komentar Anda...