您好,登錄后才能下訂單哦!
使用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ì)億速云的支持。
免責(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)容。