01/10/2018, 17:00

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.

    ...

      0