2014年11月27日 星期四

MySQL 的備份與還原

1.
透過指令一次備份所有資料庫:
mysqldump -u bkupuser -p密碼 --all-database --events --ignore-table=mysql.event > dbbackup.sql
(--all-databases 也可用 -A 替代)
附註:還原所有資料庫方式:
mysql -u root -p < dbbackup.sql

若是要備份、還原單一資料庫:
備份questionpaper :
mysqldump -u bkupuser -p questionpaper > questionpaper.sql

還原questionpaper :
mysql -u bkupuser -p questionpaper < questionpaper .sql

注意bkupuser的權限要調整:


































因為是備份用的,新、刪、改的權限可以關掉

2.
備份之後可以加密壓縮

#壓縮打包並加密
#tar -cpz 原檔案 | openssl enc -e -aes256 -k 密碼 -out 新檔案
tar -cpz dbbackup.sql | openssl enc -e -aes256 -k abcde1234 -out dbbackup.sql.tar.gz

解密格式:
 openssl enc -d -aes256 -k 密碼 -in 原檔案 -out 新檔案
如剛剛加密壓縮的dbbackup.sql.tar.gz要解回來的話:
 openssl enc -d -aes256 -k 密碼 -in dbbackup.sql.tar.gz -out dbbackup.sql.tar.gz
接著在tar -zxvf dbbackup.sql.tar.gz 解開資料

參數說明:
-d : 解密
-aes256:因為當初是用aes256加密的
-k 密碼: 當初加密的密碼
-in:輸入要解密的檔案
-out:輸出解密的檔案

3.
異地備援:
通常我們會寫一個script來自動把備份出來的檔案丟到另一部server,
通常是透過scp的指令
如何做到不需要輸入密碼自動上傳備份檔
透過ssh-keygen來達成

ssh-keygen -t rsa 或 ssh-keygen -d (dsa) => 產生出 id_rsa, id_rsa.pub
將產生的id_rsa.pub傳到要登入的遠端主機
登入到遠端主機後,將剛剛上傳的id_rsa.pub 內容加到.ssh/authorized_keys中
cat id_rsa.pub >> .ssh/authorized_keys 即可
這樣子就可以 key 認證登入, 不需輸入密碼.

4.可以撰寫Script來達成異地備援

cd /home/dbackup
SQL_File=/home/dbackup/mysql`date +%Y%m%d%H%M`.sql
mysqldump -u 資料庫帳號 -p密碼 要備份的資料庫 --single-transaction > $SQL_File
#透過scp丟到備援主機
scp -pq -P ssh_port $SQL_File dbackup@備援主機IP:丟到哪一個目錄
rm -f $SQL_File #傳送後清掉本機的備份資料









沒有留言:

張貼留言