1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        MySQL備份腳本,應(yīng)該這么寫

        共 2940字,需瀏覽 6分鐘

         ·

        2020-08-16 09:31

        前言:

        數(shù)據(jù)庫備份的重要性不言而喻,特別是在生產(chǎn)環(huán)境,任何數(shù)據(jù)的丟失都可能產(chǎn)生嚴(yán)重的后果。所以,無論什么環(huán)境,我們都應(yīng)該有相應(yīng)的備份策略來定時(shí)備份數(shù)據(jù)庫。在 MySQL 中,比較常用的邏輯備份工具是 mysqldump,本篇文章將介紹 MySQL 定時(shí)備份的方法。

        ? 1.制定合適的備份策略

        對于不同的數(shù)據(jù)庫環(huán)境,我們應(yīng)該考慮不同的備份策略。制定備份策略時(shí),應(yīng)考慮以下幾點(diǎn)因素:

        • 物理備份還是邏輯備份。這個(gè)可以由數(shù)據(jù)庫大小決定,比如說小于100G用邏輯備份,大于100G用物理備份。
        • 備份文件保留時(shí)間。這個(gè)可以由磁盤大小決定,一般至少保留7天。
        • 備份執(zhí)行時(shí)間。一般放在業(yè)務(wù)低峰期,比如凌晨執(zhí)行備份操作。
        • 備份間隔時(shí)間。一般推薦一天一備,如果系統(tǒng)不太重要,備份間隔也可以延長。
        • 是否有從庫。有從庫的話,推薦放在從庫上備份,減小對主庫的壓力。

        ? 2.Linux系統(tǒng)備份腳本

        Linux 系統(tǒng)下,我們可以利用 crontab 定時(shí)任務(wù)來執(zhí)行備份腳本,如果你你對 crontab 還不了解,可以參考以下介紹快速學(xué)習(xí)下。

        crontab是一個(gè)命令,常見于Unix和類Unix的操作系統(tǒng)之中,用于設(shè)置周期性被執(zhí)行的指令。

        格式:
        *??*??*??*??*?command
        分?時(shí)?日?月?周??命令

        第1列表示分鐘1~59?每分鐘用*或者?*/1表示
        第2列表示小時(shí)1~23(0表示0點(diǎn))
        第3列表示日期1~31
        第4列表示月份1~12
        第5列標(biāo)識號星期0~6(0表示星期天)
        第6列要運(yùn)行的命令

        crontab?-e?編輯該用戶下的定時(shí)任務(wù)設(shè)置
        crontab?-l?列出該用戶下的所有定時(shí)任務(wù)

        下面我們來正式書寫備份腳本,廢話不多說,先給出腳本模板:

        #!/bin/bash
        #?-------------------------------------------------------------------------------
        #?FileName:????mysql_backup.sh?
        #?Describe:????Used?for?database?backup
        #?Revision:????1.0
        #?Date:????????2020/08/11
        #?Author:??????wang

        #
        ?設(shè)置mysql的登錄用戶名和密碼(根據(jù)實(shí)際情況填寫)
        mysql_user?=?"root"
        mysql_password?=?"yourpassword"
        mysql_host?=?"localhost"
        mysql_port?=?"3306"
        backup_dir?=?/data/mysql_backup

        dt=date?+'%Y%m%d_%H%M'
        echo?"Backup?Begin?Date:"?$(date?+"%Y-%m-%d?%H:%M:%S")

        #
        ?備份全部數(shù)據(jù)庫
        mysqldump?-h$mysql_host?-P$mysql_port?-u$mysql_user?-p$mysql_password?-R?-E?--all-databases?--single-transaction?>?$backup_dir/mysql_backup_$dt.sql

        find?$backup_dir?-mtime?+7?-type?f?-name?'*.sql'?-exec?rm?-rf?{}?\;
        echo?"Backup?Succeed?Date:"?$(date?+"%Y-%m-%d?%H:%M:%S")

        以上腳本可根據(jù)實(shí)際情況修改,比如備份某一個(gè)庫、保留時(shí)間變更等等。腳本寫完后要注意調(diào)試,調(diào)試完成后就可以部署了,比如我們打算每天凌晨2點(diǎn)進(jìn)行備份,則可以這樣設(shè)置定時(shí)任務(wù)。

        #?注意腳本執(zhí)行權(quán)限及修改腳本路徑
        00?02?*?*?*?sh?/root/scripts/mysql_backup.sh?>?/root/scripts/mysql_backup.log?2>&1

        ? 3.Windows系統(tǒng)備份腳本

        Windows 系統(tǒng)備份腳本也是類似的,只不過變成了bat腳本,需要設(shè)置計(jì)劃任務(wù)來定時(shí)執(zhí)行。比如我們可以在E盤下創(chuàng)建一個(gè) MySQLdata_Bak 目錄,此目錄下創(chuàng)建 mysql_backup 目錄存放備份文件,mysql_bak.bat 是備份腳本,腳本內(nèi)容如下(自動刪除7天前的備份文件):

        rem?auther:wang
        rem?date:20200811
        rem?******MySQL?backup?start********
        @echo?off
        forfiles?/p?"E:\MySQLdata_Bak\mysql_backup"?/m?backup_*.sql?-d?-7?/c?"cmd?/c?del?/f?@path"
        set?"Ymd=%date:~0,4%%date:~5,2%%date:~8,2%0%time:~1,1%%time:~3,2%%time:~6,2%"
        "E:\mysql5.7.23\bin\mysqldump"?-uroot?-p123456?-P3306?--default-character-set=utf8?-R?-E?--single-transaction??--all-databases?>?"E:\MySQLdata_Bak\mysql_backup\backup_%Ymd%.sql"
        @echo?on
        rem?******MySQL?backup?end********

        以上腳本僅供參考,可以根據(jù)自己的環(huán)境稍加改動。同樣的,腳本調(diào)試完成后就可以加入計(jì)劃任務(wù)了,如果你對 Windows 計(jì)劃任務(wù)還不了解,可以百度下,也是比較方便簡單的。

        ? 4.備份可用性校驗(yàn)

        除了備份,非常重要的一件事情就是驗(yàn)證備份數(shù)據(jù)的可用性。想象一下,當(dāng)你需要進(jìn)行數(shù)據(jù)恢復(fù)的時(shí)候,忽然發(fā)現(xiàn)過去的備份數(shù)據(jù)都是無效的,那得有多難受。很多朋友在寫好備份腳本加到定時(shí)任務(wù)后,只是檢查下定時(shí)任務(wù)有執(zhí)行,備份目錄有文件就不再關(guān)注了,往往到了需要使用備份文件的時(shí)候才發(fā)現(xiàn)備份數(shù)據(jù)有問題。

        目前對于備份文件的數(shù)據(jù)校驗(yàn)沒有非常方便的辦法,用的比較多的還是定時(shí)把備份文件拉出來做備份恢復(fù)演練,例如一個(gè)月做一次備份恢復(fù)演練就可以有效提高備份文件可用性,心里也踏實(shí)。

        所以,千萬不要以為有了備份就萬無一失了,平時(shí)也要多檢查備份腳本執(zhí)行是否正確,生產(chǎn)的備份腳本內(nèi)容是否可用,最好可以定期做恢復(fù)演練。

        總結(jié):

        本篇文章主要分享了 Linux 系統(tǒng)及 Windows 系統(tǒng)下的 MySQL 定時(shí)備份腳本,腳本內(nèi)容比較簡單明了,功能并不復(fù)雜,如果你有其他備份需求,可以在此基礎(chǔ)上修改完善。如果這篇文章對你有所幫助的話,請多多分享轉(zhuǎn)發(fā)。

        推薦閱讀


        (點(diǎn)擊標(biāo)題可跳轉(zhuǎn)閱讀)

        InnoDB存儲引擎簡介

        MySQL主從復(fù)制詳解

        推薦一些學(xué)習(xí)MySQL的資源

        - End -

        動動手指轉(zhuǎn)發(fā)、在看
        是對我最大的鼓勵

        瀏覽 49
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            美女被男人猛操 | 快穿系统女配啪啪任务h | 俩性视频 | 婷婷黄色 | 女明星疯狂高潮呻吟摸揉 | 免费在线观看操逼视频 | 黑人中文字幕 | 国产亚洲 久一区二区 | 婷婷深爱激情 | 百度丁香五月深爱五月 |