mysql5.7備份

一、 Mysqldump備份結合binlog日誌恢復

使用mysqldump進行全庫備份,並使用binlog日誌備份,還原時,可以使用binlog日誌恢復到備份前的任意位置或時間

  1. Binlog簡介

  • 主要用於主從複製和恢復數據庫,使用mysqlbinlog命令查看binlog二進制日誌文件

  • 下面我們通過一個實例,演示,binlog是怎麼恢復到某個時間點的

wKioL1kYY-_xpUiJAAD_sLj9r6Q054.jpg

重啓mysql服務使配置生效

wKiom1kYY_qC4IulAAAnPBJQrHQ303.jpg

驗證binlog是否開啓成功

wKiom1kYZAbhu8EUAABVSRL_FIM435.jpg

創建測試使用的數據庫和表並插入數據

wKioL1kYZBrjaUXhAADqpt2PoCs834.jpg

爲了方便實驗,我們將有誤操作的記錄,放到一個新的binlog日誌文件中

wKiom1kYZCSxExz-AAC-f3ARAJk085.jpg

現在發現刪除zhangsan是誤操作,現在需要將zhangsan恢復

,去查看binlog日誌文件,根據位置實現將表還原到沒有刪除zhangsan時,然後跳過刪除zhangsan的位置,恢復tom

wKiom1kYZDbRspBiAALAQ2oLiho665.jpg

可以做一個分析圖,用來分析出,恢復時指定的區號

wKioL1kYZELjL0XMAACKwbi8DIg283.png

  • 從此圖可以分析出,mysql-bin.00001文件全部恢復即可,

  • Mysql-bin.00002219-416區是不需要恢復的

下面開始模擬

首先根據需求導出部分binlog日誌

wKioL1kYZHXyJpEfAADW2057xHc342.jpg

模擬刪除數據庫

wKiom1kYZH7T37IYAABPNUUMa_U660.jpg

通過binlog日誌恢復

wKiom1kYZInTFuNQAADY3KsTHn0915.jpg

驗證

wKioL1kYZJbwCKfyAABerflHfu0433.jpg

  2. Mysqldump簡介

  • mysqldumpmysql用於備份和數據轉移的一個工具;

  • sql語句封裝到文件,文件包含所有重建你的數據庫所需要的 SQL命令如CREATE DATABASECREATE TABLEINSERT等等,可以用來實現輕量級的快速遷移或恢復數據庫

  • mysqldump 是將數據表導成 SQL 腳本文件,可以在不同的 MySQL 版本之間使用

  • mysqldump用於數據量很小的備份(大概幾個G),當數據量大的時候不建議使用

  • 導出對象:單個表、多個表、單個數據庫、多個數據庫、所有數據庫

   1) 示例

     導出指定數據庫或單個表

     wKioL1kYZOqSNq02AABvYNpgW3Q387.jpg

     wKiom1kYZOuzEwyrAABqht1lSec402.jpg

     導出多個數據庫

     wKiom1kYZQmTKLPGAAB2r88ndNw143.jpg

     導出所有

     wKioL1kYZRuhfC9RAABvlaX7FRc477.jpg

     完整備份數據庫並重新開啓一個新binlog

     wKioL1kYZTexcydLAACB-73Kz7c576.jpg

     導入

     wKiom1kYZUaRHTmXAAAospwbMco222.jpg

   2)Mysqldump備份方案

    週日凌晨1點全庫備份;

     週一到週六凌晨每隔4個小時增量備份一次;

     設置crontab任務,每天執行備份腳本;



     首先設置cronta任務

     wKiom1kYZZfDbJzgAACPL9M5DGs811.jpg

     編輯mysqlfullbackup腳本

     wKiom1kYZarx_GaAAAFtu81Lum0060.jpg

     編輯mysqldailybackup.sh腳本內容

     wKiom1kYZcPjpg1bAAM4iS8U9Ic666.jpg

二、 Xtrabackup備份工具

  1. Xtrabackup簡介

  • Xtrabackup屬於物理備份,支持物理熱備,開源,性能比ibbackup

  • Xtrabackup支持增量備份、完整備份、差異備份,與binlog日誌組合

  • Xtrabackup提供兩個命令行工具:

  • Xtrabackup:可以備份innodbxtraDB存儲引擎的表

  • Innobackupex:支持備份innodbmyisam表的存儲引擎,使用perl語言編寫,執行過程中會執行一個讀鎖

  2. 注意事項

  • 因爲xtrabackup屬於物理熱備,所以在備份的時候可能出現已經提交但是沒有將數據寫入數據文件或沒有提交的事務,所以在恢復時需要解決這個問題,使用—applog-log參數可以將已經備份的數據中已提交的數據寫入數據文件,未提交的數據全部回滾,以保證數據的唯一性

  • 數據恢復時需要刪除data下的所有文件

  • 還原後,需要設置恢復文件的屬主屬組,mysql才能正常運行

  3. Xtrabakup的優點

  • 備份速度快,可以用於較大的數據庫,彌補mysqldump的部分不足

  • 支持熱備份,備份過程不打斷事務的執行

  • 支持壓縮備份節約磁盤空間和流量

  • 自動實現備份檢驗

  • 還原速度快

  4. Xtrabackup安裝

首先下載xtrabackup並且進行安裝

Wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/tarball/percona-xtrabackup-2.4.4-Linux-x86_64.tar.gz

   wKiom1kYZvzzRWFYAAA0G1pDzA8603.jpg

   wKiom1kYZxLR0GwOAAB3BLO6Z6k338.jpg

   

   安裝相關插件

   wKioL1kYZzaCgtUsAAAw1aRyd2U798.jpg

   安裝percona-toolkit

Wget https://www.percona.com/downloads/percona-toolkit/2.2.19/RPM/percona-toolkit-2.2.19-1.noarch.rpm

wKioL1kYZ0jDkD55AAEJ_W9Jvy8445.jpg

  5. Xtrabackup+binkog

   Xtrabackup+binlog可以實現時間點還原

   1)首先創建備份目錄

     wKiom1kYZ2rj6N3EAAAm3l4mp6A347.jpg

   2)注意開啓binlog日誌

     wKiom1kYZ4KS5fH5AAA5W-wI44s881.png

   3)執行完整備份(使用xtrabackup的“流”及“壓縮備份”功能)

     wKioL1kYZ6ngZY67AACx5OqEegc007.jpg

   4)查看備份

     wKioL1kYZ7nh9PCOAAFou4_4NSA889.jpg

5)在生產環境中,還會備份binlog日誌

可以使用—start-position—stop-position以跳過誤刪除的位置,去備份binlog日誌,這裏不再演示

6)Xtrabackup還原

 還原前需要解決數據一致性的問題

    wKioL1kYZ-WxT5LtAAFI3K2NCVY763.jpg

    開始還原

    wKiom1kYZ_bzI3APAABv89bRpwE653.jpg

    爲還原的文件設置屬主屬組

    wKioL1kYaAGwrsFlAAD3arGUhB0718.jpg

    wKiom1kYaAmBOIqMAAA2-cltvW0437.jpg

    最後如果需要恢復到某個時間點,可以利用備份的binlog日誌文件恢復

  6. 在生產環境中使用的備份用戶可能不是root,這時需要注意權限了

   wKioL1kYaCPh_0j_AAE5_9vh1mM844.jpg


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章