MySQL全量、增量備份與恢復

目錄

數據備份

一、數據備份類型

?二、常見備份方法

擴展:GTID與XtraBackup

?一、GTID(全局事務標識符)?

?1. 定義與核心作用?

?2. GTID在備份恢復中的意義?

?3. GTID配置與啟用?

?二、XtraBackup的意義與核心價值?

?1. 定義與定位?

?2. 核心功能與優勢?

?3. 適用場景?

?三、XtraBackup部署與使用?

?1. 環境準備與安裝?

?2. 全量備份與恢復?

?3. 增量備份與恢復?

?4. 備份壓縮與流式傳輸?

?四、GTID與XtraBackup的協同應用?

?1. 備份時記錄GTID信息?

?2. 基于GTID的復制恢復?

?五、對比總結?


數據備份

一、數據備份類型

1、物理與邏輯角度

? ? 數據庫備份類型可以分為物理備份邏輯備份

? ? 物理備份就是對數據庫操作系統物理文件(如數據文件,日志文件)的備份。適用于需要快速恢復的大型重要數據庫。物理備份又可分為冷備份(脫機備份)、熱備份(聯機備份)、溫備份

  • 冷備份:在數據庫關閉下及逆行進行備份操作;
  • 熱備份:在數據庫處于運行狀態下進行備份操作,依賴于數據庫的日志文件;
  • 溫備份:數據庫鎖定表格(不可寫入但可讀)的狀態下進行備份操作。

? ? 邏輯備份就是對數據庫邏輯組件(如表等數據庫對象)的備份,表示為邏輯數據庫結構(CREATE DATABASE,CREATE TABLE語句)和內容(INSERT語句或分隔文本文件)的信息。這種類型的備份使用于可以編輯數據值或表結構較小的數據量,或在不同的機器體系結構上重新創建數據。

2、策略角度

? ? 可以分為完全備份、差異備份增量備份


?完全備份 (Full Backup)?

?定義?

  • ?完全備份?是對選定數據(如整個系統、數據庫或文件目錄)的完整復制,每次備份時都會保存所有數據的最新狀態,無論數據是否被修改過。

?流程?

  1. 首次備份時,完整復制所有數據。
  2. 后續每次備份仍會重新復制所有數據,即使只有少量變化。

?優點?

  • ?恢復簡單?:只需最近一次完全備份即可恢復所有數據。
  • ?獨立性強?:每個完全備份是獨立的,不依賴其他備份。
  • ?版本清晰?:每次備份代表一個完整的時間點快照。

?缺點?

  • ?存儲消耗大?:每次備份占用空間與原始數據量相當。
  • ?備份時間長?:數據量大時,備份耗時較高。
  • ?帶寬占用高?:不適合頻繁備份。

?適用場景?

  • 首次備份或基線備份。
  • 定期低頻備份(如每周一次)。
  • 關鍵系統或小數據集(如數據庫核心文件)。

?差異備份 (Differential Backup)?

?定義?

  • ?差異備份?記錄自?最近一次完全備份以來所有變化的數據?。每次差異備份的內容會逐漸累積,直到下一次完全備份重置基準。

?流程?

  1. 假設周一執行完全備份。
  2. 周二差異備份:保存周一后所有變化。
  3. 周三差異備份:保存周一后所有變化(包含周二和周三的變化)。
  4. 周四差異備份:保存周一后所有變化(累積到周四)。
  5. 重復直到下一次完全備份。

?優點?

  • ?恢復效率較高?:恢復時只需最近一次完全備份 + 最新差異備份。
  • ?存儲占用可控?:比完全備份節省空間,但隨著時間推移差異備份會逐漸增大。
  • ?備份速度較快?:僅備份增量數據。

??缺點

  • ?存儲壓力隨時間增加?:隨著距離上次完全備份的時間增加,差異備份規模可能接近完全備份。
  • ?依賴完全備份?:若完全備份損壞,后續差異備份失效。

??用場景

  • 需要平衡備份頻率和恢復速度的場景。
  • 中小型數據量,且完全備份間隔較短(如每周完全備份 + 每日差異備份)。

?增量備份 (Incremental Backup)?

??定義

  • ?增量備份?僅記錄自?上一次備份(無論完全備份還是增量備份)以來的變化數據?。每次備份僅包含最新改動,形成一個備份鏈。

?流程?

  1. 周一執行完全備份。
  2. 周二增量備份:僅保存周一后的變化。
  3. 周三增量備份:僅保存周二后的變化。
  4. 周四增量備份:僅保存周三后的變化。
  5. 恢復時需完全備份 + 所有后續增量備份。

?優點?

  • ?存儲占用最小?:每次僅備份少量新增或修改的數據。
  • ?備份速度最快?:適合高頻備份(如每天多次)。
  • ?帶寬優化?:適合遠程備份或云備份。

?缺點?

  • ?恢復復雜度高?:需按順序合并所有增量備份,恢復時間可能較長。
  • ?依賴鏈風險高?:若鏈中某個備份損壞,后續備份可能無法恢復。
  • ?管理復雜?:需維護完整的備份鏈。

?適用場景?

  • 數據量大且變化較少的場景(如文檔存儲)。
  • 需要高頻備份的場景(如每小時備份一次)。

?對比總結?

?維度??完全備份??差異備份??增量備份?
?存儲占用?最大中等(隨時間增長)最小
?備份速度?較快最快
?恢復速度?最快(一步到位)較快(兩步恢復)慢(依賴備份鏈)
?恢復復雜度?
?數據安全性?高(獨立備份)中(依賴完全備份)低(依賴備份鏈完整性)
?適用頻率?低頻(如每周)中頻(如每日)高頻(如每小時)

?組合策略建議?

  • ?完全備份 + 增量備份?

    • ?示例?:每周日完全備份,周一至周六增量備份。
    • ?優點?:節省存儲和帶寬,適合數據量大且變化小的場景。
    • ?缺點?:需妥善管理備份鏈,恢復步驟多。
  • ?完全備份 + 差異備份?

    • ?示例?:每周日完全備份,周一至周六差異備份。
    • ?優點?:恢復時僅需兩次操作,適合需要快速恢復的中型數據。
    • ?缺點?:差異備份體積逐漸增大。
  • ?混合策略?

    • ?示例?:完全備份(每周)+ 差異備份(每日)+ 增量備份(每小時)。
    • ?適用場景?:關鍵系統需要多級容災(如金融、醫療數據)。

?二、常見備份方法

? ? MySQL 數據庫的備份可以采用很多種方式,如直接打包數據庫文件(物理冷備份)、專用備份工具(mysqldump)、二進制日志增量備份、第三方工具備份等。

1、物理冷備份
? ? 物理冷備份時需要在數據庫處于關閉狀態下,能夠較好地保證數據庫的完整性。物理冷備份一般用于非核心業務,這類業務一般都允許中斷,物理冷備份的特點就是速度快,恢復時也是最為簡單的

2、專用備份工具mysql?dump或mysqlhotcopy

? ? mysqldump 程序和 mysqlhotcopy 都可以做備份。mysqldump 是客戶端常用邏輯備份程序,能夠產生一組被執行以后再現原始數據庫對象定義和表數據的SQL 語句。它可以轉儲一個到多個 MySQL 數據庫,對其進行備份或傳輸到遠程SQL 服務器。mysqldump 更為通用,因為它可以備份各種表。mysqlhotcopy 僅適用于某些存儲引擎。

3、啟用二進制日志進行增量備份

? ? MySQL 支持增量備份,進行增量備份時必須啟用二進制日志。二進制日志文件為用戶 提供復制,對執行備份點后進行的數據庫更改所需的信息進行恢復。如果進行增量備份(包含自上次完全備份或增量備份以來發生的數據改),需要刷新二進制日志。

4、第三方工具備份

擴展:GTID與XtraBackup

?一、GTID(全局事務標識符)?
?1. 定義與核心作用?
  • ?GTID(Global Transaction Identifier)? 是MySQL 5.6版本引入的全局唯一事務標識機制,格式為?server_uuid:sequence_number,用于唯一標識每個事務。
  • ?核心作用?:
    • 簡化主從復制配置,消除傳統復制中對二進制日志文件名和位置的依賴。
    • 支持自動故障切換,確保事務在主從節點間的一致性。
    • 實現基于事務的增量恢復,避免手動定位日志偏移量。
?2. GTID在備份恢復中的意義?
  • ?精準恢復?:通過GTID確定事務邊界,支持時間點恢復(PITR)。
  • ?復制拓撲管理?:在不同備份副本間快速重建主從關系,避免數據不一致風險。
?3. GTID配置與啟用?

?配置文件(my.cnf)示例?:

[mysqld] 
gtid_mode = ON 
enforce_gtid_consistency = ON 
server_id = 1 
  • ?生效流程?:
    1. 動態啟用GTID(需MySQL重啟):
      SET GLOBAL gtid_mode = ON; 
    2. 驗證GTID狀態:
      SHOW VARIABLES LIKE 'gtid_mode'; 

?二、XtraBackup的意義與核心價值?
?1. 定義與定位?
  • ?XtraBackup? 是Percona開發的MySQL物理熱備份工具,支持InnoDB/XtraDB引擎,兼容MyISAM表的有限備份。
  • ?核心定位?:
    • 解決邏輯備份(如mysqldump)速度慢的問題,適用于TB級數據場景。
    • 提供在線備份能力,避免業務停機。
?2. 核心功能與優勢?
  • ?物理熱備份?:直接復制數據文件,速度顯著優于邏輯備份。
  • ?增量備份?:基于LSN(日志序列號)僅備份變化的數據頁。
  • ?事務一致性?:通過Redo日志捕獲備份期間的變更,確保數據完整性。
  • ?壓縮與加密?:減少存儲占用,支持TDE(透明數據加密)。
?3. 適用場景?
  • 大型數據庫(如數據量超過100GB)的全量與增量備份。
  • 高可用架構(如主從復制、Galera集群)的數據同步基礎。

?三、XtraBackup部署與使用?
?1. 環境準備與安裝?
  • ?版本選擇?:

    • MySQL 5.x 使用?XtraBackup 2.4
    • MySQL 8.0+ 使用?XtraBackup 8.0
  • ?安裝步驟?(以CentOS為例)36:

    # 添加Percona倉庫 
    yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm # 安裝XtraBackup 
    yum install percona-xtrabackup-24 
?2. 全量備份與恢復?

?備份命令?:

xtrabackup --backup --target-dir=/backup/full \ --user=root --password=your_password 

?恢復流程?:

  1. 準備備份數據(應用Redo日志):
    xtrabackup --prepare --target-dir=/backup/full 
  2. 替換原數據目錄:
    xtrabackup --copy-back --target-dir=/backup/full 
?3. 增量備份與恢復?

?增量備份命令?(基于全量備份):

xtrabackup --backup --target-dir=/backup/incr1 \--incremental-basedir=/backup/full \--user=root --password=your_password 

?恢復流程?:

  1. 合并增量到全量備份:
    xtrabackup --prepare --apply-log-only --target-dir=/backup/full 
    xtrabackup --prepare --target-dir=/backup/full \--incremental-dir=/backup/incr1 
  2. 執行最終恢復操作:
    xtrabackup --copy-back --target-dir=/backup/full 
?4. 備份壓縮與流式傳輸?

?壓縮備份?:

xtrabackup --backup --compress --target-dir=/backup/compressed 

?流式備份至遠程服務器?5:

xtrabackup --backup --stream=xbstream | ssh user@remote_host "cat - > /backup/stream.xbstream" 

?四、GTID與XtraBackup的協同應用?
?1. 備份時記錄GTID信息?
  • XtraBackup自動在備份元數據文件?xtrabackup_binlog_info?中記錄GTID集合。
  • ?查看GTID狀態?:
    cat /backup/full/xtrabackup_binlog_info 
?2. 基于GTID的復制恢復?

?從備份創建從庫?:

  1. 在從庫配置文件中啟用GTID:
    [mysqld] 
    gtid_mode=ON 
    enforce_gtid_consistency=ON 
  2. 啟動從庫并設置復制源:
    CHANGE MASTER TOMASTER_HOST='master_host',MASTER_AUTO_POSITION=1; 

?五、對比總結?
?維度??GTID??XtraBackup?
?核心功能?事務全局標識與復制管理物理熱備份與快速恢復
?數據一致性?確保事務在主從節點一致通過Redo日志保證備份一致性
?部署復雜度?需配置gtid_mode并重啟服務安裝依賴包,配置備份路徑
?適用場景?主從復制、故障切換大型數據庫全量/增量備份
?恢復復雜度?基于事務自動定位恢復點需合并全量與增量備份
?自動化支持?支持MASTER_AUTO_POSITION支持腳本自動化定時備份

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/905163.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/905163.shtml
英文地址,請注明出處:http://en.pswp.cn/news/905163.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

木馬查殺篇—Opcode提取

【前言】 介紹Opcode的提取方法,并探討多種機器學習算法在Webshell檢測中的應用,理解如何在實際項目中應用Opcode進行高效的Webshell檢測。 Ⅰ 基本概念 Opcode:計算機指令的一部分,也叫字節碼,一個php文件可以抽取出…

DeepSeek-R1-Distill-Qwen-1.5B代表什么含義?

DeepSeek?R1?Distill?Qwen?1.5B 完整釋義與合規須知 一句話先行 這是 DeepSeek?AI?把自家?R1?大模型?的知識,通過蒸餾壓縮進一套 Qwen?1.5B 架構 的輕量學生網絡,并以寬松開源許可證發布的模型權重。 1?|?名字逐段拆解 片段意義備注DeepSee…

Megatron系列——張量并行

本文整理自bilibili Zomi視頻 1、行切分和列切分 注意: (1)A按列切分時,X無需切分,split復制廣播到A1和A2對應設備即可。最后Y1和Y2需要拼接下,即All Gather (2)A按行切分時&#…

java agent技術

從JDK1.5之后引入了java angent技術 Java Agent 是一種強大的技術,它允許開發者在 JVM 啟動時或運行期間動態地修改類的字節碼,從而實現諸如性能監控、日志記錄、AOP(面向切面編程)等功能 java agent依賴于Instrumentation API&…

LLaMA Factory 深度調參

注意,本文涵蓋從基礎調參到前沿研究的完整知識體系,建議結合具體業務場景靈活應用。一篇“參考文獻”而非“可運行的代碼”。https://github.com/zysNLP/quickllm 初始指令: llamafactory-cli train \--stage sft \--do_train True \--mode…

Linux驅動:驅動編譯流程了解

要求 1、開發板中的linux的zImage必須是自己編譯的 2、內核源碼樹,其實就是一個經過了配置編譯之后的內核源碼。 3、nfs掛載的rootfs,主機ubuntu中必須搭建一個nfs服務器。 內核源碼樹 解壓 tar -jxvf x210kernel.tar.bz2 編譯 make x210ii_qt_defconfigmakeCan’t use ‘…

Redis集群模式、持久化、過期策略、淘汰策略、緩存穿透雪崩擊穿問題

Redis四種模式 單節點模式 架構??:單個Redis實例運行在單臺服務器。 ??優點??: ??簡單??:部署和配置容易,適合開發和測試。 ??低延遲??:無網絡通信開銷。 ??缺點??: ??單點故障??&…

1.2 函數

函數的本質是描述變量間的依賴關系:??一個變量(自變量)的變化會唯一確定另一個變量(因變量)的值??。 ??基本構成??:通過符號(如YF(X))表達規則,X輸入 → F處理 …

2025數字孿生技術全景洞察:從工業革命到智慧城市的跨越式發展

引言 數字孿生技術,這一融合物理世界與虛擬鏡像的革新性工具,正以驚人的速度重塑產業格局。2025年,中國數字孿生市場規模預計達214億元,工業制造領域占比超40%,其技術深度與行業落地成果令人矚目。本文將結合最新數據與…

RabbitMQ 工作模式

RabbitMQ 一共有 7 中工作模式,可以先去官網上了解一下(一下截圖均來自官網):RabbitMQ 官網 Simple P:生產者,要發送消息的程序;C:消費者,消息的接受者;hell…

VBA會被Python代替嗎

VBA不會完全被Python取代、但Python在自動化、數據分析與跨平臺開發等方面的優勢使其越來越受歡迎、兩者將長期并存且各具優勢。 Python以其易于學習的語法、強大的開源生態系統和跨平臺支持,逐漸成為自動化和數據分析領域的主流工具。然而,VBA依舊在Exc…

【開源工具】深度解析:基于PyQt6的Windows時間校時同步工具開發全攻略

🕒 【開源工具】深度解析:基于PyQt6的Windows時間校時同步工具開發全攻略 🌈 個人主頁:創客白澤 - CSDN博客 🔥 系列專欄:🐍《Python開源項目實戰》 💡 熱愛不止于代碼,熱…

大模型項目:普通藍牙音響接入DeepSeek,解鎖語音交互新玩法

本文附帶視頻講解 【代碼宇宙019】技術方案:藍牙音響接入DeepSeek,解鎖語音交互新玩法_嗶哩嗶哩_bilibili 目錄 效果演示 核心邏輯 技術實現 大模型對話(技術: LangChain4j 接入 DeepSeek) 語音識別(…

qt命名空間演示

#ifndef CIR_H #define CIR_Hnamespace cir {double PI3.141592653;//獲取圓行周長double getLenthOfCircle(double radius){return 2*PI*radius;}//獲取圓形面積double getAreaOfCircle(double radius){return PI*radius*radius;}} #endif // CIR_H#include <iostream> …

使用 Java 反射動態加載和操作類

Java 的反射機制(Reflection)是 Java 語言的一大特色,它允許程序在運行時檢查、加載和操作類、方法、字段等元信息。通過 java.lang.Class 和 java.lang.reflect 包,開發者可以動態加載類、創建實例、調用方法,甚至在運行時構造新類。反射是 Java 靈活性的核心,廣泛應用于…

《 C++ 點滴漫談: 三十七 》左值?右值?完美轉發?C++ 引用的真相超乎你想象!

摘要 本文全面系統地講解了 C 中的引用機制&#xff0c;涵蓋左值引用、右值引用、引用折疊、完美轉發等核心概念&#xff0c;并深入探討其底層實現原理及工程實踐應用。通過詳細的示例與對比&#xff0c;讀者不僅能掌握引用的語法規則和使用技巧&#xff0c;還能理解引用在性能…

【AutoGen深度解析】下一代AI代理編程框架實戰指南

目錄 &#x1f31f; 前言&#x1f3d7;? 技術背景與價值&#x1f6a7; 當前技術痛點&#x1f6e0;? 解決方案概述&#x1f465; 目標讀者說明 &#x1f50d; 一、技術原理剖析&#x1f5bc;? 核心概念圖解&#x1f4a1; 核心作用講解?? 關鍵技術模塊說明&#x1f504; 技術…

Python-AI調用大模型 給出大模型人格案例

Python調用通義千問模擬原神雷電將軍口吻 最近在用AI編輯器寫AI對話 嘗試給AI對話增加人格 以下是使用阿里通義千問大模型模擬《原神》中雷電將軍(雷電影)口吻的代碼案例&#xff0c;包含典型的高傲威嚴、略帶古風的說話風格。 完整后端代碼示例 import dashscope from dash…

csdn博客打賞功能

CSDN_專業開發者社區_已接入DeepSeekR1滿血版 官網: 最右下角 耳機 就是客服 可以轉人工 開啟打賞功能如下: 1.因為博主本人不可以對本人賬號文章進行打賞&#xff0c;因此本人賬號打開文章詳情頁不顯示打賞按鈕。為了驗證賬號設置的打賞功能是否生效所以讓您使用無痕模式模…

【深度學習】目標檢測算法大全

目錄 一、R-CNN 1、R-CNN概述 2、R-CNN 模型總體流程 3、核心模塊詳解 &#xff08;1&#xff09;候選框生成&#xff08;Selective Search&#xff09; &#xff08;2&#xff09;深度特征提取與微調 2.1 特征提取 2.2 網絡微調&#xff08;Fine-tuning&#xff09; …