PHP後臺備份MySQL數據庫的源碼實例

概述

PHP 備份 mysql 數據庫的源代碼,在完善的 PHP+Mysql 項目中,在後臺都會有備份 Mysql 數據庫的功能,有了這個功能,對於一些不便自己寫shell腳本備份的VPS來說,就不用使用 FTP 或者使用 mysql 的管理工具進行 mysql 數據庫備份下載,非常方便。

下面是一個php數據庫備份的源代碼,大家也可以根據自己的需求進行修改。

// 備份數據庫
$host = "localhost";
$user = "root"; //數據庫賬號
$password = ""; //數據庫密碼
$dbname = "mysql"; //數據庫名稱
// 這裡的賬號、密碼、名稱都是從頁面傳過來的
if (!mysql_connect($host, $user, $password)) // 連接mysql數據庫
{
echo '數據庫連接失敗,請核對後再試';
exit;
}
if (!mysql_select_db($dbname)) // 是否存在該數據庫
{
echo '不存在數據庫:' . $dbname . ',請核對後再試';
exit;
}
mysql_query("set names 'utf8'");
$mysql = "set charset utf8;\r\n";
$q1 = mysql_query("show tables");
while ($t = mysql_fetch_array($q1))
{
$table = $t[0];
$q2 = mysql_query("show create table `$table`");
$sql = mysql_fetch_array($q2);
$mysql .= $sql['Create Table'] . ";\r\n";
$q3 = mysql_query("select * from `$table`");
while ($data = mysql_fetch_assoc($q3))
{
$keys = array_keys($data);
$keys = array_map('addslashes', $keys);
$keys = join('`,`', $keys);
$keys = "`" . $keys . "`";
$vals = array_values($data);
$vals = array_map('addslashes', $vals);

$vals = join("','", $vals);
$vals = "'" . $vals . "'";
$mysql .= "insert into `$table`($keys) values($vals);\r\n";
}
}
$filename = $dbname . date('Ymjgi') . ".sql"; //存放路徑,默認存放到項目最外層
$fp = fopen($filename, 'w');
fputs($fp, $mysql);
fclose($fp);
echo "數據備份成功";
?>

PHP執行Mysql數據庫的備份和還原

PHP後臺備份MySQL數據庫的源碼實例


使用mysqldump命令備份

mysqldump命令將數據庫中的數據備份成一個文本文件。表的結構和表中的數據將存儲在生成的文本文件中。

mysqldump命令的工作原理很簡單。它先查出需要備份的表的結構,再在文本文件中生成一個CREATE語句。然後,將表中的所有記錄轉換成一條INSERT語句。然後通過這些語句,就能夠創建表並插入數據。


mysqldump基本語法:

mysqldump -u username -p password dbname table1 table2 ...-> BackupName.sql
  • username為數據庫用戶名;
  • password為數據庫密碼
  • dbname參數表示數據庫的名稱;
  • table1和table2參數表示需要備份的表的名稱,為空則整個數據庫備份;
  • BackupName.sql參數表設計備份文件的名稱,文件名前面可以加上一個絕對路徑。通常將數據庫被分成一個後綴名為sql的文件;
$exec="D:/phpstudy/mysql/bin/mysqldump -u".$db_user." -p".$db_pwd." ".$db_name." > ".$name;
exec($exec);
//前面要設置mysql執行文件的路徑。

注意:這裡的-p後面的password不要有空格,否則可能只會生成空的sql文件,後面$name是生成文件路徑及名稱。

簡單的備份數據庫就完成了。


還原使用mysqldump命令備份的數據庫的語法

mysql -u root -p password dbname < backup.sql

參數跟備份時一樣,backup.sql是需要還原的數據庫文件,文件路徑為絕對路徑。


後面小編會分享更多運維乾貨,感興趣的朋友走一波關注哩~

PHP後臺備份MySQL數據庫的源碼實例


分享到:


相關文章: