天天看點

mysql innobackupex_mysql熱備工具innobackupex和xtrabackup

mysql當然可以使用它本身的雙機熱備,但隻有一台伺服器就不能使用雙機熱備,這裡說一下熱備工具Xtrabackup

xtrabackup 是 percona 的一個開源項目,可以熱備份innodb ,XtraDB,和MyISAM(會鎖表)

1、工具安裝

将檔案解壓後,目錄裡安裝上兩個有用的工具:xtrabackup,innobackupex-1.5.1:

xtrabackup可以在不加鎖的情況下備份innodb資料表,不過此工具不能操作myisam。

innobackupex-1.5.1是一個腳本封裝,能同時處理innodb和myisam,但在處理myisam時需要加一個讀鎖。

按如上的介紹,由于操作myisam時需要加讀鎖,這會堵塞線上服務的寫操作,而innodb沒有這樣的限制,是以資料庫中innodb表類型所占的比例越大,則越有利。實際應用中一般是直接使用innobackupex-1.5.1方法,它主要有三種操作方式,按手冊中的介紹:

Usage:

innobackup [--sleep=MS] [--compress[=LEVEL]] [--include=REGEXP] [--user=NAME]

[--password=WORD] [--port=PORT] [--socket=SOCKET] [--no-timestamp]

[--ibbackup=IBBACKUP-BINARY] [--slave-info] [--stream=tar]

[--defaults-file=MY.CNF]

[--databases=LIST] [--remote-host=HOSTNAME] BACKUP-ROOT-DIR

innobackup --apply-log [--use-memory=MB] [--uncompress] [--defaults-file=MY.CNF]

[--ibbackup=IBBACKUP-BINARY] BACKUP-DIR

innobackup --copy-back [--defaults-file=MY.CNF] BACKUP-DIR

(1)第一個指令行是熱備份mysql資料庫。

(2)帶有--apply-log選項的指令是準備在一個備份上啟動mysql服務。

(3)帶有--copy-back選項的指令從備份目錄拷貝資料,索引,日志到my.cnf檔案裡規定的初始位置。

下面說一下備份和恢複指令

2、備份資料庫

1.普通備份:

innobackupex-1.5.1 [--defaults-file=/etc/my.cnf] --user=root [--host=192.168.1.52] [--password=xxx] [--port=3306] /data/back_data/

例如我們把資料庫備份到/home/mysql/back中

export PATH=$PATH:/home/xtrabackup-1.5/bin

/home/xtrabackup-1.5/bin/innobackupex-1.5.1 --user=mysql--password=mysql /home/mysql/back

這裡需要注意一點,使用指令前,先要設定環境變量

3、恢複資料庫

首先停掉資料庫,然後删除資料庫目錄下的所有資料庫檔案.

service mysql stop

cd /data/mysql_data

rm -rf * # 删除資料目錄裡的所有檔案

/opt/gjnp/xtrabackup-1.5/bin/innobackupex-1.5.1 --copy-back /home/mysql/back/backfile-dir

預設innobackupex-1.5.1會将二進制日志資訊存放在檔案xtrabackup_binlog_info中發(友善做Slave)。

cd /data

chown -R mysql:mysql mysql_data/

service mysql start