Nếu các bạn đang sở hữu một trang blog hay web thì việc sao lưu cơ sở dữ liệu (Database) là một việc làm hết sức cần thiết và phải được thực hiện thường xuyên. Bởi vì chúng ta sẽ không thể nào biết ngày nào, giờ nào trang web của chúng ta sẽ bị các kẻ xấu hack và bị lỗi. Nếu các bạn không có quá nhiều thời gian để tiến hành sao lưu (backup) bằng tay, thì mình xin chia sẻ cho các bạn một đoạn code bằng PHP. Với đoạn code này, các bạn sẽ có thể ngồi rung đùi mà xem phim hay nghe nhạc, bởi vì việc sao lưu đã được tiến hành tự động theo ngày giờ mà các bạn ấn định.
Kết nối CSDL
Đầu tiên, chúng ta sẽ cần tạo một file và đặt tên là connection.php, file này dùng để kết nối tới database mà chúng ta cần tiến hành sao lưu (backup).
<?php
$host="localhost";
$uname="YourUserName";
$pass="YourPassword";
$database = "YourDatabaseName";
$connection=mysql_connect($host,$uname,$pass);
or die("Database Connection Failed");
$selectdb=mysql_select_db($database) or die("Database could not be selected");
$result=mysql_select_db($database)
or die("database cannot be selected <br>");
?>
Các bạn nhớ thay đổi tên $host, $uname, $pass và $database phù hợp với các giá trị trên server của các bạn nhé.
Tiến hành sao lưu :
Để tiến hành sao lưu, các bạn tạo một file mới, rồi copy toàn bộ đoạn code sau vào bên trong nó :
<?php
include("connection.php");
function backup_db(){
/* Luu tru tat ca ten Table vao mot mang */
$allTables = array();
$result = mysql_query('SHOW TABLES');
while($row = mysql_fetch_row($result)){
$allTables[] = $row[0];
}
foreach($allTables as $table){
$result = mysql_query('SELECT * FROM '.$table);
$num_fields = mysql_num_fields($result);
$return.= 'DROP TABLE IF EXISTS '.$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] = str_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";
}
// Tao Backup Folder
$folder = 'DB_Backup/';
if (!is_dir($folder))
mkdir($folder, 0777, true);
chmod($folder, 0777);
$date = date('m-d-Y-H-i-s', time());
$filename = $folder."db-backup-".$date;
$handle = fopen($filename.'.sql','w+');
fwrite($handle,$return);
fclose($handle);
}
// Goi ham thuc thi
backup_db();
?>
Bây giờ, mỗi khi cần sao lưu , các bạn chỉ cần chạy đoạn code bên trên là okie. Mình mong là qua bài viết này, các bạn sẽ có thể tiết kiệm được nhiều thời gian hơn cho bản thân mình , đồng thời cũng sẽ giúp các bạn có thêm kiến thức trong việc sử dụng PHP.