普通大小數據備份還原我們可以使用命令與腳本即可。、
1.用命令實現備份
數據庫備份是很重要的。如果定期做好備份,這樣就可以在發生系統崩潰時恢復數據到最後一次正常的狀態,把損失減小到最少。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 數據庫備份文件
現 在需要將數據庫備份文件上傳到 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 數據庫導入