《Mysql應用linux下改良版本mysqldump來備份MYSQL數據庫》要點:
本文介紹了Mysql應用linux下改良版本mysqldump來備份MYSQL數據庫,希望對您有用。如果有疑問,可以聯系我們。
因為MYSQLDUMP會為整個庫來加一個全局鎖定.
如果單純用MYSQLDUMP進行全庫備份會造成以下三個方面的影響.
1、服務器CPU嚴重阻塞.
2、磁盤I/O直線增加.
3、所有的查詢都成了慢查詢.
我現在的網站數據庫大概是5個G左右,而且每天都有增大.
表結構是MYISAM,INNODB,MEMORY三者混合.
所以單純用HOTCOPY工具恐怕有點困難.所以我今天簡單變了一下我上次寫的關于用OUTFILE來備份MYSQL的腳本.
可以解決上面說的三個缺點.
1、備份腳本內容 [david_yeung@localhost?~]$?cat?fast_backup?
#!/bin/sh
#
#?Created?by?david?yeung.
#
#?20080707.
#
#?Backup?mysql's?full?data.
#
DBNAME=$1
BACKUPDIR=/home/david_yeung/backup_new
USERNAME=backup_user
PASSWD=123456
TARNAME="$BACKUPDIR"/backup"$1"`date?'+%Y%m%d'`
#?Add?your?own?database?name?here.
case?"$1"?in
??my_site);;
??*)?exit;;?
esac
#?Get?all?the?tables'?name.
NUM=`/usr/local/mysql/bin/mysql?-u$USERNAME?-p$PASSWD?-s?-vv?-e?"show?tables"?-D?$DBNAME|wc?-l`
HEADNUM=`expr?${NUM}?-?3`
TAILNUM=`expr?${NUM}?-?7`
ARR1=`/usr/local/mysql/bin/mysql?-u$USERNAME?-p$PASSWD?-s?-vv?-e?"show?tables"?-D?$DBNAME|?head?-n"$HEADNUM"?|?tail?-n?"$TAILNUM"`
ARR2=($ARR1)
i=0
while?[?"$i"?-lt?"${#ARR2[@]}"?]
do
?tmpFileName=${ARR2[$i]}
?#?The?real?dump?process.
?/usr/local/mysql/bin/mysqldump?-u$USERNAME?-p"$PASSWD"?"$DBNAME"?"$tmpFileName"?>>?"$TARNAME"?
?let?"i++"
done
2、因為我們一直用存儲過程,所以得單獨備份出來.
[david_yeung@localhost?~]$?cat?fast_sp
#!/bin/sh
#?Created?by?david?yeung?20080122.
#
#?Backup?site's?routine.
TARNAME=/home/david_yeung/backup_new/spBackup"$1"`date?'+%Y%m%d'`
/usr/local/mysql/bin/mysqldump?-ubackup_user?-p123456?-n?-t?-d?-R?my_site?>?"$TARNAME"
3、丟到計劃任務里面去,就不管了. [root@localhost?backup_new]#?crontab?-l
0?01?*?*?*?/home/david_yeung/fast_backup?my_site
0?0?*?*?5?/home/david_yeung/fast_sp
每天凌晨1點備份數據,每個周五凌晨備份存儲過程.
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/1046.html