shell腳本每天自動備份mysql數(shù)據(jù)庫

一玻粪、mysql提供了一個mysqldump的工具可以方便的導(dǎo)出導(dǎo)入數(shù)據(jù)庫信息隅津;

二诬垂、使用命令行shell測試執(zhí)行mysqldump,理解必備的參數(shù)伦仍,查看生成的sql備份文件是否符合需求结窘;

/usr/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /mnt/mysqlBackup/db_`date +%F`.sql

注解:
1、執(zhí)行 /usr/bin/mysqldump充蓝;
2隧枫、--opt是quick谓苟,add-drop-table官脓,add-locks,extended-insert涝焙,lock-tables幾個參數(shù)的合稱卑笨,一般都要使用,具體意思自行搜索仑撞;
3赤兴、-u數(shù)據(jù)庫用戶名 -p數(shù)據(jù)庫用戶密碼 -h數(shù)據(jù)庫地址 數(shù)據(jù)庫名 > 導(dǎo)出的文件路徑;
4隧哮、date +%F是shell中生成當(dāng)前日期桶良,格式如2015-11-05,所以成功導(dǎo)出時生成的文件名為 db_2015-11-05.sql沮翔;
5陨帆、下載生成的 sql文件 ,用文本編輯器打開檢查鉴竭,本地導(dǎo)入測試數(shù)據(jù)庫歧譬,看是否有問題;

三搏存、整理編寫比較靈活的shell腳本瑰步,方便重用;

#!/bin/sh

# Database info
DB_USER="batsing"
DB_PASS="batsingpw"
DB_HOST="localhost"
DB_NAME="timepusher"

# Others vars
BIN_DIR="/usr/bin"            #the mysql bin path
BCK_DIR="/mnt/mysqlBackup"    #the backup file directory
DATE=`date +%F`

# TODO
# /usr/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /mnt/mysqlBackup/db_`date +%F`.sql
$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS 
-h$DB_HOST $DB_NAME > $BCK_DIR/db_$DATE.sql

還原數(shù)據(jù)庫

用mysql-front導(dǎo)入前一天的 *.sql 文件即可恢復(fù)數(shù)據(jù)

保存到文件或上傳到 /usr/local/apache/htdocs/timepusher/sqlBak/sqlAutoBak.sh

四璧眠、測試Shell腳本

1缩焦、進(jìn)入到該腳本文件目錄 chmod +x sqlAutoBak.sh 添加執(zhí)行權(quán)限,否則會報錯 Permission denied
2责静、./sqlAutoBak.sh 袁滥,如果是在windows編寫上傳的文件可能會報錯

/bin/sh^M: bad interpreter: No such file or directory

這是不同系統(tǒng)編碼格式引起的:在 windows系統(tǒng)中編輯的 .sh文件可能有不可見字符,所以在 Linux系統(tǒng)下執(zhí)行會報以上異常信息灾螃√夥可以在Windows上使用Notepad++轉(zhuǎn)換成Unix格式(菜單中選擇:編輯>檔案格式轉(zhuǎn)換>轉(zhuǎn)換成UNIX)
3、修改后上傳繼續(xù)執(zhí)行 ./sqlAutoBak.sh 腰鬼,沒有報錯嵌赠。再查看導(dǎo)出的sql文件塑荒。

五、壓縮mysql的備份數(shù)據(jù)

1姜挺、查看導(dǎo)出來的sql文件齿税,發(fā)現(xiàn)其文件大小非常大,mysqldump也提供了生成gzip壓縮文件的參數(shù)設(shè)置
2炊豪、sqlAutoBak.sh修改為如下

#!/bin/sh

# Database info
DB_USER="batsing"
DB_PASS="batsingpw"
DB_HOST="localhost"
DB_NAME="timepusher"

# Others vars
BIN_DIR="/usr/bin"            #the mysql bin path
BCK_DIR="/mnt/mysqlBackup"    #the backup file directory
DATE=`date +%F`

# TODO
# /usr/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /mnt/mysqlBackup/db_`date +%F`.sql
# $BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -h$DB_HOST $DB_NAME > $BCK_DIR/db_$DATE.sql

$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -h$DB_HOST $DB_NAME | gzip > $BCK_DIR/db_$DATE.sql.zip

# 還原數(shù)據(jù)庫
# 把 *.sql.zip 使用gunzip 或 本地的解壓軟件 解壓為 *.sql 文件
# 用mysql-front導(dǎo)入前一天的 *.sql 文件即可恢復(fù)數(shù)據(jù)

3凌箕、修改后上傳繼續(xù)執(zhí)行 ./sqlAutoBak.sh ,沒有報錯词渤。如果用文本編輯器查看導(dǎo)出的 *.sql.gz文件牵舱,應(yīng)該是一堆亂碼。
4掖肋、下載到本地使用解壓軟件打開仆葡,解壓就能看到里面真正的 *.sql 文件了。

六志笼、設(shè)置linux定時任務(wù)執(zhí)行該腳本沿盅;

1、編輯定時任務(wù)列表

crontab -e

2纫溃、插入下面這一行腰涧,因?yàn)橥ǔ碚f5點(diǎn)鐘網(wǎng)站的訪問量最低。

00 05 * * * /bin/sh /usr/local/apache/htdocs/timepusher/sqlBak/sqlAutoBak.sh #每天早上 5:00am 執(zhí)行

3紊浩、查看任務(wù)是否創(chuàng)建成功

crontab -l

七窖铡、第二天檢查自動生成的sql文件是否符合要求

如果生成的文件和解壓出來查看沒有問題,那么這個自動定時備份數(shù)據(jù)庫的腳本就算是完成了坊谁。因?yàn)樯傻奈募嗔藭加靡欢ǖ目臻g费彼,所以建議要定期(比如一個月)清理一下文件。

$口芍、補(bǔ)充

1箍铲、如果該數(shù)據(jù)庫的用戶沒有分配 鎖表 的權(quán)限,則備份會報錯 when using LOCK TABLES 鬓椭。那是因?yàn)閙ysqldump命令默認(rèn)在導(dǎo)出時是要鎖定表的颠猴,所以解決方式有兩個。一個是給該用戶開放 鎖表 的權(quán)限小染;另一個是在命令中加上 --skip-lock-tables 這個參數(shù)翘瓮。即是:
$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -h$DB_HOST $DB_NAME --skip-lock-tables| gzip > $BCK_DIR/db_$DATE.sql.gz

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市裤翩,隨后出現(xiàn)的幾起案子资盅,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件律姨,死亡現(xiàn)場離奇詭異振峻,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)择份,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來烫堤,“玉大人荣赶,你說我怎么就攤上這事「胝澹” “怎么了拔创?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長富蓄。 經(jīng)常有香客問我剩燥,道長,這世上最難降的妖魔是什么立倍? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任灭红,我火速辦了婚禮,結(jié)果婚禮上口注,老公的妹妹穿的比我還像新娘变擒。我一直安慰自己,他們只是感情好寝志,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布娇斑。 她就那樣靜靜地躺著,像睡著了一般材部。 火紅的嫁衣襯著肌膚如雪毫缆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天乐导,我揣著相機(jī)與錄音苦丁,去河邊找鬼。 笑死兽叮,一個胖子當(dāng)著我的面吹牛芬骄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鹦聪,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼账阻,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了泽本?” 一聲冷哼從身側(cè)響起淘太,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蒲牧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體撇贺,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年冰抢,在試婚紗的時候發(fā)現(xiàn)自己被綠了松嘶。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡挎扰,死狀恐怖翠订,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情遵倦,我是刑警寧澤尽超,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站梧躺,受9級特大地震影響似谁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜掠哥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一巩踏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧龙致,春花似錦蛀缝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至榛了,卻和暖如春在讶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背霜大。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工构哺, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人战坤。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓曙强,卻偏偏與公主長得像,于是被迫代替她去往敵國和親途茫。 傳聞我的和親對象是個殘疾皇子碟嘴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容