Backup và Restore cơ sở dữ liệu MySQL Dump bằng PHP
Để có thể tiến hành sử dụng MySQL dump để backups và restore được CSDL MySQL trên server thì bạn cần một số thông số sau. user: Tên truy cập CSDL password: Mật khẩu truy cập CSDL host: Địa chỉ host lưu trữ CSDL //localhost db_name: Tên CSDL P/s : Trong trường hợp bạn chạy mysql ...
Để có thể tiến hành sử dụng MySQL dump để backups và restore được CSDL MySQL trên server thì bạn cần một số thông số sau.
- user: Tên truy cập CSDL
- password: Mật khẩu truy cập CSDL
- host: Địa chỉ host lưu trữ CSDL //localhost
- db_name: Tên CSDL
P/s: Trong trường hợp bạn chạy mysql command line trên server thì bạn có thể sử dụng puty và bạn phải có có tài khoản ssh.
1. MySQL dump backup command line
mysqldump -u [user] -p[password] [db_name] > db_backup.sql
Nhưng trong một vài trường hợp bạn chỉ muốn backup một số bảng nhất định thì bạn làm như sau.
mysqldump -u [user] -p[password] [db_name] table1 table2 > table_backup.sql
Nén GZIP trong trường hợp CSDL của bạn quá lớn.
mysqldump -u [user] -p[password] [db_name] | gzip > db_backup.sql.gz
2. MySQL dump Resore command line
mysqldump -u [user] -p[password] [db_name] < db_restore.sql
3. Tích hợp với PHP
Chúng ta sử dụng một trong các hàm exec(), shell_exec(), system() để thực hiện tác vụ này.
<?php
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASS', ');
define('DB_NAME', ');
// File name
$filename = 'backupdb_'.DB_NAME.'_'.date('Y-m-d_H-i-s',time());
exec('mysqldump --user='.DB_USER.' --password='.DB_PASS.' --host='.DB_HOST.' '.DB_NAME.' | gzip > /tmp/datastore/'.$filename.'.gz');
?>
4. Download
Trong một vài trường hợp bạn muốn download về máy tính & lưu trữ trong một thiết bị bất kỳ bạn có thể làm như sau:
<?php
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASS', ');
define('DB_NAME', ');
// File name
$filename = 'backupdb_'.DB_NAME.'_'.date('Y-m-d_H-i-s',time());
exec('mysqldump --user='.DB_USER.' --password='.DB_PASS.' --host='.DB_HOST.' '.DB_NAME.' | gzip > /tmp/datastore/'.$filename.'.gz');
// Download
$file_url = '(http|https)://'.$_SERVER['HTTP_HOST'].'/tmp/datastore/'.$filename.'.gz';
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename="" . basename($file_url) . """);
readfile($file_url);
echo(1); die();
?>
5. Kết luận.
...