Backup MySQL Menggunakan PHP dan Scheduled Tasks

Assalamualaikum, Salam Ramadhan dan Salam Hormat kepada semua pengunjung AIDC. Post kali ini saya ingin kongsikan kepada anda semua untuk membuat Backup database MySQL dengan menggunakan skrip PHP. Selain daripada menggunakan PHP, anda juga boleh menggunakan Scheduled Tasks (Windows) bersama dengan fail .bat. Contohnya saya akan tunjuk di bawah nanti. Semoga dengan dua kaedah ini dapat membantu anda dalam membuat proses backup.
1. Menggunakan PHP
<?php
/**
* @author Ammar Idris
* @web http://www.ammaridris.com
* @relese_date 24 Aug 2011, 24 Ramadhan 1432
*/
db_backup('hostname','user','password','namadb'); // CONTOH : db_backup('localhost','root','r0o0tZ','aiblog');
function db_backup($host,$user,$pass,$namadb,$tables = '*')
{
$link = mysql_connect($host,$user,$pass);
mysql_select_db($namadb,$link);
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);
echo mysql_error();
$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";
}
$handle = fopen('db_backup_'.$namadb.'_'.date('dmY').'.sql','w+');
fwrite($handle,$return);
fclose($handle);
echo "Selesai...";
}
?>
- Copy script tersebut ke Notepad dan save kan kepada file
backup_php.php - Letakkan di dalam web server anda dan run
Download
backup_php.php2. Menggunakan Scheduled Tasks (Windows)
@echo off set month=%date:~3,2% set day=%date:~0,2% set year=%date:~6,4% set Srcdir="C:\apps\mysql\data" set Dstdir="D:\Backup" echo %year% xcopy %Srcdir% %Dstdir%\%month%-%day%-%year%-backup\mysqldata\ /h/k/i/s/y
- Copy script tersebut ke Notepad dan save kan kepada file
backup_task.bat set Srcdir="C:\apps\mysql\data"- lokasi folder databaseset Dstdir="D:\Backup"- lokasi simpanan backup- Letakkan file
backup_task.battersebut di lokasi yang bersesuaian, saya pilih untuk meletakkan di C:/ - Pergi ke Control Panel > Scheduled Tasks > Add Scheduled Tasks > Next > Browse > (Pilih lokasi
backup_task.battersebut) > Pilih sama ada Daily, Weekly, Monthly dan sebagainya. Saya pilih Weekly > Masukkan Start time dan days > Masukkan username dan password (jika ada) > Finish.
Download
backup_task.bat