Gzip

備份 MySQL 數據庫和 gzip

  • October 29, 2010

我正試圖從我的 MySQL 備份中獲得更多用處。我想在 cron 作業完成後對我的備份進行 gzip 壓縮。這是我到目前為止進行備份的腳本。

#!/bin/sh
date=`date -Iminutes`
mysqldump --all-databases > /var/sqlbackup/sqlbackup-$date.sql -pmypassword
find /var/sqlbackup/ -mtime 3 | xargs rm

任何幫助都是有益的,即使它是關於如何做得更好的指針。

這是我使用的備份/維護腳本:

#!/usr/bin/sh
#backup all mysql databases
# list MySQL databases and dump each
DIR=
DATESTAMP=$(date +%Y%m%d)
DB_USER=
DB_PASS=

# remove old backups
find ${DIR} -type f -mtime +5 -exec rm -rf {} \;


DB_LIST=`mysql -u $DB_USER -p"$DB_PASS" -e'show databases;'`
DB_LIST=${DB_LIST##Database}
for DB in $DB_LIST;
do
 FILENAME=${DIR}${DB}-${DATESTAMP}.sql.gz
 mysqldump -u $DB_USER -p"$DB_PASS" --opt --flush-logs $DB | gzip > $FILENAME
done

mysqlcheck -u $DB_USER -p"$DB_PASS" --all-databases > /root/mysql_backups/check_errors-${DATESTAMP}.log

該腳本會為每個數據庫生成一個單獨的 gzip 備份,這樣如果一個數據庫出現問題,您就不必恢復整個伺服器的數據庫。它還包括一些 mysql 檢查健全性並找到舊的數據庫備份並刪除它們。

根據要求恢復:

我不得不恢復幾次。它發生了。

gunzip backup_file.sql.gz
mysql -u <username> -p  <database_name> < backup_file.sql 

可能有一種更“單行”的方式來做到這一點……但這就是它對我有用的方式。

引用自:https://serverfault.com/questions/196163