Xtrabackup數據全備份與快速搭建從服務器

Percona Xtrabackup可以說是一個完美的數據備份工具。特別是當數據庫的容量達到了一定數量級的時候且存在單表達到幾十G的數據量, 很難容忍一些邏輯備份的漫長時間。如單個數據庫約200G,單表最大為120G,mysqldump邏輯備份的時間長達20多小時。除此之外,也不好驗證邏輯備份的可用性與數據的一致性。去年就層簡單使用過了Xtrabackup,但是一直沒有用于生成環境。最近的一個集群需要搭建一主多從,數量約130G,也不能影響主庫的正常工作,Xtrabackup作為了首選的備份工具。

1、Percona Xtrabackup的優點
1)可以快速可靠的完成數據備份(復制數據文件和追蹤事務日志)
2)數據備份過程中不會中斷事務的處理(熱備份)
3)節約磁盤空間和網絡帶寬
4)自動完成備份檢定
5)因更快的恢復時間而提高在線時間

2、備份原理
innobackupex在后臺線程不斷追蹤InnoDB的日志文件,然后復制InnoDB的數據文件。數據文件復制完成之后,日志的復制線程也會結束。這樣就得到了不在同一時間點的數據副本和開始備份以后的事務日志。完成上面的步驟之后,就可以使用InnoDB崩潰恢復代碼執行事務日志(redo log),以達到數據的一致性。
備份分為兩個過程:
1)backup,備份階段,追蹤事務日志和復制數據文件(物理備份)。
2)preparing,重放事務日志,使所有的數據處于同一個時間點,達到一致性狀態。

3、安裝支持包

yum install cmake gcc gcc-c++ -y
yum install automake autoconf -y
yum install bzr zlib-devel libgcrypt-devel -y
yum install libaio libaio-devel?? bison libtool ncurses-devel -y

4、編譯innobackupex
在percona-xtrabackup-2.1.7目錄下,執行./utils/build.sh

#./utils/build.sh
Build an xtrabackup binary against the specified InnoDB flavor.Usage: build.sh CODEBASE
where CODEBASE can be one of the following values or aliases:
innodb51???????? | plugin??????????????? build against InnoDB plugin in MySQL 5.1
innodb55???????? | 5.5?????????????????? build against InnoDB in MySQL 5.5
innodb56???????? | 5.6,xtradb56,???????? build against InnoDB in MySQL 5.6
| mariadb100,galera56
xtradb51???????? | xtradb,mariadb51????? build against Percona Server with XtraDB 5.1
| mariadb52,mariadb53
xtradb55???????? | galera55,mariadb55??? build against Percona Server with XtraDB 5.5

從上面可以看到不同版本mysql代碼庫的別名,選擇上面第一列的值就可以編譯生成對應版本的innobackupex備份工具。

我的使用的mysql5.5版本,那么執行./utils/build.sh innodb55。

注意編譯過程中出現的錯誤,大多情況下出錯是因為缺少支持的依賴包。編譯完成之后,生成以下幾個可執行文件,并復制到一個工作目錄中。

cp innobackupex /usr/local/bin/
cp src/xbcrypt? /usr/local/bin/
cp src/xbstream /usr/local/bin/
cp src/xtrabackup_innodb55 /usr/local/bin/#在使用innobackupex備份的過程提示找不到xtrabackup_55,需要把xtrabackup_innodb55重命名一下或者復制一份。(提示錯誤“xtrabackup_55: command not found”)
cp /usr/local/bin/xtrabackup_innodb55? /usr/local/bin/xtrabackup_55

5、innobackupex的參數選項

這里只簡單一些常用的命令選項

--help???? 查詢所有的命令選項,能夠快速地了解選項的功能。
--user???? 數據庫帳號
--password 數據庫帳號密碼
--host?? ??? 備份數據庫的IP或者主機名,TCP/IP連接--default-files 指定配置文件(必須作為第一個參數選項)
--no-timestamp? 備份文件時不會創建一個時間點名字目錄,直接存放到指定的目錄中,如2013-03-25_00-00-09。--apply-log?? ?備份后的文件不能只用用來恢復,數據并不完整,里面有未完成(提交或者回滾)的的事物。使用該選項可以撤銷(undone)未提交的事務,或者重放(replay)事務日志。--use-memory 默認值100M,通過使用更大的內存,加速preparing的過程。
--copy-back?? ? 把備份數據復制到數據目錄。數據目錄最好為一個空目錄,且有mysql用戶的讀寫權限。--compact 不備份二級索引數據頁。

6、備份操作過程
按照備份原理中步驟,操作分別如下。

1)backup,創建數據備份

innobackupex  --defaults-file=/etc/my_9306.cnf?? --user=root  --password='extension@123'  --host=127.0.0.1  --port=9306   /opt/xtrabackup/

2)preparing,undo撤銷未提交的事務,重放redo log

innobackupex  --defaults-file=/etc/my_9306.cnf?? --user=root   --password='extension@123'  --host=127.0.0.1  --port=9306   --apply-log /opt/xtrabackup/2014-03-05_10-09-06

7、搭建復制從服務器
1)關閉從服務器上的mysqld進程。把上面創建的一致性備份復制到從服務器上的,并mysql的數據目錄(比如data)和日志目錄(默認在data目錄中)備份。把這兩個目錄清空,mysql用戶對這兩個目錄有寫權限。
2)把備份目錄中的所有文件復制到數據目錄中,也可以在從上安裝Xtrabackup,使用–copy-back選項,把數據復制回數據目錄。
3)啟動mysqld,注意mysql的錯誤日志的輸出信息。
4)現在就可以開始啟動從服務器上的復制功能,主從的復制的功能就不多說了。mysql主上的備份時bin-log信息保存xtrabackup_binlog_info文件中,這個文件在備份目錄下面。

cat xtrabackup_binlog_info
mysql-bin.000023?? ?109899810

5)設置同步點

CHANGE MASTER TO MASTER_HOST='192.168.1.10',? MASTER_USER='replication', MASTER_PASSWORD='replication', MASTER_PORT=9306, MASTER_LOG_FILE='mysql-bin.000023',? MASTER_LOG_POS=109899810;

注意查看IO線程和SQL線程的狀態。

總結

Xtrabackup第一次用于生產上備份,120G的數據備份時間不到兩個小時。備份過程中服務器的負載沒有明顯的上升。備份的數據(包括索引數據)比原始的數據略大一點,當把備份數據庫復制到其他的服務器上或者異地機房時,需要很長的網絡傳輸時間或者很大的網絡帶寬資源。如果有專用的備份服務器,對于一些大表,可以刪除索引或者備份的過程中不備份索引數據。innobackupex使用–conpact選項,就可以不備份二級索引數據。另外可以通過innodb fast index creation來快速創建二級索引。對于大數據庫的備份,Percona Extrabackup是最佳的選擇。高數據一致、快速備份與恢復,值得擁有。

轉載于:https://www.cnblogs.com/wajika/p/6242055.html

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

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

相關文章

簡單的java方法_Java簡單實用方法一

整理以前的筆記,在學習Java時候,經常會用到一些方法。雖然簡單但是經常使用。因此做成筆記,方便以后查閱這篇博文先說明構造和使用這些方法。1,判斷String類型數據是否為空String類型的數據為空,主要為等于null或”“那么只要判斷…

Android應用程序開發

第一章 Android應用初體驗 1.1應用基礎 activity是Android SDK中Activity類的一個具體實例,負責管理用戶與信息屏的交互。 應用的功能是通過編寫一個個Activity子類來實現的。 布局定義了一系列用戶界面對象以及它們顯示在屏幕上的位置。組成布局的定義保存在XML文件…

phonegap

phonegap 框架詳解 轉自:http://www.cnblogs.com/hubcarl/p/4216844.html首先, 來看一下phonegap 初始化流程以及Native 與 JS 交互流程圖。 說明:socket server模式下, phonegap.js 源碼實現的采用1 毫秒執行一次XHR請求, 當Native JS 隊列里面有JS語…

j2ee核心模式_Operator和Sidecar正在成為軟件交付新模式

現如今的開發人員希望可以開發出具備彈性和可擴展的分布式系統。該系統受益于軟件復用和開源模型創新,針對安全性問題能夠輕易完成補丁更新并進行低風險的升級。該系統不可能通過帶有各種嵌入式語言庫的應用程序框架來實現。最近,一篇關于“多運行時微服…

微信JS-SDK選擇相冊或拍照并上傳PHP實現

理解:微信上傳接口是拍照,或者選擇本地照片,上傳到微信的服務器,獲取到一個id,通過token與這個id獲取到圖片,保存到服務器即可。 效果 通過微信js接口,調用底層程序。 需要引入js文件&#xff0…

JMS-ActiveMQ學習-3 ActiveMQ與Spring集成

Spring下開發消息的發送和接收程序 點對點模式 一、創建生產者項目 1.創建maven項目 2.添加spring-jms、jms規范、activemq依賴 <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms&…

看libevent所遇到的英語生詞

libevent – an event notification library The libevent API &#xff08;libevent應用程序&#xff09;provides a mechanism&#xff08;機制&#xff09; to execute&#xff08;執行&#xff09; a callback function&#xff08;回調函數&#xff09; when a specific&a…

java中迭代器要導包嗎_java 中迭代器的使用方法詳解

java 中迭代器的使用方法詳解前言&#xff1a;迭代器模式將一個集合給封裝起來&#xff0c;主要是為用戶提供了一種遍歷其內部元素的方式。迭代器模式有兩個優點&#xff1a;①提供給用戶一個遍歷的方式&#xff0c;而沒有暴露其內部實現細節&#xff1b;②把元素之間游走的責任…

android socket 長連接_TCP/IP,http,socket,長連接,短連接

點擊上方藍色字體&#xff0c;選擇“標星公眾號”優質文章&#xff0c;第一時間送達上一篇&#xff1a;這300G的Java資料是我師傅當年給我的&#xff0c;免費分享給大家下一篇&#xff1a;這200G的Java實戰資料是我師傅當年教我的第二招作者 | ksfzhaohui來源 | my.oschina.net…

二、Python安裝擴展庫

第一步:推薦easy_install工具 下載地址:https://pypi.python.org/pypi/setuptools 下載"ez_setup.py"文件; 通過運行cmd命令找到ez_setup.py文件所在目錄,通過命令[python ez_setup.py]執行安裝easy_install 安裝成功截圖 第二步:安裝擴展酷 例如安裝"suds"…

ORACLE 10.2.01升級10.2.05 for windows 詳細文檔

最近要做一個數據庫的升級工作&#xff0c;提前在自己的PC機上練習了一下&#xff0c;這種文檔在網上很多&#xff0c;但是大多都是使用命令編輯腳本&#xff0c;其實數據庫還有一個DBUA的升級工具可以使用&#xff0c;使升級工作方便了很多。 OS環境&#xff1a;windows XP 32…

php 導出mysql 結構_導出結構和數據(如phpmyadmin)

在這里,您可以找到一個全面的解決方案來轉儲MySQL結構和數據,比如在PMA中(不使用exec、passthru等):它是Dszymczuk項目的一個分支,有我的增強功能。用法很簡單//MySQL connection parameters$dbhost localhost;$dbuser dbuser;$dbpsw pass;$dbname dbname;//Connects to my…

tableViewCell的操作

在iOS的開發過程中&#xff0c;tableView的使用永遠都是最常用的控件。今天學習了一下tableViewCell的操作。代碼并不是很復雜&#xff0c;如果有OC開發經驗的人&#xff0c;應該很容易看懂的。 class ViewController: UIViewController ,UITableViewDelegate, UITableViewData…

stm32正交編碼器 原理圖_惡劣環境下應用的電感式增量編碼器和絕對編碼器

編碼器可分為兩種基本類型 - 增量編碼器和絕對編碼器。增量編碼器的顯著特征是它報告角度的變化。換句話說&#xff0c;當增量編碼器通電時&#xff0c;它不會報告其角位置&#xff0c;直到它具有測量的參考點。絕對編碼器明確地在比例或范圍內報告其位置。換句話說&#xff0c…

【SqlServer】Sqlserver中的DOS命令操作

輸入osql ?查看是否支持當前版本&#xff0c;如果是SQL Server 2005以上用Sqlcmd , 以下用Osql連接數據庫&#xff08;a&#xff09;Osql -S localhost -U username -P password(SQL Server身份驗證&#xff0c;需要用戶民和密碼)&#xff08;b&#xff09;Osql -S localhos…

微信小程序內訓筆記

2016年9月22日凌晨微信官方正式宣布“小程序”開始內測&#xff0c;有“微信之父”之稱、騰訊集團高級執行副總裁張小龍在2016年末對外宣布“小程序“應用將于2017年1月9日正式推出 這一次微信還是按照慣例&#xff0c;通過機器跑出的數據&#xff0c;首先將“小程序”開放給了…

python基礎代碼的含義_Python基礎學習篇

原標題&#xff1a;Python基礎學習篇 1、編碼 默認情況下&#xff0c;Python 3 源碼文件以 UTF-8 編碼&#xff0c;所有字符串都是unicode 字符串。 當然你也可以為源碼文件指定不同的編碼&#xff1a;# -*- coding: cp-1252 -*- 2、標識符 第一個字符必須是字母表中字母或下劃…

java面向對象super_【JavaSE】面向對象之super、final

一、super關鍵字它是一個指代變量&#xff0c;用于在子類中指代父類對象。1.作用指代父類對象區分子父類同名的成員變量&#xff0c;區分父類中成員變量和子類中同名的局部變量2.使用與this相同&#xff0c;調用父類成員變量和成員方法&#xff1a;super.xx super.xxx()調用父類…

Week_1_Physical Electronics and Semiconductors

Semiconductors Fundamentals Type of solids 轉載于:https://www.cnblogs.com/ronnielee/p/9579783.html

【Linux高頻命令專題(23)】tar

概述 通過SSH訪問服務器&#xff0c;難免會要用到壓縮&#xff0c;解壓縮&#xff0c;打包&#xff0c;解包等&#xff0c;這時候tar命令就是是必不可少的一個功能強大的工具。linux中最流行的tar是麻雀雖小&#xff0c;五臟俱全&#xff0c;功能強大。 tar命令可以為linux的文…