1.打開數(shù)據(jù)庫備份頁面
十年的辰溪網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整辰溪建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)公司從事“辰溪網(wǎng)站設(shè)計”,“辰溪網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
//php代碼,導(dǎo)出數(shù)據(jù)庫
public function exportSql() {
$dbName = C('DB_NAME'); //讀取配置文件中的數(shù)據(jù)庫用戶名、密碼、數(shù)據(jù)庫名
$dbUser = C('DB_USER');
$dbPwd = C('DB_PWD');
$fileName = date("Y-m-d")."_".$dbName.".sql";
$dumpFileName = "./sql_backup/".$fileName;
exec("D:/xampp/mysql/bin/mysqldump -u$dbUser -p$dbPwd $dbName $dumpFileName");
}
2.php exec函數(shù),執(zhí)行外部程序命令
exec(“D:/xampp/mysql/bin/mysqldump -u$dbUser -p$dbPwd $dbName $dumpFileName”);
此處執(zhí)行mysqldump命令,導(dǎo)出數(shù)據(jù)庫到$dumpFileName中,“D:/xampp/mysql/bin/”為mysqldump所在位置,“-u$dbUser -p$dbPwd”數(shù)據(jù)庫的用戶名和密碼(中間不要加空格),$dbName為要導(dǎo)出數(shù)據(jù)庫的名字
使用mysqldump函數(shù)
mysqldump -u username -p dbname table1 table2 ... ? BackupName.sql
dbname參數(shù)表示數(shù)據(jù)庫的名稱
table1和table2參數(shù)表示需要備份的表的名稱,為空則整個數(shù)據(jù)庫備份;
BackupName.sql參數(shù)表設(shè)計備份文件的名稱,文件名前面可以加上一個絕對路徑。通常將數(shù)據(jù)庫被分成一個后綴名為sql的文件。
備份數(shù)據(jù)庫的主要過程:
切換到對應(yīng)的數(shù)據(jù)庫;
使用show create table ?tableName,獲得表結(jié)構(gòu),寫到文件中;
然后查詢所有的表數(shù)據(jù),循環(huán)生成相對應(yīng)sql語句,寫到文件中;
試運行生成的sql文件。
我想到的有三種思路吧
1.如果服務(wù)器允許mysqldump 并且沒有禁止PHP的shell_exec()這個函數(shù)的話
直接在PHP里面執(zhí)行mysqldump就可以了。
2.通過mysql_query('show tables')的返回值遍歷每個表,循環(huán)對每個表使用查詢語句
select * into outfile '路徑/文件名' from 表名
缺點是這樣得到的是純數(shù)據(jù),恢復(fù)數(shù)據(jù)的時候你需要額外再寫腳本
3.同樣通過show tables返回表名,遍歷每個表,通過select 語句查詢,然后逐條結(jié)果處理,比如手工添加drop table 和create table 以及insert into等等,然后再寫入文件。這樣得到的備份數(shù)據(jù)是比較接近mysqldump的結(jié)果的,各種工具都可以用來恢復(fù)數(shù)據(jù)。缺點是如果數(shù)據(jù)庫太大的話,效率不好說
總之我不推薦用PHP來實現(xiàn)mysql數(shù)據(jù)的備份,如果可能的話還是用mysqldump吧
linux系統(tǒng)自帶crontab計劃任務(wù),可以滿足你的需求。
編輯crontab配置文件的方法是:
crontab -e
編輯完成后,用:x組合鍵關(guān)閉并保存。不需要重啟操作,時間到了以后,系統(tǒng)會自動調(diào)用定時任務(wù)。
示例,在凌晨4點重啟lighthttpd:
0 4 * * * /usr/local/etc/rc.d/lighttpd restart
將命令的路徑改為你寫的備份腳本。
望采納!