MySQL備份和恢複

來源:互聯網
上載者:User

標籤:時間長度   log   perl   mysqldump   pat   個數   二進位日誌   環境   iges   

在實際生產環境中,資料是至關重要的。如何將資料實現安全冗餘,在出現意外或災害時快速恢複資料是挽救一個公司的關鍵所在。那麼,定期備份資料是一個基本的工作。

備份的類型:

  根據備份的資料量可分為:

    完全備份:備份整個資料集

    部份備份:備份部分資料集

    增量備份:僅備份最近一次完全備份或增量備份(如果存在的話)以來變化的資料

      缺點:由於可能存在多個增量,恢複時較麻煩

    差異備份:僅備份最近一次完全備份以來變化的資料

      缺點:資料量大的話,比較浪費磁碟空間

  根據備份的方式可分為:

    物理備份:直接複製資料檔案進行備份

    邏輯備份:與儲存引擎無關,從資料庫中“匯出”資料另存而進行的備份

  根據備份時資料的可用狀態可分為:

    熱備:備份時,資料可讀可寫

    溫備:備份時,資料僅可讀

    冷備:備份時,資料不可讀寫

備份時需要考慮的要點:

  ①能容忍最多丟失多少資料

  ②恢複資料需要的時間長度

  ③需要恢複哪些資料

  ④根據備份的資料量選擇合適的工具

  ⑤mysql的二進位日誌至關重要,一定要留存好以便實現基於時間點的還原

接下來將陳述一下基於mysqldump,xtrabackup進行資料備份和恢複。

  一、mysqldump

  是MySQL內建的適合所有儲存引擎的邏輯備份工具,支援完全和部份備份,支援溫備,對InnoDB支援熱備

mysqldump [options] db_name [tb1_name,...] (不會自動建立資料庫)mysqldump [options] --databases db_name ...mysqldump [options] --all-databases

  常用的選項:

-uUSERNAME  //備份時的使用者-pPASSWORD  //備份時使用者的密碼-E,--events  //備份指定資料庫相關的所有事件調度器-R,--routines  //備份指定資料庫相關的預存程序和儲存函數--[skip-]triggers  //(不)備份相關的觸發器--master-data[=#]    1:記錄為不被注釋的CHANGE MASTER TO語句;    2.記錄為注釋的CHANGE MASTER TO語句;(一般用2)--flush-logs  //鎖定表完成後,執行flush logs命令;//溫備的選項,先鎖定備份庫,再啟動備份操作(MyISAM和InnoDB)    --lock-all-tables  //鎖定所有庫的所有表(生產環境慎用)    --lock-tables  //對某個單獨資料庫的所有表進行鎖定熱備的選項    --single-transaction  //啟動一個巨大的事務

  二、xtrabackup

  是由Percona提供的支援對InnoDB做熱備(物理備份)的工具,可實現完全備份、增量備份。  

  備份命令:xtrabackup

  推薦使用:innobackupex(對xtrabackup做了二次封裝的perl script),相對簡潔輕量;

  建立備份恢複的使用者(基於最小許可權)

MariaDB [(none)]> CREATE USER ‘backupuser‘@‘192.168.1.102‘ IDENTIFIED BY ‘backuppass‘;MariaDB [(none)]> GRANT RELOAD,LOCK TABLES,REPLICATION CLIENT ON *.* TO ‘backupuser‘@‘192.168.1.102‘;MariaDB [(none)]> FLUSH PRIVILIGES;

  ①完全備份

innobackupex --user=DBUSE --password=DBUSEPASS /path/to/BACKUP-DIR/

  基於完全備份恢複前的整理操作:

innobackupex --apply-log /path/to/Backup-Dir(備份檔案所在的目錄)//整理無誤出現“Completed OK”後,可執行完全備份的恢複操作:innobackupex --copy-back /path/to/Backup-Dir(整理後的備份檔案目錄)//注意:執行innobackupex --copy-back命令時不需要啟動mysql服務,停止之前配置好mysql的資料目錄即可。恢複資料成功後不要忘記將資料檔案的屬主屬組改為mysql

  ②增量備份

innobackupex --incremental /backup --incremental-basedir=BASEDIR/*其中,BASEDIR指的是完全備份所在的目錄。    此命令執行結束後,innobackupex命令會在/backup目錄中建立一個新的以時間命名的目錄已存放所有的增量備份資料。    另外,執行過增量備份後再次執行時,其--incremental-basedir應該指向上一次的增量備份所在的目錄注意:增量備份僅能應用於InnoDB和XtraDB為儲存引擎的表;對於MyISAM表而言,執行增量備份其實進行的是完全備份*/

  基於完全備份和增量備份恢複前的整理操作:

/*與完全備份恢複時整理操作的不同:(1)需要在每個備份(包括完全和各個增量備份)上,將已經提交的事務進行“重放”。“重放”之後,所有的備份資料將合并到完全備份上。(2)基於所有的備份將未提交的事務進行“復原”。*///於是,執行整理的命令:innobackupex --apply-log --redo-only BASE-DIR//接著執行innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1//而後是第二個增量:innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-2//其中,BASE-DIR指的是完全備份所在目錄,而INCREMENTAL-DIR-1指的是第一次增量備份的目錄,INCREMENTAL-DIR-2指的是第二次增量備份的目錄,依此類推,如果有多個增量備份,每一次都要執行如上操作。//整理無誤後,執行恢複資料操作:innobackupex --copy-back /path/to/Backup-Dir(整理後的備份檔案目錄)

 

    

  

MySQL備份和恢複

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.