Backup và Restore cơ sở dữ liệu MySQL Dump bằng PHP

PHP & MySQL 06/10/2017 07:00 683
Trong bài viết này mình sẽ hướng dẫn các bạn sử dụng MySQL dump để backups và restore được CSDL MySQL một cách dễ dàng.

Để 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.

...

Xem Thêm

Profile photo of adminTheHalfHeart

B.V.T

Sinh ra và lớn nên ở Bắc Giang. Hiện tại thì tôi đang là một lập trình viên tại VietISO. Tôi lập website này với mục đích là bookmark những gì tôi đã đọc qua và mong muốn chia sẻ những gì tôi biết.