溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

使用PHP怎么在后臺(tái)備份MySQL數(shù)據(jù)庫(kù)

發(fā)布時(shí)間:2021-05-31 16:25:09 來(lái)源:億速云 閱讀:142 作者:Leah 欄目:開(kāi)發(fā)技術(shù)

使用PHP怎么在后臺(tái)備份MySQL數(shù)據(jù)庫(kù)?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

<?php 
// 備份數(shù)據(jù)庫(kù)
$host = "localhost";
$user = "root"; //數(shù)據(jù)庫(kù)賬號(hào)
$password = ""; //數(shù)據(jù)庫(kù)密碼
$dbname = "mysql"; //數(shù)據(jù)庫(kù)名稱
// 這里的賬號(hào)、密碼、名稱都是從頁(yè)面?zhèn)鬟^(guò)來(lái)的
if (!mysql_connect($host, $user, $password)) // 連接mysql數(shù)據(jù)庫(kù)
{
 echo '數(shù)據(jù)庫(kù)連接失敗,請(qǐng)核對(duì)后再試';
  exit;
} 
if (!mysql_select_db($dbname)) // 是否存在該數(shù)據(jù)庫(kù)
{
 echo '不存在數(shù)據(jù)庫(kù):' . $dbname . ',請(qǐng)核對(duì)后再試';
  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"; //存放路徑,默認(rèn)存放到項(xiàng)目最外層
$fp = fopen($filename, 'w');
fputs($fp, $mysql);
fclose($fp);
echo "數(shù)據(jù)備份成功";
?>

PHP執(zhí)行Mysql數(shù)據(jù)庫(kù)的備份和還原

使用mysqldump命令備份

mysqldump命令將數(shù)據(jù)庫(kù)中的數(shù)據(jù)備份成一個(gè)文本文件。表的結(jié)構(gòu)和表中的數(shù)據(jù)將存儲(chǔ)在生成的文本文件中。

mysqldump命令的工作原理很簡(jiǎn)單。它先查出需要備份的表的結(jié)構(gòu),再在文本文件中生成一個(gè)CREATE語(yǔ)句。然后,將表中的所有記錄轉(zhuǎn)換成一條INSERT語(yǔ)句。然后通過(guò)這些語(yǔ)句,就能夠創(chuàng)建表并插入數(shù)據(jù)。

mysqldump基本語(yǔ)法:

mysqldump -u username -p password dbname table1 table2 ...-> BackupName.sql
  • username為數(shù)據(jù)庫(kù)用戶名;

  • password為數(shù)據(jù)庫(kù)密碼

  • dbname參數(shù)表示數(shù)據(jù)庫(kù)的名稱;

  • table1和table2參數(shù)表示需要備份的表的名稱,為空則整個(gè)數(shù)據(jù)庫(kù)備份;

  • BackupName.sql參數(shù)表設(shè)計(jì)備份文件的名稱,文件名前面可以加上一個(gè)絕對(duì)路徑。通常將數(shù)據(jù)庫(kù)被分成一個(gè)后綴名為sql的文件;

$exec="D:/phpstudy/mysql/bin/mysqldump -u".$db_user." -p".$db_pwd." ".$db_name." > ".$name;
exec($exec);
//前面要設(shè)置mysql執(zhí)行文件的路徑。

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

簡(jiǎn)單的備份數(shù)據(jù)庫(kù)就完成了。

還原使用mysqldump命令備份的數(shù)據(jù)庫(kù)的語(yǔ)法

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

參數(shù)跟備份時(shí)一樣,backup.sql是需要還原的數(shù)據(jù)庫(kù)文件,文件路徑為絕對(duì)路徑。

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI