linux下改良版本mysqldump來備份MYSQL數(shù)據(jù)庫
更新時(shí)間:2008年07月26日 19:17:04 作者:
我的備份腳本都是在凌晨執(zhí)行的,經(jīng)常在慢查詢?nèi)罩纠锩婵吹竭@樣的信息:select * from table1;
之前一直很納悶,最后才了解到原來是MYSQLDUMP搞的鬼。
因?yàn)镸YSQLDUMP會為整個(gè)庫來加一個(gè)全局鎖定。
如果單純用MYSQLDUMP進(jìn)行全庫備份會造成以下三個(gè)方面的影響。
1、服務(wù)器CPU嚴(yán)重阻塞。
2、磁盤I/O直線增加。
3、所有的查詢都成了慢查詢。
我現(xiàn)在的網(wǎng)站數(shù)據(jù)庫大概是5個(gè)G左右,而且每天都有增大。
表結(jié)構(gòu)是MYISAM,INNODB,MEMORY三者混合。
所以單純用HOTCOPY工具恐怕有點(diǎn)困難。所以我今天簡單變了一下我上次寫的關(guān)于用OUTFILE來備份MYSQL的腳本。
可以解決上面說的三個(gè)缺點(diǎn)。
1、備份腳本內(nèi)容
[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、因?yàn)槲覀円恢庇么鎯^程,所以得單獨(dú)備份出來。
[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、丟到計(jì)劃任務(wù)里面去,就不管了。
[root@localhost backup_new]# crontab -l
0 01 * * * /home/david_yeung/fast_backup my_site
0 0 * * 5 /home/david_yeung/fast_sp
每天凌晨1點(diǎn)備份數(shù)據(jù),每個(gè)周五凌晨備份存儲過程。
如果單純用MYSQLDUMP進(jìn)行全庫備份會造成以下三個(gè)方面的影響。
1、服務(wù)器CPU嚴(yán)重阻塞。
2、磁盤I/O直線增加。
3、所有的查詢都成了慢查詢。
我現(xiàn)在的網(wǎng)站數(shù)據(jù)庫大概是5個(gè)G左右,而且每天都有增大。
表結(jié)構(gòu)是MYISAM,INNODB,MEMORY三者混合。
所以單純用HOTCOPY工具恐怕有點(diǎn)困難。所以我今天簡單變了一下我上次寫的關(guān)于用OUTFILE來備份MYSQL的腳本。
可以解決上面說的三個(gè)缺點(diǎn)。
1、備份腳本內(nèi)容
[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、因?yàn)槲覀円恢庇么鎯^程,所以得單獨(dú)備份出來。
[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、丟到計(jì)劃任務(wù)里面去,就不管了。
[root@localhost backup_new]# crontab -l
0 01 * * * /home/david_yeung/fast_backup my_site
0 0 * * 5 /home/david_yeung/fast_sp
每天凌晨1點(diǎn)備份數(shù)據(jù),每個(gè)周五凌晨備份存儲過程。
您可能感興趣的文章:
- mysql mysqldump只導(dǎo)出表結(jié)構(gòu)或只導(dǎo)出數(shù)據(jù)的實(shí)現(xiàn)方法
- mysqldump備份還原和mysqldump導(dǎo)入導(dǎo)出語句大全詳解
- MySQL mysqldump命令使用詳解
- 用mysqldump備份和恢復(fù)指定表的方法
- 使用MySQL MySqldump命令導(dǎo)出數(shù)據(jù)時(shí)的注意事項(xiàng)
- MySQL數(shù)據(jù)庫使用mysqldump導(dǎo)出數(shù)據(jù)詳解
- Mysql導(dǎo)入導(dǎo)出工具M(jìn)ysqldump和Source命令用法詳解
- mysql mysqldump數(shù)據(jù)備份和增量備份
- Windows下實(shí)現(xiàn)MySQL自動備份的批處理(復(fù)制目錄或mysqldump備份)
- 使用mysqldump導(dǎo)入數(shù)據(jù)和mysqldump增量備份(mysqldump使用方法)
- mysql數(shù)據(jù)庫備份及恢復(fù)命令 mysqldump,source的用法
- mysqldump命令導(dǎo)入導(dǎo)出數(shù)據(jù)庫方法與實(shí)例匯總
- mysqldump數(shù)據(jù)庫備份參數(shù)詳解
- mysql備份恢復(fù)mysqldump.exe幾個(gè)常用用例
- PHP使用mysqldump命令導(dǎo)出數(shù)據(jù)庫
- mysqldump加-w參數(shù)備份數(shù)據(jù)時(shí)需要注意的事項(xiàng)
- MySQL的mysqldump工具用法詳解
- PHP定時(shí)備份MySQL與mysqldump語法參數(shù)詳解
相關(guān)文章
MySQL復(fù)制的概述、安裝、故障、技巧、工具(火丁分享)
首先主服務(wù)器把數(shù)據(jù)變化記錄到主日志,然后從服務(wù)器通過I/O線程讀取主服務(wù)器上的主日志,并且把它寫入到從服務(wù)器的中繼日志中,接著SQL線程讀取中繼日志,并且在從服務(wù)器上重放,從而實(shí)現(xiàn)MySQL復(fù)制。2011-04-04mysql啟動失敗之mysql服務(wù)無法啟動(服務(wù)沒有報(bào)告任何錯(cuò)誤)的解決方法
作為一名程序猿,必不可少的便是和mysql打交道,那當(dāng)mysql故障,服務(wù)無法啟動時(shí)該怎么解決呢,下面這篇文章主要給大家介紹了關(guān)于mysql啟動失敗之mysql服務(wù)無法啟動,服務(wù)沒有報(bào)告任何錯(cuò)誤的解決方法,需要的朋友可以參考下2022-05-05MySql按時(shí),天,周,月進(jìn)行數(shù)據(jù)統(tǒng)計(jì)
這篇文章主要介紹了MySql按時(shí),天,周,月進(jìn)行數(shù)據(jù)統(tǒng)計(jì),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08MySQL DATE_ADD和ADDDATE函數(shù)實(shí)現(xiàn)向日期添加指定時(shí)間間隔
這篇文章主要介紹了MySQL DATE_ADD和ADDDATE函數(shù)實(shí)現(xiàn)向日期添加指定時(shí)間間隔,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01mysql 8.0.18 安裝配置方法圖文教程(linux)
這篇文章主要介紹了linux下mysql 8.0.18 安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11