數據庫的備份工作是保護數據庫正常運行的關鍵,以下的文章主要講述的是MySQL數據庫備份的一些小妙招,我們大家都知道使用MySQL dump備份數據庫的用戶所需要的權限相對而言還是比較小的,只需要select與lock table的權限就足夠了。
所以可以創建一個備份數據庫的用戶,專門用於備份數據庫,這樣可以避免數據庫受到意外的破壞。
MySQLdump是備份MySQL數據庫的一種好工具。它相對於用phpmyadmin等備份工具更加快速,又避免受php.ini等的限制,在windows系統下還可以結合計划任務實現定時遠程備份數據庫。
在備份數據庫之前我們要做足准備功夫,首先創建了執行備份操作的數據庫用戶——root,密碼為:hust。其次,確定我們要備份哪個數據庫,放在哪里。然后,確定數據庫的備份文件要放到哪里。
假設我們的任務是要備份一個位於192.168.1.2服務器上,名稱為db_test的數據庫,並把備份文件放到D:\bak\的文件夾中。於是我們可以用以下的方法執行備份恢復操作:
1.數據的備份
在命令行模式下完成對數據的備份,使用的是 MYSQLDUMP 命令。通過該命令可以將數據以文 本文件的形式存儲到指定的文件夾下。
說明:要在命令行模式下操作 MySQL 數據庫, 必須要對電腦的環境變量進行設置 ,右擊 “我的電腦” ,
在彈 出的快捷菜單 中選擇 “ 屬性” 命令,在彈出的對話框 中選擇 “ 高級” 選項卡,然后在新彈出的
對話框 中單擊 “環境變量” 按鈕,在用 戶變量的文本 框中找到變量 PATH 並選中,單擊 “ 編輯”按
紐,在變量 PATH 的變量值文本框中添加 “D:\AppServ\MySQL\bin” ( MySQL 數據庫中
bin 文件 夾的安裝路徑 ),然 后單擊 “確定 ”按紐。其中添加的 bin 文件夾的路徑根據自己安裝 MySQL
數椐庫的位置而定, (如果不想配置”環境變量“,則要定位到MySQLdump.exe所在的目錄打開命令提示符,只要在所在目錄按住shift鍵右鍵即可找到”在此處打開命令提示符“)
注意 :
如果使用集成化的安裝包來配置 PHP 的開發壞境,那 么就不需要進行上述的配置操作, 因為
集成化安裝包 已經自行配置 完成。但是,如果是獨立安裝的 MySQL, 那 么就必須進行上述的 配置,
才能在命令行模式下操作 MySQL 數據庫。
通過 MYSQLDUMP 命令備份整個數據庫的操作步驟如下:
(1)我們可以使用windows自帶的命令提示符(調用命令提示符的方法有多種,最常用的就是點擊開始菜單,選擇“運行”,輸入cmd的命令就可以啟動了),在命令提示符中輸入以下命令:
MySQLdump -uroot -phust -h 192.168.1.2 db_test > D:\bak\bakcup.sql
在這段命令中:
MySQLdump 是myqldump的程序名了;(這里我用的是集成開發環境D:\AppServ\MySQL\bin目錄下)
-u 是數據庫的用戶名,后面緊跟着用戶名root;
-p 是數據庫的密碼,后面同樣緊跟着密碼,注意是-p和密碼之間不能有空格;
-h 是數據庫的地址,如果沒有此項表明是備份本地的數據庫;
db_test 要備份的數據庫名稱;
backup.sql 備份之后的文件,后綴也可以是.txt
> 表明該MySQL數據庫備份到后面的文件,緊跟當然是備份文件的地址了,注意要用絕對文件路徑,文件的后綴也可以用.txt。
一旦執行該命令后,MySQLdump立即執行備份操作。遠程備份數據庫要似乎網絡的情況,一般遠程備份需要一定的時間的。
如果把這個命令寫成批處理文件,通過windows的計划任務可以實現定時備份數據。
在windows下用MySQLdump備份數據庫,因為沒有gzip的壓縮引擎,因此不能對備份數據庫進行壓縮,因此如果備份文件多了要經常清理過期的MySQL數據庫備份文件。
(2)在PHP中備份數據庫
前面介紹的是從windows的”命令提示符“備份數據庫,那么在PHP中如何實現呢?
在PHP中備份數據庫,主要通過exec( )函數執行系統命令
exec()函數的格式為:
string exec(string command)
參數command為要執行的系統命令。這里為備分數據表的命令,下面舉例說說明:
<?php
$filename =$_POST[filename];//這里是用戶輸入的數據庫的備份名
$mysqlstr = "mysqldump -uroot -phust db_wms >sql/".$_POST[filename];//這里使用的是相對路徑,(我將mysqldump.exe 復制到了本php文件路徑下)
//這里未指定主機,默認本機
//$mysqlstr = "mysqldump -uroot -phust db_wms >D:/AppServ/www/wms/system/sql/".$_POST[filename];
exec($mysqlstr);//
echo "<script>alert('數據備份成功!');window.location='../desk.php';</script>";
?>
2.數據的恢復
(1)使用windows自帶的命令提示符
用的是 MySQL 命令。其命令格式如下:
mysql -uroot -proot db_database <F:\db_database.sql "
其中 mysq丨 是使用的命令, -u 后的 root 代表用戶名 ,-p 后的 root 代表密碼,db
一
database 代表數據庫名 (或 表名), “<” 號后面的 “F:\db_database.txt” 是數據庫備份文件存儲的位置。
下面介紹實現數據庫恢復的操作步驟:
(1)選擇 “ 開始”/ “ 運行”命令。
(2)在彈出的對話框中輸入 “cmd” ,單擊 “ 確定”按鈕,進入命令行模式。
( 3 ) 在命令行模式中直接輸入 “ mysql -uroot-proot db_database<F:\db_database.txt ”, 然后"Enter"
(2)在PHP中恢復數據庫
<?php
$mysqlstr = "mysql -uroot -phust db_wms<sql/".$_POST[r_name];//$_POST[r_name]//為用戶選擇的用來恢復的文件名
//echo $mysqlstr;
exec($mysqlstr);
echo "<script>alert('恢復成功');location='../desk.php'</script>";
?>