當前位置: 妍妍網 > 碼農

Linux 下如何實作 MySQL 資料庫每天自動備份定時備份?

2024-06-26碼農

來源:https://blog.csdn.net/testcs_dn/article/details/48829785

👉 歡迎 ,你將獲得: 專屬的計畫實戰 / 1v1 提問 / Java 學習路線 / 學習打卡 / 每月贈書 / 社群討論

  • 新計畫: 【從零手擼:仿小紅書(微服務架構)】 正在持續爆肝中,基於 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17..., ;

  • 【從零手擼:前後端分離部落格計畫(全棧開發)】 2期已完結,演示連結: http://116.62.199.48/ ;

  • 截止目前, 累計輸出 47w+ 字,講解圖 2090+ 張,還在持續爆肝中.. 後續還會上新更多計畫,目標是將 Java 領域典型的計畫都整一波,如秒殺系統, 線上商城, IM 即時通訊,Spring Cloud Alibaba 等等,

    備份是容災的基礎,是指為防止系統出現操作失誤或系統故障導致數據遺失,而將全部或部份數據集合從套用主機的硬碟或陣列復制到其它的儲存介質的過程。而對於一些網站、系統來說,資料庫就是一切,所以做好資料庫的備份是至關重要的!

    備份是什麽?

    圖片

    為什麽要備份

    圖片

    容災方案建設

    圖片

    儲存介質

  • 光碟

  • 磁帶

  • 硬碟

  • 磁碟陣列

  • DAS:直接附加儲存

  • NAS:網路附加儲存

  • SAN:儲存區域網路

  • 雲端儲存

  • 這裏主要以本地磁盤為儲存介質講一下計劃任務的添加使用,基本的備份指令碼,其它儲存介質只是介質的存取方式可能不大一樣。

    1、檢視磁盤空間情況:

    既然是定時備份,就要選擇一個空間充足的磁盤空間,避免出現因空間不足導致備份失敗,數據遺失的惡果!

    儲存到當前磁盤這是最簡單,卻是最不推薦的;伺服器有多塊硬碟,最好是把備份存放到另一塊硬碟上;有條件就選擇更好更安全的儲存介質;

    # df -hFilesystem

    2、建立備份目錄:

    上面我們使用命令看出/home下空間比較充足,所以可以考慮在/home保存備份檔;

    cd /home
    mkdir backupcd backup

    3、建立備份Shell指令碼:

    註意把以下命令中的DatabaseName換為實際的資料庫名稱;當然,你也可以使用其實的命名規則!

    vi bkDatabaseName.sh

    輸入/貼上以下內容:

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

    對備份進行壓縮:

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

    註意:

    把 username 替換為實際的使用者名稱;把 password 替換為實際的密碼;把 DatabaseName 替換為實際的資料庫名;

    4、添加可執行許可權:

    chmod u+x bkDatabaseName.sh

    添加可執行許可權之後先執行一下,看看指令碼有沒有錯誤,能不能正常使用;

    ./bkDatabaseName.sh

    5、添加計劃任務

    檢測或安裝 crontab

    確認crontab是否安裝:

    執行 crontab 命令如果報 command not found,就表明沒有安裝

    # crontab
    -bash: crontab: command not found

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

    CentOS下使用yum命令安裝計劃任務程式crontab https://blog.csdn.net/testcs_dn/article/details/48780971

    使用rpm命令從CentOS系統槽安裝計劃任務程式crontab https://blog.csdn.net/testcs_dn/article/details/48781553

    添加計劃任務

    執行命令:

    crontab -e

    這時就像使用vi編輯器一樣,可以對計劃任務進行編輯。

    輸入以下內容並保存:

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

    具體是什麽意思呢?

    意思是每一分鐘執行一次shell指令碼「/home/backup/bkDatabaseName.sh」。

    6、測試任務是否執行

    很簡單,我們就執行幾次「ls」命令,看看一分鐘過後檔有沒有被建立就可以了!

    如果任務執行失敗了,可以透過以下命令檢視任務日誌:

    # tail -f /var/log/cron

    輸出類似如下:

    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)

    👉 歡迎 ,你將獲得: 專屬的計畫實戰 / 1v1 提問 / Java 學習路線 / 學習打卡 / 每月贈書 / 社群討論

  • 新計畫: 【從零手擼:仿小紅書(微服務架構)】 正在持續爆肝中,基於 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17..., ;

  • 【從零手擼:前後端分離部落格計畫(全棧開發)】 2期已完結,演示連結: http://116.62.199.48/ ;

  • 截止目前, 累計輸出 47w+ 字,講解圖 2090+ 張,還在持續爆肝中.. 後續還會上新更多計畫,目標是將 Java 領域典型的計畫都整一波,如秒殺系統, 線上商城, IM 即時通訊,Spring Cloud Alibaba 等等,


    1. 

    2. 

    3. 

    4. 

    最近面試BAT,整理一份面試資料Java面試BATJ通關手冊,覆蓋了Java核心技術、JVM、Java並行、SSM、微服務、資料庫、數據結構等等。

    獲取方式:點「在看」,關註公眾號並回復 Java 領取,更多內容陸續奉上。

    PS:因公眾號平台更改了推播規則,如果不想錯過內容,記得讀完點一下在看,加個星標,這樣每次新文章推播才會第一時間出現在你的訂閱列表裏。

    「在看」支持小哈呀,謝謝啦