程式猿(媛)Shell指令碼必備技能之一: 在Linux下如何自動備份mysql資料

來源:互聯網
上載者:User

標籤:shell   linux   mysql   自動備份   


荀彧(花名)


Background:鑒於QAS資料庫曾遭到毀滅性損害,極其桑心L。為了避免這種玉石俱焚的狀況再度發生,於是我們找出了一種應對方案。這裡給大家分享一下如何?定時備份mysql資料庫的指令碼。

 

Target:每天對QAS資料庫進行資料及表的備份並且刪除掉10天之前的備份檔案。

 

Working:三個步驟搞定。

Step 1: 準備兩個檔案

建備份檔案夾qas_db_bak,建指令檔autobackupmysql_qas.sh

[[email protected]***** wewang]# ls

autobackupmysql_qas.sh qas_db_bak

 

開啟指令檔:

[[email protected]***** wewang]# vi autobackupmysql_qas.sh

在指令碼中新增內容:

#!/bin/bash

backupdir=/home/**/wewang/qas_db_bak

Now=$(date +"%Y-%m-%d--%H:%M:%S")

/usr/bin/mysqldump -u ghs -pacxiom qas|gzip > $backupdir/qas_bak_$Now.sql.gz

find $backupdir -name "qas_bak_*.sql.gz" -type f -mtime +10 -exec rm {} \; > /dev/null 2>&1

 

:wq 返回退出後,對檔案進行執行許可權的更改,保證指令碼可以被執行:

[[email protected]***** wewang]# chmod +xautobackupmysql_qas.sh

 

如下:


解析:

name:自訂備份檔案首碼標識。

-type f    表示尋找普通類型的檔案,f表示普通檔案。

-mtime +10   按照檔案的更改時間來尋找檔案,+10表示檔案更改時間距現在10天以前;如果是 -mmin +10 表示檔案更改時間距現在5分鐘以前。

-exec rm {} \;   表示執行一段shell命令,exec選項後面跟隨著所要執行的命令或指令碼,然後是一對兒{ },一個空格和一個\,最後是一個分號。

/dev/null 2>&1  把標準出錯重新導向到標準輸出,然後扔到/DEV/NULL下面去。通俗的說,就是把所有標準輸出和標準出錯都扔到垃圾桶裡面;其中的&表示讓該命令在後台執行。 

 

 

Step 2: 更改定時執行指令碼,這裡有兩種case:

Case 1: 一般情況。開啟自動執行檔案 /etc/crontab,在crontab檔案中加入如下內容,讓其自動執行任務

[[email protected] wewang]# vi /etc/crontab

添加如下代碼:

這裡的例子是每小時26分的時候執行:

26 * * * * root /home/**/wewang/autobackupmysql_qas.sh



若是每天三點執行,則:

00 3 * * * root /home/**/wewang/autobackupmysql_qas.sh

 

 

Case 2: Redhat情況。(也就是當前用的Linux系統)將剛才編輯的指令碼複製到相應的目錄即可

[[email protected]***** wewang]# cp autobackupmysql_qas.sh /etc/cron.daily/

 

如下:



解析: 這裡是每天4點28分左右才執行,但是這個job執行的時間也是隨機的。

Redhat的crontab採用按時間調用4個目錄(

/etc/cron.hourly:每小時;

/etc/cron.daily:每天;

/etc/cron.weekly:每周;

/etc/cron.monthly:每月)中指令碼出來啟動並執行方式。

 

Step 3: 重啟etc 

[[email protected] wewang]# /etc/rc.d/init.d/crondrestart

Stopping crond:                                            [  OK  ]

Starting crond:                                           [  OK  ]

 

定時備份的效果如下:

 

 Ps: 如果想要解壓查看,則通過命令查看:gunzip -c qas-bak-2015-07-30--04:29:02.gz > 1.bak


著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

程式猿(媛)Shell指令碼必備技能之一: 在Linux下如何自動備份mysql資料

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.