參考文檔:https://mp.weixin.qq.com/s/na7uM5sCyydq9AbOUqV1pAmysql
本文主要介紹數據庫的備份與在突發狀況下的數據恢復。話很少說,若是要看詳細的數據庫備份與恢復的場景和恢復思路啥的,請查看參考文檔。在這裏有必要介紹一下全量備份和增量備份。sql
全量備份:截止某一時間點,對以前全部的數據進行備份,這時候要求數據庫再也不更新數據庫
增量備份:項目進行了一段時間,天天都有大量的數據。此時若是每次備份都選擇全量備份則耗時耗力,對以前已經備份過的數據來講浪費極大,所以,咱們能夠選擇相對於以前沒備份過的數據進行備份,此時數據量相對較小,不容易出錯。spa
簡單點來講,本次實驗就是先進行全量備份,再設置增量備份。在數據丟失後,先恢復全量備份的數據,再恢復全量備份以後到數據丟失以前的數據。3d
在/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數據庫文件已經丟失,須要對文件進行恢復
先恢復全量備份的數據,在經過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文件恢復全量備份到數據丟失以前的數據