mysql 開發進階篇系列 44 物理備份與恢復( 熱備份xtrabackup 工具介紹)

来源:https://www.cnblogs.com/MrHSR/archive/2018/09/29/9719359.html
-Advertisement-
Play Games

一.概述 物理備份和恢復又分為冷備份和熱備份。與邏輯備份相比,它最大優點是備份和恢復的速度更快。因為物理備份的原理都是基於文件的cp。 1.1 冷備份 冷備份就是停掉資料庫服務。這種物理備份一般很少使用,因為很多應用是不允許長時間停機的。恢復操作大概是:首先停掉mysql服務, 在操作系統級別恢復m ...


一.概述

  物理備份和恢復又分為冷備份和熱備份。與邏輯備份相比,它最大優點是備份和恢復的速度更快。因為物理備份的原理都是基於文件的cp。

  1.1 冷備份
    冷備份就是停掉資料庫服務。這種物理備份一般很少使用,因為很多應用是不允許長時間停機的。恢復操作大概是:首先停掉mysql服務, 在操作系統級別恢復mysql的數據文件,然後重啟mysql服務, 使用mysqlbinlog工具恢復自備份以來的所有binlog。估計這種方法跟sql server的分離附加庫類似。由於會停機,冷備份就不在深入。

  1.2 熱備份
    對於熱備份有很多方法,本質其實就是將要備份的表加讀鎖,然後再cp數據文件到備份目錄。對於熱備份有很多第三方工具。使用最為廣泛的好像是 xtrabackup 工具,該工具是用來備份mysql資料庫的開源工具。
    點擊查看xtrabackup 用戶指南

二. precona xtrabackup 介紹

  下麵翻譯來自官方文檔 2.4版本,有些地方翻譯後不是很懂,在後面繼續學習xtrabackup中,一邊實戰一邊理解,在回頭把該介紹文檔修正。

  2.1 xtrabackup介紹

    Percona XtraBackup是一個開源的MySQL伺服器熱備份工具,在備份期間不會鎖定資料庫。是一個編譯好的C二進位文件,提供了用MyISAM、InnoDB和XtraDB表備份整個MySQL資料庫實例的功能。現是最新版本是2.4,目前只支持在linux系統上。

    它可以在MySQL 5.1、5.5、5.6和5.7伺服器上備份InnoDB、XtraDB和MyISAM表的數據,也可以用XtraDB備份Percona伺服器的數據。

    無論是24x7高負載的伺服器還是低事務量的環境,Percona XtraBackup的設計目的是使備份成為一個無縫的過程,而不會破壞生產環境中伺服器的性能。

   2.2 支持的備份類型

    (1)增量備份

    (2)部分備份

    (3)緊湊的備份

  2.3 高級特征
     (1)使用xtrabackup腳本備份

     (2)統計分析表

     (3)處理二進位日誌

     (4)恢復單個表

     (5)LRU轉儲備份

  2.4  XtraBackup備份功能   

    下麵介紹下XtraBackup工具的主要特征,功能中講到的DrizzleMariaDBPercona Server等是MySQL

Supported MySQL flavors

支持mysql分支類型

MySQL, PerconaServer, MariaDB, Percona XtraDB Cluster, MariaDB Galera Cluster

Supported operating systems

支持的操作系統: linux

Non-blocking InnoDB backups

非阻塞InnoDB備份。在複製非InnoDB數據時,InnoDB表仍然是鎖定的

Blocking MyISAM backups

阻塞MyISAM備份

Incremental backups

增量備份

Full compressed backups

完全壓縮備份

Incremental compressed backups

增量壓縮備份

Fast incremental backups

快速增量備份。

Percona伺服器支持快速增量備份,支持XtraDB更改頁面跟蹤

Incremental backups with archived logs feature in Percona Server

Percona伺服器裡帶有歸檔日誌特性的增量備份

Incremental backups with REDO log only

僅使用重做日誌的增量備份

Backup locks

備份鎖是Percona Server 5.6+中具有讀鎖的表的輕量級替代方法。Percona XtraBackup自動使用它們複製非InnoDB數據,以避免阻塞修改InnoDB表的DML查詢。

Encrypted backups

加密備份

Streaming backups

流備份

Parallel local backups

並行的本地備份

Parallel compression

並行壓縮

Parallel encryption

並行加密

Parallel apply-log

並行apply-log

Parallel copy-back

並行copy-back

Partial backups

部分備份

Partial backups of individual partitions

各種分區的部分備份

Point-in-time recovery support

時間點恢復支持

Safe slave backups

安全的從庫備份

Compact backups

緊湊備份。Percona XtraBackup在準備緊湊備份時跳過二級索引頁並重新創建它們。MySQL企業備份跳過未使用的頁面並重新插入到準備階段。

Buffer pool state backups

緩衝池狀態備份

Individual tables export

各種表導出

Individual partitions export

各種分區導出

Restoring tables to a different server

將表還原到另一臺伺服器。使用Percona XtraBackup導出的表可以導入Percona Server 5.15.55.6+MySQL 5.6+。使用MySQL企業備份創建的可傳輸表空間只能導入Percona Server 5.6+MySQL 5.6+MariaDB 10.0+

Data & index file statistics

數據和索引文件統計

InnoDB secondary indexes defragmentation

InnoDB二級索引整理

support to minimize lock time

支持最小化鎖的時間

Backup history table

備份歷史表

External graphical user interfaces to backup/recovery

用於備份/恢復的外部圖形用戶界面

  2.5 備份工作原理
    Percona XtraBackup基於InnoDB的崩潰恢復功能, 它會複製InnoDB數據文件,這會導致內部不一致的數據, 然後,它對文件執行崩潰恢復,使它們再次成為一致的、可用的資料庫。

    它的工作是因為InnoDB維護一個重做日誌,也稱為事務日誌。這包含對InnoDB數據的每次更改的記錄。當InnoDB啟動時,它檢查數據文件和事務日誌,並執行兩個步驟。它將提交的事務日誌條目應用於數據文件,並對任何修改了數據但沒有提交的事務執行撤銷操作。

    Percona XtraBackup的工作原理是在日誌序列號(LSN)啟動時記住它,然後複製數據文件。這樣做需要一些時間,所以如果文件正在更改,那麼它們就會在不同的時間點反映資料庫的狀態。同時,Percona XtraBackup運行一個後臺進程來監視事務日誌文件,並從中複製更改。Percona XtraBackup需要不斷地這樣做,因為事務日誌是以迴圈方式編寫的,並且可以在一段時間後重用。自從Percona XtraBackup開始執行以來,對數據文件的每次更改都需要事務日誌記錄。

    Percona XtraBackup將使用備份鎖作為具有讀鎖的表的輕量級替代。這個特性在Percona Server 5.6+中可用。Percona XtraBackup自動使用此功能複製非InnoDB數據,以避免阻塞修改InnoDB表的DML查詢。當伺服器支持備份鎖時,xtrabackup首先複製InnoDB數據,運行鎖表進行備份,然後複製MyISAM表和.frm文件。一旦完成,文件的備份將開始。它將備份.frm, . mrg, . myd, . myi, . trg, . trn, . arm, . arz, . csm, . csv, .par和.opt文件。

    在此之後,xtrabackup將使用LOCK BINLOG進行備份,以阻止顯示主/從狀態所報告的所有可能更改二進位日誌位置或Exec_Master_Log_Pos或Exec_Gtid_Set(即與複製從庫上的當前SQL線程狀態對應的主庫二進位日誌坐標)的操作。然後xtrabackup將完成重做日誌文件的複製,並獲取二進位日誌坐標。完成此操作後,xtrabackup將解鎖二進位日誌和表。

    最後,將二進位日誌位置列印到STDERR,如果一切正常,xtrabackup將退出返回0

    註意,xtrabackup的STDERR沒有寫在任何文件中。您必須將其重定向到一個文件,例如,xtrabackup 選項2> backupout.log。

    它還將在備份目錄中創建以下文件:

     在準備階段,Percona XtraBackup使用複製的事務日誌文件對複製的數據文件執行崩潰恢復。完成之後,資料庫就可以恢復和使用了。

     備份後的MyISAM表和InnoDB表最終會保持一致,因為在準備(恢復)過程之後,InnoDB的數據會向前滾到備份完成的地方,而不是回滾到備份開始的地方。這個時間點與具有讀鎖的flush tables表匹配,因此MyISAM數據和準備好的InnoDB數據是同步的。

     xtrabackup和innobackupex工具都提供了前面解釋中沒有提到的許多特性。每個工具的功能在手冊中有更詳細的說明。簡單地說,這些工具允許您使用各種組合的數據文件複製、日誌文件複製和對數據應用日誌來執行流備份和增量備份等操作。

  2.6 恢復還原工作

    要使用xtrabackup恢復備份,您可以使用xtrabackup—copy-back或xtrabackup—move選項。

    Xtrabackup將從my.cnf中讀取datadir、innodb_data_home_dir、innodb_data_file_path、innodb_log_group_home_dir變數,並檢查目錄是否存在。

    它將首先複製MyISAM表、索引等(.frm、. mrg、. myd、. myi、. trg、. trn、. arm、. arz、. csm、. csv、par和.opt文件),然後複製InnoDB表和索引,最後複製日誌文件。它將保留文件的屬性,當複製它們時,您可能不得不在啟動資料庫伺服器之前,將文件的所有權更改為mysql用戶,因為它們將屬於創建備份的用戶。

    可以使用xtrabackup—move-back選項恢復備份。這個選項類似於xtrabackup——copy-back,唯一的區別是它將文件移動到目標位置,而不是複製文件。由於此選項刪除了備份文件,因此必須謹慎使用。當沒有足夠的空閑磁碟空間來容納數據文件和它們的備份副本時,它非常有用。

  

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 推薦一篇關於LVS的好文: https://www.cnblogs.com/gaoxu387/p/7941381.html 一、原博主要內容: 1、概述 IP負載均衡:四層負載,是基於IP+埠的負載均衡,主要代表是LVS(Linux Virtual Server) LVS工作原理:LVS的IP負載 ...
  • 首先去官網根據系統版本下載對應的jdk(註意是Linux版),我們在Linux創建一個文件夾專門存放上傳的安裝包。 然後利用上傳工具把我們下載好的壓縮包上傳到Linux 上,選擇 /opt/software 目錄(這裡選擇自己創建的目錄即可)。 然後再創建一個目錄用於我們的jdk安裝目錄 這裡我把目 ...
  • 1 Linux系統命令操作語法的格式 命令_[參數選項]_[文件或路徑] 其中 _ 至少一個空格 如:rm -f /etc/hosts 其中/etc/hosts完整路徑不帶空格 中括弧表示可選的,即命令的參數和路徑文件都是可選的,參數選項表示使用一個命令的不同功能,比如,可以刪除一個文件和創建一個文 ...
  • mysql讀寫分離配置 環境:centos7.2 mysql5.7 場景描述: 資料庫Master主伺服器:192.168.206.100 資料庫Slave從伺服器:192.168.206.200 MySQL Proxy調度伺服器:192.168.206.210 以下操作,均是在192.168.20 ...
  • MYSQL主從原理及過程 原理 Mysql的 Replication 是一個非同步的複製過程(mysql5.1.7以上版本分為非同步複製和半同步兩種模式),從一個 Mysql instace(我們稱之為 Master)複製到另一個 Mysql instance(我們稱之 Slave)。在 Master ...
  • [20180928]如何能在11g下執行.txt--//鏈接問的問題: http://www.itpub.net/thread-2105467-1-1.htmlcreate table test(t_id int,t_name varchar2(50));create table test2(t_i ...
  • 今天在搭建MySQL MHA 安裝MHA node所需的perl模塊(DBD:mysql)時遇到了一個小的錯誤,如果思路不對的話,還是產生不少麻煩。 現梳理記錄下來。 問題現象 執行的命令 yum install perl-DBD-MySQL -y 報錯信息如下: 可以看出錯誤的關鍵字為 :Cann ...
  • 轉自:http://www.maomao365.com/?p=6801 摘要: 下文將分享"一個存儲過程"中如何調用"另一個存儲過程的返回結果",並應用到自身的運算中 在實際開發中,我們經常會遇到在一個存儲過程中調用另一個存儲過程的返回結果(存儲過程相互應用),實現思路:主要採用臨時表將存儲過程返回 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...