普通大小資料備份還原我們可以使用命令與指令碼即可。、
1.用命令實現備份
Database Backup是很重要的。如果定期做好備份,這樣就可以在發生系統崩潰時恢複資料到最後一次正常的狀態,把損失減小到最少。MySQLl提供了一個mysqldump命令,我們可以用它進行資料備份,下面假設要備份tm這個資料庫:
#mysqldump -u root -p tm > tm_050519.sql
按提示輸入密碼,這就把tm資料庫所有的表結構和資料備份到tm_050519.sql了,因為要總進行備份工作,如果資料量大會佔用很大空間,這時可以利用gzip壓縮資料,命令如下:
#mysqldump -u root -p tm | gzip > tm_050519.sql.gz
系統崩潰,重建系統時,可以這樣恢複資料:
#mysql -u root -p tm < tm_050519.sql
從壓縮檔直接恢複:
#gzip < tm_050519.sql.gz | mysql -u root -p tm
當然,有很多MySQL工具提供更直觀的備份恢複功能,比如用phpMyAdmin就很方便。但我認為,mysqldump是最基本、最通用的。
2.利用crontab,系統每天定時備份mysql資料庫
【內容提要】利用系統crontab來定時執行備份檔案,按日期對備份結果進行儲存,達到備份的目的。
利用系統crontab來定時執行備份檔案,按日期對備份結果進行儲存,達到備份的目的。
1、建立儲存備份檔案的路徑/mysqldata
#mkdir /mysqldata
2、建立/usr/sbin/bakmysql檔案
#vi /usr/sbin/bakmysql
輸入
rq=` date +%Y%m%d `
tar zcvf /mysqldata/mysql$rq.tar.gz /var/lib/mysql
或者寫成
rq=` date +%Y%m%d `
mysqldump --all-databases -u root -p密碼 > /mysqldata/mysql$rq.sql
/var/lib/mysql是你資料庫檔案的目錄,部分使用者是/usr/local/mysql/data,每個人可能不同
/mysqldata/表示儲存備份檔案的目錄,這個每個人也可以根據自己的要求來做。
3、修改檔案屬性,使其可執行
# chmod +x /usr/sbin/bakmysql
4、修改/etc/crontab
#vi /etc/crontab
在下面添加
01 3 * * * root /usr/sbin/bakmysql
表示每天3點鐘執行備份
5、重新啟動crond
# /etc/rc.d/init.d/crond restart
完成。
這樣每天你在/mysqldata可以看到這樣的檔案
mysql20040619.tar.gz
你直接下載就可以了。
cd /usr/local/mysql/bin/
mysqldump -u使用者名稱 -p密碼 --databases 庫名 >/backdata/ddd07-11-15.sql
恢複文法
mysqladmin create target_db_name
mysql target_db_name < backup-file.sql
即 mysql 庫名 < 檔案名稱
OK,注意,-u後面沒有空格, 你只需要把上面的中文換成你的相關資訊就可以了!
如果是幾個G或幾十個GB的資料上面方法可能就比較慢了,下面我來介紹一個超大的備份檔案匯入工具BigDump使用
方法
BigDump 資料庫恢複工具用法示範
假 設我們已經有了一個 MySQL 資料庫的備份檔案,名為 gate2.sql,檔案大小約 150MB(這麼大的檔案別指望通過 phpMyAdmin 來恢複了)。資料庫字元編碼為 utf-8。我們示範一下如何通過 bigdump.php 工具將這個備份檔案恢複到線上資料庫中去。
1、擷取 BigDump 檔案並設定
我們下載 BidDump 工具並解壓,得到一個 bigdump.php 檔案。毫無疑問,bigdump.php 檔案需要設定一些參數,否則它怎麼知道要匯入的資料庫的串連帳號?
用文字編輯器開啟 bigdump.php 檔案,在大約第 38 行開始,我們設定要匯入的 MySQL 資料庫串連參數。
$db_server = 'localhost'; $db_name = 'test'; $db_username = 'root'; $db_password = '111111'; 如果你的資料庫是 UTF-8 編碼,那麼此處就要修改為:
$db_connection_charset = 'utf8';
注意那個連字號要去掉。如下圖所示
接下來將設定好的 bigdump.php 檔案上傳到 Joomla 網站上,推薦上傳到 /tmp 這個臨時目錄。
2、上傳 MySQL 資料庫備份檔案
現 在需要將Database Backup檔案上傳到 bigdump.php 所在的 /tmp 目錄中。考慮到檔案較大,我們通過FTP 軟體 FileZilla 上傳zip 格式的檔案,然後藉助 Joomla 後台安裝的 eXtplorer 資源管理員組件將其遠程解壓,在 /tmp 目錄中得到 gate2.sql 檔案。
3、啟動 BigDump 工具
在瀏覽器地址欄輸入 bigdump.php 所在 URL 並斷行符號,運行這個檔案。例如本次示範是在本地測試伺服器上進行,那麼對應的運行網址是:
http://localhost/gate/tmp/bigdump.php
如果你輸入的 URL 正確,就應該看到如下畫面:
這就表示 BigDump 工具已經成功啟動,它在啟動時就自動掃描所在目錄中的全部檔案和子目錄。如果找到 SQL 格式或者 gzip/zip 格式檔案,就假設這是資料庫檔案,在這些檔案後面,就會顯示出相應的操作鏈結接。例如在上圖中,它探測到所在目錄中有一個 gate2.sql 檔案,那麼針對該檔案就在表格右側同一行中顯示了兩條操作鏈結接,分別是“Start Import”(開始匯入)和“Delete file”(刪除檔案)。上圖的表格中也顯示了 SQL 檔案的大小,可以看到這個備份檔案接近 150MB。
在上圖中,還可以看到一個檔案上傳功能,點擊那個“瀏覽”按鈕,你就可以上傳一個 SQL 檔案(或其壓縮包)來進行匯入。但是我們不推薦使用此功能。對於大型檔案,FTP 上傳是最佳選擇。
4、運行 BigDump 匯入功能
點擊上圖中的“Start Import”連結,就看到如下畫面:
上面這個截圖是匯入開始一段時間之後所截取的,可以看出 BigDump 正在順利進行 SQL 檔案的匯入。表格中不僅顯示了檔案大小,還顯示了已經匯入的位元組數及總體進度。
經過一段時間後(大約20分鐘),這個 150MB 大小的 SQL 檔案終於匯入結束,看到如下畫面:
原來顯示進度條的地方,現在顯示了一條訊息:
Congratulations: End of file reached, assuming OK
意思是說:已經到達檔案末尾,想必應該成功了。看到這條訊息,你就可以完全放心了。BigDump 已經成功地將你的 SQL 備份檔案匯入到你所指定的 MySQL 資料庫裡面了。
注意:資料庫恢複成功結束後,不要忘記刪除 bigdump.php 備份工具和你的 SQL 檔案!使用 BigDump 資料庫匯入