天天看點

Xtrabackup備份mysql大資料庫(完整備份與增量備份)

Xtrabackup簡介

Percona XtraBackup是開源免費的MySQL資料庫熱備份軟體,它能對InnoDB和XtraDB存儲引擎的資料庫非阻塞地備份(對于MyISAM的備份同樣需要加表鎖)。XtraBackup支援所有的Percona Server、MySQL、MariaDB和Drizzle。

XtraBackup優勢 :

1、無需停止資料庫進行InnoDB熱備

2、增量備份MySQL

3、流壓縮到傳輸到其它伺服器

4、能比較容易地建立主從同步

5、備份MySQL時不會增大伺服器負載

Xtrabackup安裝

這裡隻介紹Ubuntu-12.04下的安裝方法,其它系統的安裝方法請參考http://www.percona.com/doc/percona-xtrabackup/2.1/installation.html

  1. apt-key adv --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A

在/etc/apt/sources.list加入:

  1. deb http://repo.percona.com/apt precise main
  2. deb-src http://repo.percona.com/apt precise main

執行update及安裝操作

  1. apt-get update
  2. apt-get install percona-xtrabackup

注:precise是Ubuntu-12.04的版本代号,如果是其它系統版本,需要更換。

Xtrabackup工具介紹

安裝XtraBackup後,其實會有幾個工具:

innobackupex:

這個是其實是下面三個工具的一個perl腳本封裝,可以備份MyISAM, InnoDB, XtraDB表。

xtrabackup:

一個由C編譯而來的二進制檔案,隻能備份InnoDB和XtraDB資料。

xbcrypt:

用來加密或解密備份的資料。

xbstream:

用來解壓或壓縮xbstream格式的壓縮檔案。

建議使用perl封裝的innobackupex來作資料庫備份,因為比較容易使用。是以下面隻介紹innobackupex的使用。其它的使用參考:http://www.percona.com/doc/percona-xtrabackup/2.1/manual.html

innobackupex使用方法

完整的選項使用請執行innobackupex --help,這裡隻介紹使用常用的選項進行完整備份及增量備份和還原。

完整備份及還原

假如我們要備份centos和mysql資料庫。

備份:

  1. innobackupex --user=root --password=root --defaults-file=/etc/mysql/my.cnf --include="centos.*|mysql.*"    /data/mysql_backup

這樣就會在/data/mysql_backup生成一個帶時間的目錄,如果不需要帶時間,可以使用選項--no-timestamp。

如果想備份成壓縮檔案,可以使用如下語句:

  1. innobackupex --user=root --password=root --defaults-file=/etc/mysql/my.cnf --include="centos.*|mysql.*" --no-timestamp --stream=tar ./ | gzip - > www.centos.bz.tar.gz

還原:

假如完整備份的路徑為/data/mysql_backup/full_backup,如果完整備份是壓縮檔案,需要先解壓再還原。

  1. innobackupex --apply-log  /data/mysql_backup/centos_full_backup
  2. innobackupex --copy-back --defaults-file=/etc/mysql/my.cnf /data/mysql_backup/centos_full_backup
  3. chown -R mysql:mysql /var/lib/mysql

增量備份及還原

增量備份是建立在完整備份的基礎上的,是以首先確定已經完整備份了一次。

完整備份:

  1. innobackupex --user=root --password=root --include="centos.*"  --no-timestamp /data/mysql_backup/centos_full_backup

現在完整備份的目錄為/data/mysql_backup/centos_full_backup。

增量備份:

第一次增量備份:

  1. innobackupex --incremental /data/mysql_backup/inc/20130906 --no-timestamp --incremental-basedir=/data/mysql_backup/centos_full_backup --user=root --password=root --defaults-file=/etc/mysql/my.cnf

第二次增量備份:

  1. innobackupex --incremental /data/mysql_backup/inc/20130907 --no-timestamp --incremental-basedir=/data/mysql_backup/inc/20130906 --user=root --password=root --defaults-file=/etc/mysql/my.cnf

選項--incremental是指定作增量備份 --incremental-basedir選項是指定上一次增量備份的目錄(如果是第一次作增量備份,則為完整備份的目錄)。

增量備份的還原操作跟完整的還原有點不一樣,首先必須使用--apply-log --redo-only對完整備份的目錄及所有增量備份目錄進行操作,然後就可以像還原完整備份時的操作了。

對每個備份目錄作apply-log redo-only操作(包括完整備份)

  1. innobackupex --apply-log --redo-only /data/mysql_backup/centos_full_backup  --user=root --password=root
  2. innobackupex --apply-log --redo-only /data/mysql_backup/centos_full_backup  --incremental-dir=/data/mysql_backup/inc/20130906 --user=root --password=root
  3. innobackupex --apply-log --redo-only /data/mysql_backup/centos_full_backup  --incremental-dir=/data/mysql_backup/inc/20130907 --user=root --password=root

下面就跟還原完整備份時一樣了:

繼續閱讀