xtrabackup部署以及使用

来源:https://www.cnblogs.com/wenBlog/archive/2018/11/15/9961891.html
-Advertisement-
Play Games

簡介 備份mysql資料庫一直是一個比較噁心的工作,主要就是備份的資料庫比較大實在是慢。最近開始使用xtrabackup來備份資料庫,速度上快了很多,尤其還原速度要快的多。下麵我將從安裝開始簡要介紹一下如何使用xtrabackup來備份資料庫。 定義:xtrabackup工具是percona公司用p ...


簡介

  備份mysql資料庫一直是一個比較噁心的工作,主要就是備份的資料庫比較大實在是慢。最近開始使用xtrabackup來備份資料庫,速度上快了很多,尤其還原速度要快的多。下麵我將從安裝開始簡要介紹一下如何使用xtrabackup來備份資料庫。

定義:xtrabackup工具是percona公司用perl語言開發的線上物理熱備份工具,由於是採取物理拷貝的方式來做的備份,所以速度非常快,幾十G數據也才幾分鐘就搞定了,而它巧妙的利用了mysql特性做到了線上熱備份,不用像以前做物理備份那樣關閉資料庫才行,直接線上就能完成整庫或者是部分庫的全量備份和增量備份.

優點:

(1)備份過程快速、可靠

(2)備份過程不會打斷正在執行的事務

(3)能夠基於壓縮等功能節約磁碟空間和流量

(4)自動實現備份檢驗

(5)還原速度快
Xtrabackup有兩個主要的工具:xtrabackup、innobackupex
(1)xtrabackup只能備份InnoDB和XtraDB兩種引擎的數據表。
(2)innobackupex備份innodb和myisam兩種引擎,但是myisam數據目前不支持增量。理論上就是再xtrabackup基礎上封裝了備份myisam的功能。

安裝

  網上很多鐘方式,這裡我簡單一種(下載二進位安裝包)來部署。部署環境cetnos6.5,mysql5.7.24,xtrabackup版本為最新的2.4.9。直接解壓即可。

  1.   下載&解壓
    # wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/tarball/percona-xtrabackup-2.4.9-Linux-x86_64.tar.gz
    # tar -xf percona-xtrabackup-2.4.9-Linux-x86_64.tar.gz
  2.   添加path環境變數
    echo "export PATH=$PATH:/XXX/bin >> /etc/profile
  3.   source 生效即可使用。

 

 備份

備份主要分為兩種模式一種是tar模式一種是xbstream模式。

 其中xbstream模式可以不落盤直接發送到備份伺服器,當資料庫伺服器磁碟不足時是一種不錯的方式,當然速度稍慢。顧名思義,流模式由Percona XtraBackup支持,以特殊的tar或xbstream格式將備份發送到STDOUT,而不是將文件複製到備份目錄。這種模式允許使用其他程式來過濾備份的輸出,從而為備份的存儲提供更大的靈活性。例如,通過將輸出管道連接到壓縮實用程式來實現壓縮。流備份和使用Unix管道的好處之一是備份可以被自動加密。
innobackupex在子進程的日誌流模式下啟動xtrabackup,並將其日誌重定向到一個臨時文件。然後,它使用xbstream以特殊的xbstream格式將所有數據文件流到STDOUT(二進位)。在它將所有數據文件流化到STDOUT後,它將停止xtrabackup並將保存的日誌文件流化。下麵看一下實例代碼:

xbstream實例:

將完整備份直接存儲到一個文件中:

$ innobackupex --stream=xbstream /root/backup/ > /root/backup/backup.xbstream

流式壓縮備份:

$ innobackupex --stream=xbstream --compress /root/backup/ > /root/backup/backup.xbstream


解壓縮備份到/root/backup/目錄:

$ xbstream -x <  backup.xbstream -C /root/backup/


壓縮備份發送到另一臺主機並解壓:

$ innobackupex --compress --stream=xbstream /root/backup/ | ssh user@otherhost "xbstream -x -C /root/backup/"

 

tar實例:


將完整備份直接存儲到tar存檔中:

$ innobackupex --stream=tar /root/backup/ > /root/backup/out.tar


將tar存檔發送到另一個主機:

$ innobackupex --stream=tar ./ | ssh user@destination \ "cat - > /data/backups/backup.tar"

註意


要提取Percona XtraBackup的存檔,必須使用tar和-i選項:

$ tar -xizf backup.tar.gz


使用首選的壓縮工具進行壓縮:

$ innobackupex --stream=tar ./ | gzip - > backup.tar.gz
$ innobackupex --stream=tar ./ | bzip2 - > backup.tar.bz2

恢複數據

xtrabackup有一個xtrabackup --copy-back選項,可以將備份恢復到伺服器的datadir:

$ xtrabackup --copy-back --target-dir=/data/backups/

它會將所有與數據相關的文件複製回伺服器的datadir,由伺服器的my.cnf配置文件決定。
複製數據後應檢查文件許可權。你可能需要用類似的方法來調整它們:

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

復加密的備份

參數說明:

 1 --compress:該選項表示壓縮innodb數據文件的備份。
 2 --compress-threads:該選項表示並行壓縮worker線程的數量。
 3 --compress-chunk-size:該選項表示每個壓縮線程worker buffer的大小,單位是位元組,預設是64K。
 4 --encrypt:該選項表示通過ENCRYPTION_ALGORITHM的演算法加密innodb數據文件的備份,目前支持的演算法有ASE128,AES192,AES256。
 5 --encrypt-threads:該選項表示並行加密的worker線程數量。
 6 --encrypt-chunk-size:該選項表示每個加密線程worker buffer的大小,單位是位元組,預設是64K。
 7 --encrypt-key:該選項使用合適長度加密key,因為會記錄到命令行,所以不推薦使用。
 8 --encryption-key-file:該選項表示文件必須是一個簡單二進位或者文本文件,加密key可通過以下命令行命令生成:openssl rand -base64 24 9 --include:該選項表示使用正則表達式匹配表的名字[db.tb],要求為其指定匹配要備份的表的完整名稱,即databasename.tablename。
10 --user:該選項表示備份賬號。
11 --password:該選項表示備份的密碼。
12 --port:該選項表示備份資料庫的埠。
13 --host:該選項表示備份資料庫的地址。
14 --databases:該選項接受的參數為數據名,如果要指定多個資料庫,彼此間需要以空格隔開;如:"xtra_test dba_test",同時,在指定某資料庫時,也可以只指定其中的某張表。如:"mydatabase.mytable"。該選項對innodb引擎表無效,還是會備份所有innodb表。此外,此選項也可以接受一個文件為參數,文件中每一行為一個要備份的對象。
15 --tables-file:該選項表示指定含有表列表的文件,格式為database.table,該選項直接傳給--tables-file。
16 --socket:該選項表示mysql.sock所在位置,以便備份進程登錄mysql。
17 --no-timestamp:該選項可以表示不要創建一個時間戳目錄來存儲備份,指定到自己想要的備份文件夾。
18 --ibbackup:該選項指定了使用哪個xtrabackup二進位程式。IBBACKUP-BINARY是運行percona xtrabackup的命令。這個選項適用於xtrbackup二進位不在你是搜索和工作目錄,如果指定了該選項,innoabackupex自動決定用的二進位程式。
19 --slave-info:該選項表示對slave進行備份的時候使用,列印出master的名字和binlog pos,同樣將這些信息以change master的命令寫入xtrabackup_slave_info文件。可以通過基於這份備份啟動一個從庫。
20 --safe-slave-backup:該選項表示為保證一致性複製狀態,這個選項停止SQL線程並且等到show status中的slave_open_temp_tables為0的時候開始備份,如果沒有打開臨時表,bakcup會立刻開始,否則SQL線程啟動或者關閉知道沒有打開的臨時表。如果slave_open_temp_tables在--safe-slave-backup-timeount(預設300秒)秒之後不為0,從庫sql線程會在備份完成的時候重啟。
21 --rsync:該選項表示通過rsync工具優化本地傳輸,當指定這個選項,innobackupex使用rsync拷貝非Innodb文件而替換cp,當有很多DB和表的時候會快很多,不能--stream一起使用。
22 --kill-long-queries-timeout:該選項表示從開始執行FLUSH TABLES WITH READ LOCK到kill掉阻塞它的這些查詢之間等待的秒數。預設值為0,不會kill任何查詢,使用這個選項xtrabackup需要有Process和super許可權。
23 --kill-long-query-type:該選項表示kill的類型,預設是all,可選select。
24 --ftwrl-wait-threshold:該選項表示檢測到長查詢,單位是秒,表示長查詢的閾值。
25 --ftwrl-wait-query-type:該選項表示獲得全局鎖之前允許那種查詢完成,預設是ALL,可選update。
26 --galera-info:該選項表示生成了包含創建備份時候本地節點狀態的文件xtrabackup_galera_info文件,該選項只適用於備份PXC。
27 --stream:該選項表示流式備份的格式,backup完成之後以指定格式到STDOUT,目前只支持tar和xbstream。
28 --defaults-file:該選項指定了從哪個文件讀取MySQL配置,必須放在命令行第一個選項的位置。
29 --defaults-extra-file:該選項指定了在標準defaults-file之前從哪個額外的文件讀取MySQL配置,必須在命令行的第一個選項的位置。一般用於存備份用戶的用戶名和密碼的配置文件。
30 ----defaults-group:該選項表示從配置文件讀取的組,innobakcupex多個實例部署時使用。
31 --no-lock:該選項表示關閉FTWRL的表鎖,只有在所有表都是Innodb表並且不關心backup的binlog pos點,如果有任何DDL語句正在執行或者非InnoDB正在更新時(包括mysql庫下的表),都不應該使用這個選項,後果是導致備份數據不一致,如果考慮備份因為獲得鎖失敗,可以考慮--safe-slave-backup立刻停止複製線程。
32 --tmpdir:該選項表示指定--stream的時候,指定臨時文件存在哪裡,在streaming和拷貝到遠程server之前,事務日誌首先存在臨時文件里。在 使用參數stream=tar備份的時候,你的xtrabackup_logfile可能會臨時放在/tmp目錄下,如果你備份的時候併發寫入較大的話 xtrabackup_logfile可能會很大(5G+),很可能會撐滿你的/tmp目錄,可以通過參數--tmpdir指定目錄來解決這個問題。
33 --history:該選項表示percona server 的備份歷史記錄在percona_schema.xtrabackup_history表。
34 --incremental:該選項表示創建一個增量備份,需要指定--incremental-basedir。
35 --incremental-basedir:該選項表示接受了一個字元串參數指定含有full backup的目錄為增量備份的base目錄,與--incremental同時使用。
36 --incremental-dir:該選項表示增量備份的目錄。
37 --incremental-force-scan:該選項表示創建一份增量備份時,強制掃描所有增量備份中的數據頁。
38 --incremental-lsn:該選項表示指定增量備份的LSN,與--incremental選項一起使用。
39 --incremental-history-name:該選項表示存儲在PERCONA_SCHEMA.xtrabackup_history基於增量備份的歷史記錄的名字。Percona Xtrabackup搜索歷史表查找最近(innodb_to_lsn)成功備份並且將to_lsn值作為增量備份啟動出事lsn.與innobackupex--incremental-history-uuid互斥。如果沒有檢測到有效的lsn,xtrabackup會返回error。
40 --incremental-history-uuid:該選項表示存儲在percona_schema.xtrabackup_history基於增量備份的特定歷史記錄的UUID。
41 --close-files:該選項表示關閉不再訪問的文件句柄,當xtrabackup打開表空間通常並不關閉文件句柄目的是正確的處理DDL操作。如果表空間數量巨大,這是一種可以關閉不再訪問的文件句柄的方法。使用該選項有風險,會有產生不一致備份的可能。
42 --compact:該選項表示創建一份沒有輔助索引的緊湊的備份。
43 --throttle:該選項表示每秒IO操作的次數,只作用於bakcup階段有效。apply-log和--copy-back不生效不要一起用。

 

總結

   本篇簡單介紹了xtrabackup的部署和使用,當然還有很多地方比如增量備份還原以及各種參數的使用,將在以後進行深入說明。最後彙總一下 xtrabackup一些功能:

  • 在不暫停資料庫的情況下創建熱的InnoDB備份
  • 進行MySQL的增量備份
  • 將壓縮的MySQL備份傳輸到另一臺伺服器
  • 在MySQL伺服器之間移動表格
  • 輕鬆創建新的MySQL複製從站
  • 在不增加伺服器負載的情況下備份MySQL

 


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

-Advertisement-
Play Games
更多相關文章
  • ORACLE 預設用戶名密碼 創建數據表空間 創建臨時表空間 刪除用戶以及用戶所有的對象 刪除表空間 查看表空間使用情況 查看表空間是否具有自動擴展的能力 給表空間增加數據文件 新增數據文件,並且允許數據文件自動增長 允許已存在的數據文件自動增長 手工改變已存在數據文件的大小 查詢誤刪數據 Orac ...
  • 準備搭建一個Spring Boot 組合mybatis的項目,資料庫採用的是MySQL 8.0.11按照以往的配置,使用插件mybatis-generator-maven-plugin生成代碼時,一直報錯Could not create connection to database server.如 ...
  • 之前寫了一篇“MySQL慢查詢日誌總結“,總結了一些MySQL慢查詢日誌常用的相關知識,這裡總結一下在工作當中遇到關於MySQL慢查詢日誌的相關細節問題,有些是釋疑或自己有疑惑,自己測試驗證、解惑方面的知識。此篇只是總結個人的一些經驗,不足之處,敬請指正! 1: 為什麼在慢查詢日誌裡面出現Query... ...
  • 1 信息檢索概述 1.1 傳統檢索方式的缺點 • 文件檢索 操作系統常見的是硬碟文件檢索 文檔檢索:整個文檔打開時已經載入到記憶體了; 缺點:全盤遍歷,慢,記憶體的海量數據 • 資料庫檢索 like "%三星%" 全表遍歷; like "三星%" 最左特性 不會全表遍歷; 無法滿足海量數據下準確迅速的定 ...
  • 大數據已經成為時代發展的趨勢,很多人紛紛選擇學習大數據,想要進入大數據行業。大數據技術體系龐大,包括的知識較多,系統的學習大數據可以讓你全面掌握大數據技能。學習大數據需要掌握哪些知識?1、學習大數據首先要學習Java基礎怎樣進行大數據學習的快速入門?學大數據課程之前要先學習一種電腦編程語言。Jav ...
  • 歸檔文件過大,會導致資料庫出現異常,無法登陸。 1.D盤下新建一個delete_arch.txt文件 2.新建一個批處理文件deleArch.bat(把記事本的尾碼修改為.bat就行) 3.雙擊運行deleArch.bat就可以刪除歸檔日誌 4.可以把這個批處理添加到計劃任務中,定時執行(基本操作, ...
  • 現有資料庫使用字元集是GBK,做讀寫分離的時候,發現讀庫的資料庫安裝錯誤,使用了UTF8的字元集 需要把讀庫的字元集進行調整。 1.進入PLSQL查看下資料庫字元集 2.進入伺服器的命令行控制台,通過cmd進入 3.關閉資料庫 4.啟動資料庫掛載 5.使用資料庫追蹤 6.開啟限制會話模式 7. 8. ...
  • 什麼是二次排序 待排序的數據具有多個欄位,首先對第一個欄位排序,再對第一欄位相同的行按照第二欄位排序,第二次排序不破壞第一次排序的結果,這個過程就稱為二次排序 如何在mapreduce中實現二次排序 mapreduce的工作原理 MR的工作原理如下圖(如果看不清可右鍵新標簽頁查看): 圖片部分數據參 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...