logrotate是linux下的一個日誌文件管理工具。apache,nignx或系統的log文件如不處理, 正常情況下會慢慢變的大, 久了, 硬盤就會爆掉。 logrotate(配合cron)就是用來周期性分割、壓縮、刪除日誌文件用的。前段時間在找mysql數據庫的自動備份方法的時候, 在 http://islandlinux.org/howto/automated-mysql-backups 看到了使用logrotate來備份mysql數據庫的偏方, 感覺不錯, 在這裡和大家分享一下。
首先, 先創建一個腳本文件
nano /usr/local/sbin/mysql_auto_backup.sh
貼入如下內容
#!/bin/sh # # 作者 Dallas Vogels 2008-10-01 # export PATH=/bin:/usr/bin:/sbin:/usr/sbin OUTPUTDIR="/root/mysql-backups" #將這裡修改成你要放備份文件的目錄 OPTIONS="--all --complete-insert --add-drop-table --extended-insert --quote-names" CONFIG_FILE="/root/.my.cnf.backup" # 檢查備份目錄是否存在 if [ ! -d $OUTPUTDIR ]; then mkdir $OUTPUTDIR fi # 獲取數據庫列表 DATABASES=`echo "SHOW DATABASES" | mysql --defaults-file="$CONFIG_FILE" mysql` for DATABASE in $DATABASES; do # 不備份 Database 和 information_schema 這兩個數據庫 if [ "$DATABASE" != "Database" -a "$DATABASE" != "information_schema" ]; then # 數據庫備份開始 mysqldump --defaults-file="$CONFIG_FILE" $OPTIONS $DATABASE > $OUTPUTDIR/$DATABASE.sql fi done exit 0
將這個備份腳本添加可執行屬性:
sudo chmod og-rwx /usr/local/sbin/mysql_auto_backup.sh
運行mysql
mysql -u root -p
給mysql添加專門用來備份數據庫的用戶:
GRANT SELECT, LOCK TABLES ON *.* TO mysqlbackup@localhost IDENTIFIED BY 'password'; FLUSH PRIVILEGES;
注意將password換成你想要設定的密碼。
新創建一個mysql配置文件:
nano /root/.my.cnf.backup
將這個mysql備份用戶信息加到裡面:
[client] user="mysqlbackup" password="password"
注意再次換密碼。
設置好這個文件的屬性:
chmod og-rwx /root/.my.cnf.backup
現在可以測試一下數據備份腳本了,運行:
/usr/local/sbin/mysql_auto_backup.sh
如果可以在設定的目錄(/root/mysql-backups)找到mysql數據庫dump出來的sql文件,那到目前為止一切正常,繼續。
創建用來自動備份mysql數據庫的logrotate配置文件:
nano /etc/logrotate.d/mysql-backups
貼入如下內容:
/root/mysql-backups/*.sql { weekly copy missingok rotate 30 compress notifempty create 640 root adm sharedscripts prerotate /usr/local/sbin/mysql_auto_backup.sh endscript }
上面的設置會每周一次地將mysql中所有除Database和information_schema之外的數據庫自動dump到/root/mysql-backups/目錄中, 並自動將dump文件壓縮成gz格式(如果不希望壓縮,去掉上面的compress行)。
如果希望將數據備份周期改到每天一次, 直接將上面logrotate配置文件weekly改成daily就可以了(每月一次是monthly)
上面的腳本會自動保留最近30個備份(注意rotate 30參數, 修改30可設置保留的備份數)
最後測試一下logrotate配置文件有沒有問題,強制運行logrotate:
logrotate -f /etc/logrotate.d/mysql-backups
這時/root/mysql-backups/目錄應該出來gz格式的mysql數據庫備份文件。
這時用logrotate的自動mysql數據庫的備份部署完成了。這樣每星期到/root/mysql-backups/目錄下載mysql備份文件就可了。
轉載請註明: 轉自船長日誌, 本文鏈接地址: http://www.cslog.cn/Content/logrotate-mysql-automated-backu/zh-hant/