mysql數據庫(六)數據庫備份與恢復

參考文檔:https://mp.weixin.qq.com/s/na7uM5sCyydq9AbOUqV1pAmysql

    本文主要介紹數據庫的備份與在突發狀況下的數據恢復。話很少說,若是要看詳細的數據庫備份與恢復的場景和恢復思路啥的,請查看參考文檔。在這裏有必要介紹一下全量備份和增量備份。sql

全量備份和增量備份

全量備份:截止某一時間點,對以前全部的數據進行備份,這時候要求數據庫再也不更新數據庫

增量備份:項目進行了一段時間,天天都有大量的數據。此時若是每次備份都選擇全量備份則耗時耗力,對以前已經備份過的數據來講浪費極大,所以,咱們能夠選擇相對於以前沒備份過的數據進行備份,此時數據量相對較小,不容易出錯。spa

    簡單點來講,本次實驗就是先進行全量備份,再設置增量備份。在數據丟失後,先恢復全量備份的數據,再恢復全量備份以後到數據丟失以前的數據。3d

實驗步驟

一:mysql數據庫開啓binlog日誌功能。

在/etc/my.cnf文件裏的[mysqld]區塊添加以下內容rest

log-bin=mysql-bin
#而後重啓mysql服務
systemctl restart mysqld.service

二:對現有表或數據庫進行備份

首先查看一下salary表,咱們經過這張表來展現對數據的備份與恢復的現象日誌

 建立一個目錄用來存放備份的數據庫code

mkdir /home/mysql_backup

對tc數據庫進行全量備份,這裏你能夠對你本身存在的數據庫進行操做blog

注意:date與+之間有一個空格ip

mysqldump -uroot -p -B -F -R -x --master-data=2 tc|gzip > /home/mysql_backup/tc_$(date +%F).sql.gz

參數說明:
-B:指定數據庫
-F:刷新日誌
-R:備份存儲過程等
-x:鎖表,再也不更新數據庫
–master-data:在備份語句裏添加CHANGE MASTER語句以及binlog文件及位置點信

三:模擬全量備份以後的操做

備份好以後對salary數據表再次插入數據

四: 此時刪除tc數據庫,模擬數據庫丟失狀況

 五:發現數據庫丟失,準備對丟失數據進行恢復

此時tc數據庫文件已經丟失,須要對文件進行恢復

先恢復全量備份的數據,在經過binlog恢復從全量備份到數據丟失以前的操做

查看全量備份以後新增的binlog文件

這是全備時刻的binlog文件位置,即mysql-bin.000003的155行,所以在該文件以前的binlog文件中的數據都已經包含在這個全備的sql文件中了

查看mysql的數據存放目錄,能夠看到放在了/var/lib/mysql/目錄中

show global variables like "%datadir%";

 移動binlog文件

導出爲sql文件

mysqlbinlog -d tc mysql-bin.000003 >003bin.sql

 剔除其中的drop語句,要把drop下面的語句所有刪掉,不然會報錯

 

 六:恢復數據

 先恢復全量備份的數據

 此時能夠看到,已經恢復到全量備份時的數據了

接下來經過003bin.sql文件恢復全量備份到數據丟失以前的數據

 七:查看數據表,發現已經恢復到刪除數據庫以前的數據了

相關文章
相關標籤/搜索