《Mysql應用利用Xtrabackup工具備份及恢復(MySQL DBA的必備工具)》要點:
本文介紹了Mysql應用利用Xtrabackup工具備份及恢復(MySQL DBA的必備工具),希望對您有用。如果有疑問,可以聯系我們。
MYSQL學習Xtrabackup------MySQL DBA的必備對象
MYSQL進修注意:
MYSQL進修1)文檔參照http://www.percona.com/docs/wiki/percona-xtrabackup:start
MYSQL進修2)mysql要使用5.1.50版本或以上.
MYSQL進修一、Xtrabackup簡介及安裝
MYSQL進修1、Xtrabackup ?是percona的一個開源項目,可以熱備份innodb ,XtraDB,和MyISAM(會鎖表),可以看做是InnoDB?Hotbackup的免費替代品.
MYSQL進修?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Percona Support for MySQL
Benefit | Silver (Per Server) |
Gold (Unlimited) |
Platinum (Unlimited) |
---|---|---|---|
Annual Price | $1,500/server | From $15,000 | From $30,000 |
Number of Servers Covered | Per-Server | Unlimited | Unlimited |
Number of Support Incidents | Unlimited | Unlimited | Unlimited |
Response Time?SLA | 60 Minutes | 30 Minutes | 30 Minutes |
Named Support Contact Persons | 5 | 10 | 20 |
Email, Web, & Chat Support | |||
Phone Support | |||
Login Support | |||
24×7 Support | |||
Fixes For Verified Bugs | ? | ||
Hot Bug Fixes | ? | ? | |
Onsite System Audit | ? | Option | |
Covers Old Server Versions | ? | ? | |
Covers Non-Standard Platforms | ? | ? | Option |
Covers Custom Code | ? | ? | Option ? |
MYSQL進修參考:http://www.percona.com/mysql-support/
MYSQL進修?
MYSQL學習先看看如何安裝Xtrabackup,最簡單的安裝方式是使用RPM包,不外想使用源代碼方式安裝的話,其安裝方式有點古怪,因為它采用的在MySQL源代碼上打補丁構建的方式安裝的.
MYSQL進修2、安裝:
MYSQL進修wget http://www.percona.com/downloads/XtraBackup/XtraBackup-1.4/Linux/binary/i686/
MYSQL進修tar zxf xtrabackup-1.4.tar.gz
MYSQL進修cd xtrabackup-1.4
MYSQL進修./configure
MYSQL進修make
MYSQL學習進行到這里時,千萬別make install,那樣就會接著安裝MySQL了,正確辦法是:
MYSQL進修cd innobase/xtrabackup/
MYSQL進修make
MYSQL進修make install
MYSQL進修安裝參照:http://www.percona.com/docs/wiki/percona-xtrabackup:installation:from-source
MYSQL學習3、如此一來,就會在/usr/bin目錄里安裝上兩個有用的對象:xtrabackup、innobackupex
MYSQL學習1)xtrabackup 只能備份InnoDB和XtraDB兩種數據表,支持在線熱備份,可以在不加鎖的情況下備份Innodb數據表,不外此工具不能操作Myisam引擎表
MYSQL學習2)innobackupex ?是一個腳本封裝,封裝了xtrabackup,能同時處理Innodb和Myisam,但在處理Myisam時必要加一個讀鎖.
MYSQL進修?
MYSQL學習按如上的介紹,由于操作Myisam時需要加讀鎖,這會堵塞線上服務的寫操作,而Innodb沒有這樣的限制,所以數據庫中Innodb表類型所占的比例越大,則越有利.實際應用中一般是直接使用innobackupex辦法,它主要有三種操作方式,按手冊中的介紹:
MYSQL進修Usage:
MYSQL進修innobackup [--sleep=MS] [--compress[=LEVEL]] [--include=REGEXP] [--user=NAME]
MYSQL進修?? ? ? ? ? [--password=WORD] [--port=PORT] [--socket=SOCKET] [--no-timestamp]
MYSQL進修?? ? ? ? ? [--ibbackup=IBBACKUP-BINARY] [--slave-info] [--stream=tar]
MYSQL進修?? ? ? ? ? [--defaults-file=MY.CNF]
MYSQL進修?? ? ? ? ? [--databases=LIST] [--remote-host=HOSTNAME] BACKUP-ROOT-DIR
MYSQL進修innobackup --apply-log [--use-memory=MB] [--uncompress] [--defaults-file=MY.CNF]
MYSQL進修?? ? ? ? ? [--ibbackup=IBBACKUP-BINARY] BACKUP-DIR
MYSQL進修innobackup --copy-back [--defaults-file=MY.CNF] BACKUP-DIR
MYSQL進修――――――――――――――――――――――――――――――――――
MYSQL學習第一個敕令行是熱備份mysql數據庫.
MYSQL學習帶有--apply-log選項的敕令是準備在一個備份上啟動mysql服務.
MYSQL學習帶有--copy-back選項的命令從備份目錄拷貝數據,索引,日志到my.cnf文件里規定的初始地位.
MYSQL進修Xtrabackup還可以用來moving InnoDB tables between servers,更多的內容可以參考官方文檔及例子.
MYSQL進修參考鏈接:
MYSQL進修1.官方文檔:http://www.percona.com/docs/wiki/percona-xtrabackup:xtrabackup_manual
MYSQL進修2.Xtrabackup online backup for InnoDB/XTraDB(pdf):
MYSQL進修http://www.percona.com/ppc2009/PPC2009_xtrabackup.pdf
MYSQL學習注:innobackupex會根據/et/my.cnf來確定MySQL的數據地位.
MYSQL學習1.通俗備份:
MYSQL進修innobackupex [--defaults-file=/etc/my.cnf] --user=root [--host=192.168.1.52] [--password=xxx] [--port=3306] ??/data/back_data/ ? ?2>/data/back_data/1.log
MYSQL學習備份的目錄是/data/back_data/,這里的2>/data/back_data/1.log,是將備份進程中的輸出信息重定向到1.log
MYSQL進修innobackupex-1.5.1 Cslave-info …..
MYSQL學習Cslave-info會記錄復制主日志的 復制點,便于重新做復制用.(用在備份從機械用)
MYSQL進修備份后的文件:
MYSQL學習xtrabackup_binlog_info ― 存放binlog的信息.(binlog必要另外拷貝備份,如果必要binlog的話)
MYSQL學習xtrabackup_checkpoints ― 寄存備份的起始位置和結束位置.
MYSQL學習規復:
MYSQL學習首先停失落數據庫,然后刪除數據庫目錄下的所有數據庫文件.
MYSQL進修cd /data/mysql_data
MYSQL學習rm -rf * # 刪除數據目次里的所有文件
MYSQL學習innobackupex-1.5.1 --user=root --apply-log /data/back_data/2010-10-26_16-09-37 # 利用日志
MYSQL進修innobackupex-1.5.1 --user=root --copy-back /data/back_data/2010-10-26_16-09-37
MYSQL學習默認innobackupex-1.5.1會將二進制日志信息存放在文件xtrabackup_binlog_info中發(便利做Slave).
MYSQL進修cd /data
MYSQL進修chown -R mysql:mysql mysql_data/
MYSQL進修重啟mysql服務
MYSQL進修2.打包(Tar)備份:
MYSQL進修innobackupex-1.5.1 --user=root [--password=xxx] --stream=tar /data/back_data/2/ 2>/data/back_data/2.log ??1>/data/back_data/2.tar
MYSQL進修還原:
MYSQL進修#cd /data/back_data/2/
MYSQL進修#tar ixvf 2.tar
MYSQL進修# ls
MYSQL進修2.tar backup-my.cnf ibdata1 ibdata2 mablevi mysql xtrabackup_binlog_info xtrabackup_checkpoints ?xtrabackup_logfile
MYSQL進修準備還原
MYSQL進修# innobackupex-1.5.1 --user=xxx [--password=xxx]--apply-log /data/back_data/
MYSQL進修……
MYSQL進修innobackupex: completed OK!
MYSQL學習刪除數據目次里的所有文件
MYSQL進修rm -rf /data/mysql_data/*
MYSQL進修拷貝:
MYSQL進修# innobackupex-1.5.1 --user=xxx [--password=xxx] --copy-back ?/data/back_data/
MYSQL進修……
MYSQL進修innobackupex: completed OK!
MYSQL進修cd /data
MYSQL進修chown -R mysql:mysql mysql_data/
MYSQL進修重啟mysql服務
MYSQL學習3. 緊縮(tar gzip)備份
MYSQL進修innobackupex-1.5.1 --user=root [--password=xxx] --stream=tar
MYSQL進修/data/back_data/2/ ?2>/data/back_data/2.log | gzip > /data/back_data/2.tar.gz
MYSQL學習這里使用了管道|將innobackupex-1.5.1作為gzip的標準輸入.恢復,只必要使用tar -izxvf 解壓對應的文件后,操作完全同普通備份.
MYSQL進修還原:
MYSQL學習使用tar Cizxvf 解壓對應的文件后,操作完全同通俗備份.
MYSQL進修#cd /data/back_data/2/
MYSQL進修#tar ixvf 2.tar
MYSQL進修# ls
MYSQL進修backup-my.cnf ibdata1 ibdata2 mablevi mysql xtrabackup_binlog_info xtrabackup_checkpoints ?xtrabackup_logfile
MYSQL進修準備還原:
MYSQL進修# innobackupex-1.5.1 --user=xxx [--password=xxx] --apply-log /data/back_data/2/
MYSQL進修……
MYSQL進修innobackupex: completed OK!
MYSQL學習刪除數據目次里的所有文件
MYSQL進修rm -rf /data/mysql_data/*
MYSQL進修# innobackupex-1.5.1 --user=xxx [--password=xxx] --copy-back ??/data/back_data/2/
MYSQL進修cd /data
MYSQL進修chown -R mysql:mysql mysql_data/
MYSQL進修重啟mysql服務
MYSQL進修―――――――――――――――――――――――――――――――――――――――
MYSQL學習xtrabackup 備份和規復
MYSQL進修備份:
MYSQL進修xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/back_data/
MYSQL學習規復:
MYSQL學習必要執行兩次xtrabackup Cprepare
MYSQL進修xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/data/back_data/
MYSQL進修xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/data/back_data/
MYSQL學習注意,xtrabackup只備份數據文件,并不備份數據表結構(.frm),所以使用xtrabackup恢復的時候,你必需有對應表結構文件(.frm).
MYSQL進修增量備份:
MYSQL進修1. 全量備份
MYSQL進修xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/back_data/
MYSQL進修2. 增量備份
MYSQL進修xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/back_data_inc/ --incremental-
MYSQL進修basedir=/data/back_data/
MYSQL學習在增量備份的目錄下,數據文件都是以.delta結尾的.增量備份只備份上一次全量備份后被改動過的page,所以增量備份只暫用較少的空間.增量備份可以在增量備份的基礎上增量.
MYSQL學習增量備份規復:
MYSQL學習我們必要分別對全量、增量備份各做一次prepare操作.
MYSQL進修xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/data/back_data/2010-10-26_16-09-37
MYSQL進修xtrabackup --prepare --target-dir=/data/back_data/2010-10-26_16-09-37--incremental-
MYSQL進修dir=/data/back_data_inc
MYSQL學習xtrabackup --prepare --target-dir=/data/back_data/ #這一步不是必需的
MYSQL學習這樣,/data/back_data/下的數據文件就可以直接放到你的MySQL數據目錄下,規復數據了.
MYSQL學習再次提醒,xtrabackup只備份InnoDB數據文件,表結構是不備份的,所以恢復的時候,你必需有對應表結構文件(.frm).
MYSQL進修rm -rf /data/mysql_data/ib*
MYSQL進修cp -i /data/back_data/2010-10-26_16-09-37/ib* /data/mysql_data/
MYSQL進修cd /data
MYSQL進修chown -R mysql:mysql mysql_data/
MYSQL學習2.innobackupex 與 xtrabackup 相聯合
MYSQL學習起首,innobackupex全備份:
MYSQL學習innobackupex??--user=root /data/back_data/ 2>/data/back_data/1.log #會生成一個光陰文件夾,這里假如是2010-10-29_15-57-44
MYSQL進修然后,xtrabackup 做增量備份:
MYSQL進修xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/back_data_inc/4 --incremental-basedir=/data/back_data/2010-10-29_15-57-44
MYSQL學習規復:
MYSQL學習首先停失落數據庫,備份二進制日志(如果有的話),然后刪除數據庫目錄下的所有數據庫文件.
MYSQL進修cd /data/mysql_data
MYSQL學習rm -rf * # 刪除數據目次里的所有文件
MYSQL學習規復全量備份:
MYSQL學習innobackupex??--user=root --apply-log /data/back_data/2010-10-29_15-57-44 # 利用日志
MYSQL進修innobackupex??--user=root --copy-back /data/back_data/2010-10-29_15-57-44 # 拷貝文件
MYSQL學習規復增量備份:
MYSQL進修xtrabackup --prepare --target-dir=/data/back_data/2010-10-29_15-57-44 --incremental-dir=/data/back_data_inc/5
MYSQL進修cd /data
MYSQL進修chown -R mysql:mysql mysql_data/
MYSQL進修重啟mysql服務.
維易PHP培訓學院每天發布《Mysql應用利用Xtrabackup工具備份及恢復(MySQL DBA的必備工具)》等實戰技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養人才。