天天看點

Mysql5.7—運維常用備份方式(超全)

原創作品,允許轉載,轉載時請務必以超連結形式标明文章  原始出處  、作者資訊和本聲明。否則将追究法律責任。 http://xsboke.blog.51cto.com/12096269/1925641

   小生部落格:http://xsboke.blog.51cto.com

   小生 Q Q:1770058260

                             -------謝謝您的參考,如有疑問,歡迎交流

一、 Mysqldump備份結合binlog日志恢複

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

  1. Binlog簡介

  • 主要用于主從複制和恢複資料庫,使用mysqlbinlog指令檢視binlog二進制日志檔案
  • 下面我們通過一個執行個體,示範,binlog是怎麼恢複到某個時間點的
Mysql5.7—運維常用備份方式(超全)

重新開機mysql服務使配置生效

Mysql5.7—運維常用備份方式(超全)

驗證binlog是否開啟成功

Mysql5.7—運維常用備份方式(超全)

建立測試使用的資料庫和表并插入資料

Mysql5.7—運維常用備份方式(超全)

為了友善實驗,我們将有誤操作的記錄,放到一個新的binlog日志檔案中

Mysql5.7—運維常用備份方式(超全)

現在發現删除zhangsan是誤操作,現在需要将zhangsan恢複

,去檢視binlog日志檔案,根據位置實作将表還原到沒有删除zhangsan時,然後跳過删除zhangsan的位置,恢複tom

Mysql5.7—運維常用備份方式(超全)

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

Mysql5.7—運維常用備份方式(超全)
  • 從此圖可以分析出,mysql-bin.00001檔案全部恢複即可,
  • Mysql-bin.00002的219-416區是不需要恢複的

下面開始模拟

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

Mysql5.7—運維常用備份方式(超全)

模拟删除資料庫

Mysql5.7—運維常用備份方式(超全)

通過binlog日志恢複

Mysql5.7—運維常用備份方式(超全)

驗證

Mysql5.7—運維常用備份方式(超全)

  2. Mysqldump簡介

  • mysqldump是mysql用于備份和資料轉移的一個工具;
  • 将sql語句封裝到檔案,檔案包含所有重建你的資料庫所需要的 SQL指令如CREATE DATABASE,CREATE TABLE,INSERT等等,可以用來實作輕量級的快速遷移或恢複資料庫
  • mysqldump 是将資料表導成 SQL 腳本檔案,可以在不同的 MySQL 版本之間使用
  • mysqldump用于資料量很小的備份(大概幾個G),當資料量大的時候不建議使用
  • 導出對象:單個表、多個表、單個資料庫、多個資料庫、所有資料庫

   1) 示例

     導出指定資料庫或單個表

Mysql5.7—運維常用備份方式(超全)
Mysql5.7—運維常用備份方式(超全)

     導出多個資料庫

Mysql5.7—運維常用備份方式(超全)

     導出所有

Mysql5.7—運維常用備份方式(超全)

     完整備份資料庫并重新開啟一個新binlog

Mysql5.7—運維常用備份方式(超全)

     導入

Mysql5.7—運維常用備份方式(超全)

   2)Mysqldump備份方案

    周日淩晨1點全庫備份;

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

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

     首先設定cronta任務

Mysql5.7—運維常用備份方式(超全)

     編輯mysqlfullbackup腳本

Mysql5.7—運維常用備份方式(超全)

     編輯mysqldailybackup.sh腳本内容

Mysql5.7—運維常用備份方式(超全)

二、 Xtrabackup備份工具

  1. Xtrabackup簡介

  • Xtrabackup屬于實體備份,支援實體熱備,開源,性能比ibbackup強
  • Xtrabackup支援增量備份、完整備份、差異備份,與binlog日志組合
  • Xtrabackup提供兩個指令行工具:
  • Xtrabackup:可以備份innodb和xtraDB存儲引擎的表
  • Innobackupex:支援備份innodb和myisam表的存儲引擎,使用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
Mysql5.7—運維常用備份方式(超全)
Mysql5.7—運維常用備份方式(超全)

   安裝相關插件

Mysql5.7—運維常用備份方式(超全)

   安裝percona-toolkit

Wget 

https://www.percona.com/downloads/percona-toolkit/2.2.19/RPM/percona-toolkit-2.2.19-1.noarch.rpm
Mysql5.7—運維常用備份方式(超全)

  5. Xtrabackup+binkog

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

   1)首先建立備份目錄

Mysql5.7—運維常用備份方式(超全)

   2)注意開啟binlog日志

Mysql5.7—運維常用備份方式(超全)

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

Mysql5.7—運維常用備份方式(超全)

   4)檢視備份

Mysql5.7—運維常用備份方式(超全)
5)在生産環境中,還會備份binlog日志
可以使用—start-position和—stop-position以跳過誤删除的位置,去備份binlog日志,這裡不再示範
6)Xtrabackup還原
 還原前需要解決資料一緻性的問題
Mysql5.7—運維常用備份方式(超全)

    開始還原

Mysql5.7—運維常用備份方式(超全)

    為還原的檔案設定屬主屬組

Mysql5.7—運維常用備份方式(超全)
Mysql5.7—運維常用備份方式(超全)

    最後如果需要恢複到某個時間點,可以利用備份的binlog日志檔案恢複

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

Mysql5.7—運維常用備份方式(超全)

本文出自 “

小生blog

” 部落格,請務必保留此出處