【MySQL備份】Percona XtraBackup全量備份實戰篇

目錄

1. 前言

2.準備工作

2.1.環境信息

2.2.創建備份目錄

2.3.配置/etc/my.cnf文件

2.4.授予root用戶BACKUP_ADMIN權限

3.全量備份

4.準備備份?

5.數據恢復?

6.總結


"實戰演練:利用Percona XtraBackup執行MySQL全量備份操作詳解"

1. 前言

本文將繼續上篇【MySQL備份】Percona XtraBackup基礎篇中對Percona XtraBackup的探索,深化討論其全量備份技術及詳盡的恢復策略。本章節旨在構建一套完備的備份恢復指南,進一步鞏固您的數據庫安全防線,確保數據資產的萬無一失。

在本篇內容中,我們將細致剖析Percona XtraBackup執行全量備份的高效實踐,這一核心功能不僅能夠實時捕捉數據庫狀態的完整映像,還依托其先進的日志處理機制,保證備份數據的絕對一致性和可靠性。您將學習到如何運用簡潔明了的命令行指令,安全無礙地將數據庫快照存置于指定位置,為數據保護筑起第一道堅固壁壘。

緊接著,文章將引領您步入數據恢復的精密藝術殿堂。從備份到恢復的無縫對接,是檢驗備份方案成色的真正試金石。我們將逐步拆解恢復流程的每一個關鍵環節:從安全停機、數據遷移與權限配置,到細膩的預處理步驟,直至數據庫服務的順利重啟與健康狀況的全面核查。每一步都精心設計,確保在面對不可預見的數據危機時,能夠迅速恢復業務運營,維持數據連續性和服務穩定性。

通過本篇的深度解析,您不僅能掌握Percona XtraBackup全量備份的精髓,更能領略其在數據恢復領域的獨到之處,為您的數據庫管理技能樹增添一份堅實保障。無論是對初學者的啟蒙,還是對資深DBA的技能進階,本篇章節均是不可或缺的知識寶典。

2.準備工作

2.1.環境信息

主機IP操作系統Mysql版本XtraBackup版本
172.17.0.2CentOS Stream release 98.0.378.0.35

2.2.創建備份目錄

mkdir -p /data/backup

2.3.配置/etc/my.cnf文件

[xtrabackup]
host=localhost
port=3306
user=root
password=123456
socket=/var/lib/mysql/mysql.sock
target_dir=/data/backup

2.4.授予root用戶BACKUP_ADMIN權限

grant BACKUP_ADMIN on *.* to 'root'@'%'

LOCK INSTANCE FOR BACKUP 是MySQL 8.0引入的一種新的備份相關SQL語句,主要用于在進行數據庫備份時,以一種更為細粒度和高效的方式控制對數據庫實例的訪問,以保證備份的一致性。這個命令的工作原理及特點如下:

目的:在執行備份操作時,此命令用于獲取一個實例級別的鎖,該鎖允許在備份過程中繼續執行DML(數據操作語言,如INSERT、UPDATE、DELETE)操作,同時防止那些可能導致數據快照不一致的DDL(數據定義語言,如CREATE、ALTER、DROP)操作和某些管理操作。這樣可以在不影響數據庫服務的情況下進行備份,特別適用于需要最小化服務中斷的在線備份場景。

權限需求:執行LOCK INSTANCE FOR BACKUP語句需要用戶具備BACKUP_ADMIN權限。這是一個專門為了備份相關的高級操作而設計的權限級別。

兼容性:此特性是在MySQL 8.0及以上版本中引入的,早于8.0的MySQL版本并不支持這一語句,因此在使用舊版本時,可能需要依賴其他機制(如FLUSH TABLES WITH READ LOCK)來確保備份的一致性。

解鎖:執行備份后,需要使用UNLOCK INSTANCE語句來釋放之前由LOCK INSTANCE FOR BACKUP獲得的鎖,從而恢復正常操作。

與傳統備份命令的對比:相比于傳統的備份方法,如使用FLUSH TABLES WITH READ LOCK,LOCK INSTANCE FOR BACKUP提供了更小的性能影響,因為它不會完全阻止寫操作,只是限制了可能引起數據不一致的活動,更適合于高可用性和高性能要求的生產環境。

3.全量備份

登陸數據庫查看現有的的數據,可以看到現在有一個tes1的庫

進行全量備份,最后看到 completed OK!代表成功

xtrabackup --backup --target-dir=/data/backup --datadir=/var/lib/mysql --user=root --password=123456 --host=172.17.0.2  --port=3306

在/data/backup目錄下可以看到備份的數據

登陸數據庫刪除tes1庫

4.準備備份?

使用Percona XtraBackup進行全量備份后,在某些特定場景下確實可以直接使用備份數據,但這并不意味著不需要準備備份(prepare step)。備份準備是確保數據一致性的一個重要步驟,尤其是在進行數據恢復操作之前。具體是否需要準備備份取決于你的備份目的和后續操作:

  1. 立即恢復: 如果你計劃立即在相同或類似的MySQL環境中恢復這個備份,你應該執行備份準備步驟。這一步驟會應用未完成的事務日志(redo log),確保備份數據的一致性,并將數據文件轉換成可以直接用于啟動MySQL服務的狀態。

    xtrabackup --prepare --target-dir=<備份目錄>
  2. 備份存檔或復制: 如果你只是想創建一個備份副本用于存檔或者復制到其他服務器上,理論上可以在不進行準備的情況下直接復制備份目錄。但請注意,未經準備的備份在恢復時仍需經過準備步驟才能使用。

  3. 增量備份基礎: 如果計劃在這個全量備份的基礎上執行增量備份,也不需要立即準備這個全量備份。增量備份會記錄自上次備份以來的變化,因此全量備份保持原樣即可。

總結來說,盡管在某些情況下全量備份后直接存檔或作為增量備份基礎可以不立即執行準備步驟,但在準備將數據用于恢復或確保數據一致性時,備份準備是必不可少的。最佳實踐中,建議在備份流程中包括準備步驟,以確保備份數據隨時可用于快速且可靠地恢復。

5.數據恢復?

停止MySQL服務進行恢復數據

systemctl stop mysqld
rsync -avrP /data/backup/ /var/lib/mysql/

恢復數據時,一定要記得更改數據目錄下的文件擁有者以及所屬組權限,否則mysql無法啟動

chown -R mysql:mysql /var/lib/mysql

重啟數據庫查看數據是否恢復,可以看到之前被刪除的tes1數據庫已經成功恢復

6.總結

需要注意的是,在執行恢復之前需要關閉MySQL服務器。您不能恢復到正在運行的mysqld實例的數據目錄(導入部分備份時除外)。由于文件的屬性將被保留,在大多數情況下,您需要mysql在啟動數據庫服務器之前將文件的屬主和屬組更改為mysql.mysql。

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

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

相關文章

《廖雪峰Java教程》——面向對象基礎(1)

參考資料&#xff1a; 面向對象基礎 - 廖雪峰的官方網站 (liaoxuefeng.com) 方法 Java 的方法允許定義可變參數&#xff1a; class Group {private String[] names;public void setNames(String... names) {this.names names;} }用可變參數代替數組類型的好處有&#xff1…

Java服務器代碼遠程調試(IDEA版)

Java服務器代碼遠程調試 配置啟動腳本參數配置IDEA遠程調試工具操作步驟 注意&#xff1a;遠程調試的代碼需要與本地代碼一致&#xff0c;遠程調試目的是解決本地環境無法支持調試的情況下&#xff0c;解決線上&#xff08;測試&#xff09;環境調試問題。 配置啟動腳本參數 n…

如何壓縮視頻大小,怎么壓縮視頻

在數字化浪潮中&#xff0c;視頻已成為我們生活和工作的重要部分。但視頻往往伴隨著大文件體積&#xff0c;這給存儲和分享帶來了不少困擾。本文將為您揭秘好用的壓縮視頻的方法&#xff0c;幫助您輕松減小視頻文件大小&#xff0c;提高分享效率&#xff01; 方法&#xff0c;使…

C++——模擬戰爭游戲

以下是一個使用C編寫的簡單模擬戰爭游戲的示例代碼&#xff1a; #include <iostream> #include <vector> #include <random>// 聲明一個簡單的戰士類 class Warrior { public:Warrior(int attackPower) : m_attackPower(attackPower) {}int getAttackPower(…

spring boot 整合 sentinel

注意版本問題 我這是jdk11 、spring boot 2.7.15 、 alibaba-sentinel 2.1.2.RELEASE <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.15</version><…

[圖解]SysML和EA建模住宅安全系統-05-參數圖

1 00:00:01,140 --> 00:00:03,060 這是實數沒錯&#xff0c;這是分鐘 2 00:00:03,750 --> 00:00:07,490 但是你在這里選&#xff0c;選不了的 3 00:00:07,500 --> 00:00:09,930 因為它這里不能夠有那個 4 00:00:11,990 --> 00:00:13,850 但是我們前面這里 5 00…

vue長列表,虛擬滾動

1.新建子組件&#xff0c;將數據傳遞過去(幾萬條數據的數組&#xff0c;一次性展示多少條&#xff0c;每條數據的行高). <template><div class"vitualScroll"><sub-scroll :dataList"dataList" :rowCount"20" :rowHeight"2…

[JavaScript]“復雜”的 this

【版權聲明】未經博主同意&#xff0c;謝絕轉載&#xff01;&#xff08;請尊重原創&#xff0c;博主保留追究權&#xff09; https://blog.csdn.net/m0_69908381/article/details/140092319 出自【進步*于辰的博客】 參考筆記二&#xff0c;P6.1&#xff1b;筆記三&#xff0c…

【鏈表】- 兩數相加

1. 對應力扣題目連接 兩數相加 2. 實現案例代碼 public class AddingTwoNumbers {public static void main(String[] args) {// 示例用例 1ListNode l1 new ListNode(2);l1.next new ListNode(4);l1.next.next new ListNode(5);ListNode l2 new ListNode(5);l2.next ne…

【Python爬蟲】Python爬取喜馬拉雅,爬蟲教程!

一、思路設計 &#xff08;1&#xff09;分析網頁 在喜馬拉雅主頁找到自己想要的音頻&#xff0c;得到目標URL&#xff1a;https://www.ximalaya.com/qinggan/321787/ 通過分析頁面的網絡抓包&#xff0c;最終的到一個比較有用的json數據包 通過分析&#xff0c;得到了發送json…

docker部署前端,配置域名和ssl

之前使用80端口部署前端項目后&#xff0c;可以使用IP端口號在公網訪問到部署的項目。 進行ICP域名備案后&#xff0c;可以通過域名解析將IP套殼&#xff0c;訪問域名直接訪問到部署的項目~ 如果使用http協議可以很容易實現這個需求&#xff0c;對nginx.conf文件進行修改&#…

Spring Boot集成DeepLearning4j實現圖片數字識別

1.什么是DeepLearning4j&#xff1f; DeepLearning4J&#xff08;DL4J&#xff09;是一套基于Java語言的神經網絡工具包&#xff0c;可以構建、定型和部署神經網絡。DL4J與Hadoop和Spark集成&#xff0c;支持分布式CPU和GPU&#xff0c;為商業環境&#xff08;而非研究工具目的…

《昇思25天學習打卡營第28天 | 昇思MindSporeVision Transformer圖像分類》

第28天 本節學習了Vision Transformer圖像分類 ViT則是自然語言處理和計算機視覺兩個領域的融合結晶。在不依賴卷積操作的情況下&#xff0c;依然可以在圖像分類任務上達到很好的效果。ViT模型的主體結構是基于Transformer模型的Encoder部分&#xff08;部分結構順序有調整&a…

Mojo: AI開發的革命性編程語言

------------->更多內容&#xff0c;請移步“魯班秘笈”&#xff01;&#xff01;<------------- 剛剛Mojo和HuggingFace一樣發布新版本&#xff0c;此版本編號為24.4&#xff0c;包括幾個核心語言和標準庫增強功能。此版本最大的亮點之一是收到了來自18個社區貢獻者的21…

redis布隆過濾器原理及應用場景

目錄 原理 應用場景 優點 缺點 布隆過濾器&#xff08;Bloom Filter&#xff09;是一種空間效率很高的隨機數據結構&#xff0c;它利用位數組和哈希函數來判斷一個元素是否存在于集合中。 原理 數據結構&#xff1a; 位數組&#xff1a;一個由0和1組成的數組&#xff0c;初始…

【AI應用探討】—膠囊神經網絡(GNN)應用場景

目錄 一、圖像識別與分類 二、目標檢測與跟蹤 三、自然語言處理 四、其他應用場景 一、圖像識別與分類 多層次特征捕捉 膠囊網絡通過其獨特的膠囊結構和動態路由算法&#xff0c;能夠捕捉圖像中的多層次特征。每個膠囊不僅輸出激活強度&#xff0c;還輸出一個多維向量&…

Docker Desktop安裝mysql

安裝 Docker Desktop 1、訪問 Docker Desktop 官方下載地址&#xff1a;https://www.docker.com/products/docker-desktop/ &#xff0c; 選擇對應平臺的 Docker Desktop 安裝包點擊下載&#xff1a; 2、下載成功后&#xff0c;雙擊開始安裝&#xff1a; 3、安裝之前的相關配…

產品經理-對產品經理的認識(1)

今天跟大家聊一下產品經理這個崗位的,產品經理是互聯網崗位當中比較火的一個崗位,也是最接近CEO的崗位 產品經理崗位&#xff0c;技術門檻低&#xff0c;薪水和前景都很不錯&#xff0c;又處于團隊的核心位置 產品經理崗位沒有完全相關的專業設置和清晰的學習路徑&#xff0c;絕…

Spring Boot中實現多數據源配置

Spring Boot中實現多數據源配置 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01;今天我們將探討如何在Spring Boot應用中實現多數據源配置&#xff0c;以應對復雜…

java框架的落地實踐案例:大數據平臺設計與實現

使用 java 框架設計和實現大數據平臺可為企業提供數據處理和分析解決方案&#xff0c;使之能夠做出數據驅動的決策。系統采用微服務架構&#xff0c;分解數據處理任務為松散耦合組件&#xff0c;構建于 spring boot 等 java 框架之上。數據采集通過kafka 進行&#xff0c;數據清…