自動備份mysql資料庫,並清空log日誌資料

2021-08-25 02:03:08 字數 1541 閱讀 6629

周海漢 /文

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...