linux下如何實現(xiàn)mysql數(shù)據(jù)庫每天自動備份定時備份

1、查看磁盤空間情況:

既然是定時備份,就要選擇一個空間充足的磁盤空間,避免出現(xiàn)因空間不足導(dǎo)致備份失敗,數(shù)據(jù)丟失的惡果!
存儲到當(dāng)前磁盤這是最簡單,卻是最不推薦的;服務(wù)器有多塊硬盤,最好是把備份存放到另一塊硬盤上;有條件就選擇更好更安全的存儲介質(zhì);

# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root   50G   46G  1.6G  97% /
tmpfs                         1.9G   92K  1.9G   1% /dev/shm
/dev/sda1                     485M   39M  421M   9% /boot
/dev/mapper/VolGroup-lv_home  534G  3.6G  503G   1% /home

2、創(chuàng)建備份目錄:

上面我們使用命令看出/home下空間比較充足,所以可以考慮在/home保存?zhèn)浞菸募?/p>

cd /home 
mkdir backup
cd backup

3、創(chuàng)建備份Shell腳本:

注意把以下命令中的DatabaseName換為實際的數(shù)據(jù)庫名稱;
當(dāng)然,你也可以使用其實的命名規(guī)則!

vi bkDatabaseName.sh

在bkDatabaseName.sh里編輯一下內(nèi)容

備份指定的數(shù)據(jù)庫

#!/bin/bash
mysqldump -uusername -ppassword DatabaseName > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql

對備份進(jìn)行壓縮:

#!/bin/bash
mysqldump -uusername -ppassword DatabaseName | gzip > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql.gz

將/home/backup目錄下所有10天前帶"DatabaseName_"的文件刪除

#!/bin/sh
find /usr/local/backups -mtime +10 -name "*DatabaseName_*" -exec rm -rf {} \;

注意:
把 username 替換為實際的用戶名;
把 password 替換為實際的密碼;
把 DatabaseName 替換為實際的數(shù)據(jù)庫名;

4、添加可執(zhí)行權(quán)限:

chmod u+x bkDatabaseName.sh

添加可執(zhí)行權(quán)限之后先執(zhí)行一下,看看腳本有沒有錯誤,能不能正常使用;

./bkDatabaseName.sh

執(zhí)行完后可以到備份的目錄下去看看備份的文件是否已經(jīng)備份成功

5、添加計劃任務(wù)

檢測或安裝 crontab,
確認(rèn)crontab是否安裝:
執(zhí)行 crontab 命令如果報 command not found,就表明沒有安裝

# crontab
-bash: crontab: command not found

如時沒有安裝 crontab,需要先安裝它,具體步驟請參考:

CentOS下使用yum命令安裝計劃任務(wù)程序crontab

使用rpm命令從CentOS系統(tǒng)盤安裝計劃任務(wù)程序crontab

6、添加計劃任務(wù)

執(zhí)行命令:

crontab -e

使用vi編輯器一樣對計劃進(jìn)行編輯

*/1 * * * * /home/backup/bkDatabaseName.sh

意思是每一分鐘執(zhí)行一次shell腳本“/home/backup/bkDatabaseName.sh”。

7、測試任務(wù)是否執(zhí)行

如果任務(wù)執(zhí)行失敗了,可以通過以下命令查看任務(wù)日志:

 tail -f /var/log/cron

輸出內(nèi)容如下:

Sep 30 14:01:01 bogon run-parts(/etc/cron.hourly)[2503]: starting 0anacron
Sep 30 14:01:01 bogon run-parts(/etc/cron.hourly)[2512]: finished 0anacron
Sep 30 15:01:01 bogon CROND[3092]: (root) CMD (run-parts /etc/cron.hourly)
Sep 30 15:01:01 bogon run-parts(/etc/cron.hourly)[3092]: starting 0anacron
Sep 30 15:01:02 bogon run-parts(/etc/cron.hourly)[3101]: finished 0anacron
Sep 30 15:50:44 bogon crontab[3598]: (root) BEGIN EDIT (root)
Sep 30 16:01:01 bogon CROND[3705]: (root) CMD (run-parts /etc/cron.hourly)
Sep 30 16:01:01 bogon run-parts(/etc/cron.hourly)[3705]: starting 0anacron
Sep 30 16:01:01 bogon run-parts(/etc/cron.hourly)[3714]: finished 0anacron
Sep 30 16:15:29 bogon crontab[3598]: (root) END EDIT (root)

注意

  1. 以上操作完成后根據(jù)不同的提示,有時候會出現(xiàn)備份的數(shù)據(jù)庫文件備份下來了,但是里面的內(nèi)容卻是空的,怎么回事呢,這時候就需要去查看自動任務(wù)執(zhí)行的日志文件了
  2. 路徑為: /var/spool/mail 下的 root 文件

里面出現(xiàn)這樣一句話 /home/backup/databaseName.sh: line 2: mysqldump: command not found

這是什么意思呢?一些同學(xué)一臉懵逼,別著急,接下來一一解決


有時候安裝好MySQL程序的時候,直接輸入命令mysql或mysqldump會發(fā)現(xiàn)提示命令不存在,這是由于系統(tǒng)默認(rèn)會查找/usr/bin下的命令,如果這個命令不在這個目錄下,當(dāng)然會找不到命令
解決方法:
首先得知道m(xù)ysql命令或mysqldump命令的完整路徑,可以使用find命令查找

find  / -name mysql -print

會得到mysql的路徑是:/usr/local/mysql/bin/mysql,然后映射一個鏈接到/usr/bin目錄下,相當(dāng)于建立一個鏈接文件

ln -s /usr/local/mysql/bin/mysql /usr/bin

這樣基本就OK啦。

是不是很簡單,哈哈

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 大方向 1.優(yōu)質(zhì)文章遴選10篇,優(yōu)質(zhì)公眾號遴選3個;2.Kafka框架源碼閱讀;3.公眾號文章編輯與發(fā)布
    飛盞閱讀 191評論 2 0
  • 微信公眾號開發(fā) ?前面做過 HG 項目的微信端,里面用到微信掃碼、支付、圖片選取、拍照、分享的功能。用到 weix...
    Ghnhxg閱讀 545評論 1 1
  • 堅持畫畫的第五十三天了,今天繼續(xù)來和大家分享的繪畫主題是——彩鉛花束。 參考圖片: HB鉛筆、橡皮、A4白卡紙、輝...
    二亭閱讀 1,576評論 13 28
  • 自從買了自行車,騎車就成了兒子最大的愛好,一做完作業(yè)就嚷著要下樓騎車。 這個周末,周六陪孩子們?nèi)ヘ敶髮W(xué)畫畫,周日洗...
    逝者如斯夫living閱讀 643評論 0 0
  • 昨天又到星期五了,早上只有一節(jié)課,上完課自然是放假了,所以早上也是帶著興奮的心情起來的,因為前天晚上說好,早上去吃...
    堅志閱讀 199評論 0 0