Quoted from http://www.jscud.com/ 本文是在linux下,mysql 4.1.14版本下測試的,經過適當修改可能適合mysql 4.0,5.0及其其他版本. 本文適合於沒有啟動複製功能的mysql,如果啟動了複製,可能不需要採取這種備份策略或者需要修改相關參數. 每個人的備份策略都可能不同,所以請根據實際情況修改,做到舉一反三,不要照搬照抄,可能會造成不必要的損失. 希望你明白這個腳本要幹什麼工作! 腳本描述 每7天備份一次所有數據,每天備份binlog,也就是增量備份. (如果數據少,每天備份一次完整數據即可,可能沒必要做增量備份) 作者對shell腳本不太熟悉,所以很多地方寫的很笨. 開啟 bin log 在mysql 4.1版本中,默認只有錯誤日誌,沒有其他日誌.可以通過修改配置打開bin log.方法很多,其中一個是在/etc/my.cnf中的mysqld部分加入: [mysqld] log-bin 這個日誌的主要作用是增量備份或者複製(可能還有其他用途). 如果想增量備份,必須打開這個日誌. 對於數據庫操作頻繁的mysql,這個日誌會變得很大,而且可能會有多個. 在數據庫中flush-logs,或者使用mysqladmin,mysqldump調用flush-logs後並且使用參數delete-master -logs,這些日誌文件會消失,並產生新的日誌文件(開始是空的). 所以如果從來不備份,開啟日誌可能沒有必要. 完整備份的同時可以調用flush-logs,增量備份之前flush-logs,以便備份最新的數據. 完整備份腳本 如果數據庫數據比較多,我們一般是幾天或者一週備份一次數據,以免影響應用運行,如果數據量比較小,那麼一天備份一次也無所謂了. 下載假設我們的數據量比較大,備份腳本如下:(參考過網路上一個mysql備份腳本,致謝 :)) #!/bin/sh # mysql data backup script # by scud http://www.jscud.com # 2005-10-30 # # use mysqldump –help,get more detail. # BakDir=/backup/mysql LogFile=/backup/mysql/mysqlbak.log DAT...