2010年11月8日 星期一

MySQL 備份 shell script ???

這個是我日常用作備份 MySQL database 的 shell script,因為以前是直接將所有資料庫匯出成一個 sql 檔,當其中一個資料庫有問題時,因為沒問題的資料庫不想有改動,要復原資料很麻煩。今天改了一下,它會用 mysqldump 將所有資料庫匯出成獨立 sql 備份檔,然後用 gzip 壓縮成 .gz 檔案。程式會儲存 5 天的備份,當有新備份時,最舊的備份會自動刪除。
使用方法:
修改 db_user, db_passwd 及 db_host 修改成你的 mysql 登入資料,所使用的用戶權限需要與 mysql root 相同。backup_dir 修改成你希望儲存備份的目錄。
最後只要把程式加入 crontab 排程自動執行即可。
檔案下載: mysql_backup.sh
-----------------------------------------------------------------------
例如在 /root 底下
> vi .my.cnf
加入
[client]
host=localhost
user=root
password=password
然後
> chmod 600 .my.cnf
(限制只有 root 能存取)
然後把 mysql_backup.sh 裡面的
db_user=”root”
db_passwd=”"
db_host=”localhost”
這三行移除
all_db=”$($MYSQL -u $db_user -h $db_host -p$db_passwd -Bse ’show databases’)”
改成
all_db=”$($MYSQL -Bse ’show databases’)”
$MYSQLDUMP -u $db_user -h $db_host -p$db_passwd $db | $GZIP -9 > “$backup_dir/backup.0/$time.$db.gz”
改成
$MYSQLDUMP $db | $GZIP -9 > “$backup_dir/backup.0/$time.$db.gz”
這樣就預設就會去讀取 /root/.my.cnf 裡面的host、user、passwd 了
檔案更新;mysql_backup.sh
--------------------------------------------------------------------------
假如你的資料庫名稱為 my_database,以下是還原方法:
1. 用 gzip 解壓備份檔,例如 gzip -d my_database.gz
gzip -d 19-03-2009.gallery2.gz
2. 輸入以下指令:
mysql my_database -uroot -p < my_database.sql
mysql gallery2 -uroot -p < 19-03-2009.gallery2
Enter password:

然後輸入 mysql 的 root 密碼。

沒有留言:

張貼留言