周海漢 /文
2010.3.17
mysql資料庫有幾個表分別記錄cpu等占用資訊的日誌,有大量記錄。這些日誌對於定位問題很重要,但如果沒有問題,則比較多餘。運維手工清除不僅麻煩,而且容易出錯。因此,寫乙個指令碼,放到crontab裡,定期備份和清除日誌。
#!/bin/sh # file: /root/bcdb.sh # author: zhouhh # date: 2010-3-17 # database info db_name=("systemdb" "localdb") db_user="root" db_pass="******" # others vars bin_dir="/usr/bin" bck_dir="/var/lib/mysql/backup" systables=("history1" "history2" "cpu_history") localtables=("cpulog") date=`date +%f` #backup systemdb for db in $ do echo echo "backup $db to $bck_dir/$_$date.gz..." $bin_dir/mysqldump --opt -u$db_user -p$db_pass $db | gzip > "$bck_dir/$_$date.gz" echo "backup $db finished!" done #clear systemdb tables; echo echo "clear table logs..." for tb in $ do echo "clear $tb..." $bin_dir/mysql -u$db_user -p$db_pass $ -e "truncate table $tb;" done; #clear localdb tables for tb in $ do echo "clear $tb..." $bin_dir/mysql -u$db_user -p$db_pass $ -e "truncate table $tb;" done; echo echo 'clear table logs successfully'
本指令碼備份systemdb和localdb兩個庫,並清除兩個庫中的表。在/var/lib/mysql中建立backup目錄,指令碼執行時將資料庫備份到/var/lib/mysql/backup/資料庫名_日期.gz
也可以在指令碼中檢查一下:
#check backup dir
if ! [ -d $ ]
then
echo "$ does not exist,create it..."
mkdir $
fi另:
清除mysql系統log,3天前/var/log/mysql
mysql -uroot -e 'purge master logs before date_sub( now( ), interval 3 day);'
#清除指定log
purge master logs to 'mysql-bin.000930';
定期執行指令碼:
[root@server ~]# crontab -e
增加:00 05 */3 * * /root/bcdb.sh
每3天的凌晨5點備份清空一次。
MySQL 資料庫並自動備份
每天早上備份一次 mysql 資料庫並自動打包,同時刪除 5 天前的備份檔案 建議在本地執行沒有任何問題再傳到伺服器上 以後就可以新增計畫任務 儲存目錄,路徑要用反斜槓.您需要手動建立它.要把壓縮包的exe檔案跟當前執行頁面放在同乙個目錄,當然你也可以自己配置,這樣才能壓縮 ini set max ...
linux 自動備份MySQL資料庫,並郵件傳送
的資料是最重要的,需要我們定期備份,接下來為大家說的就是 定期 自動 備份mysql資料庫,並且壓縮後以郵箱傳送 大概步驟就是 1 確保 安裝了 sendmail 和 mutt 包 沒有安裝的話,先安裝好,再進行下面的操作 2 新建指令碼檔案,備份資料庫,打包檔案,郵件傳送 的 3 先手動執行指令碼...
mysql資料庫自動備份 mysql資料庫自動備份
通過簡單的設定,可以讓mysql資料庫備份自動化.減少維護的工作量 一 對於windows主機 假想環境 mysql 安裝位置 c mysql 論壇資料庫名稱為 bbs mysql root 密碼 123456 資料庫備份目的地 d db backup echo off c mysql bin my...