xtrabackup簡介

mysql的備份方式
 
 
1.mysqldump
效率比較低,備份和還原的速度都很慢,任何數據插入和更新操作都會被掛起
 
2.mysqlhotcopy
mysqlhotcopy 是專門針對myisam 數據表進行備份,備份的過程中,任何數據插入和更新操作都會被掛起
 
3.準備一臺從服務器,專門做備份(master-slave方式)
 
4.xtrabackup 是 percona 的一個開源項目,可熱備份innodb ,XtraDB,MyISAM(會鎖表)
 
Xtrabackup有兩個主要的工具:xtrabackup、innobackupex
xtrabackup隻能備份InnoDB和XtraDB兩種數據表,而不能備份MyISAM數據表
innobackupex-1.5.1則封裝瞭xtrabackup,是一個腳本封裝,所以能同時備份處理innodb和myisam,但在處理myisam時需要加一個讀鎖
 
相比之下 xtrabackup 備份比較靠譜
 
下載 xtrabackup-1.6-245.rhel5.x86_64.rpm
安裝 rpm -ivh  xtrabackup-1.6-245.rhel5.x86_64.rpm
 
備份(xtrabackup隻備份數據文件,並不備份數據表結構(.frm))
xtrabackup –defaults-file=/etc/my.cnf –backup –target-dir=/bak/
恢復(執行兩次) 
xtrabackup –defaults-file=/etc/my.cnf –prepare –target-dir=/bak/
xtrabackup –defaults-file=/etc/my.cnf –prepare –target-dir=/bak/
 
二、 增量備份
 
對比innobackupex和xtrabackup,innobackupex操作起來更方便,但是innobackupex會有短暫的鎖表.xtrabackup備份還有另一個重要特性:增量備份.
 
1. 全量備份
xtrabackup –defaults-file=/etc/my.cnf –backup –target-dir=/bak/
 
2. 增量備份
xtrabackup –defaults-file=/etc/my.cnf –backup –target-dir=/bak/ –incremental-basedir=/bak/increm/
 
在增量備份的目錄下,數據文件都是以.delta結尾的。增量備份隻備份上一次全量備份之後被修改過的page,所以增量備份一般隻暫用較少的空間。
 
3. 增量備份恢復
分別對全量、增量備份各做一次prepare操作。
xtrabackup –defaults-file=/etc/my.cnf –prepare –target-dir=/bak/
xtrabackup –prepare –target-dir=/bak/ –incremental-dir=/bak/increm/
 
/bak/下的數據文件就可以直接放到你的MySQL數據目錄下,恢復數據瞭。
 
一般的備份 比如不會換全新的環境 用xtrabackup 就可以瞭
 
在不停生產的情況下備份數據給slave
 
首先確保兩邊的/etc/my.cnf 文件裡邊都指定瞭datadir
 
接著備份數據:
innobackupex-1.5.1   –defaults-file=/etc/my.cnf –stream=tar  –user=root –password=**** –port=3306 –slave-info /bak | gzip>/bak/bak_mysql.tar.gz
 
將bak_mysql.tar.gz cp 到另一臺機器上
scp  /bak/bak_mysql.tar.gz  root@host:/home/bak_mysql.tar.gz
 
解壓bak_mysql.tar.gz到/bak
tar -ixvf mysqlbak.tar(一定要加i 參數  我也不知道為什麼)
 
恢復先 –apply-log  再 –copy-back
innobackupex-1.5.1 –defaults-file=/etc/my.cnf  –user=root  –password=XXXX –port=3306 –apply-log /bak
 
–copy-back這裡容易報錯
(innobackupex-1.5.1: Copying directory '/bak/tech_soft_drp_ywmy'
innobackupex-1.5.1: Copying directory '/bak/mysql'
mkdir: 無法創建目錄 “arb/mysql/mysql”: 文件已存在
innobackupex-1.5.1: Error: Failed to create directory 'arb/mysql/mysql' : 沒有那個文件或目錄 at /usr/bin/innobackupex-1.5.1 line 336.)
我也不知道咋整。好像是官方1bug 見https://bugs.launchpad.net/percona-xtrabackup/+bug/737569
 
我看瞭看/bak目錄  決定把mysql  test 等自帶的一些庫直接rm 瞭。執行已下命令成功
 
innobackupex-1.5.1  –defaults-file=/etc/my.cnf  –user=root  –password=XXXX –port=3306  –copy-back /bak
 
重啟數據庫服務又有問題
(110719 19:30:16 mysqld_safe Starting mysqld daemon with databases from arb/mysql
110719 19:30:16 [Note] Plugin 'FEDERATED' is disabled.
110719 19:30:16 InnoDB: The InnoDB memory heap is disabled
110719 19:30:16 InnoDB: Mutexes and rw_locks use GCC atomic builtins
110719 19:30:16 InnoDB: Compressed tables use zlib 1.2.3
110719 19:30:16 InnoDB: Using Linux native AIO
110719 19:30:16 InnoDB: Initializing buffer pool, size = 2.0G
110719 19:30:16 InnoDB: Completed initialization of buffer pool
110719 19:30:16  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ib_logfile0
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
110719 19:30:16 mysqld_safe mysqld from pid file arb/mysql/r410.pid ended)
 
 
不知道啥情況。網上搜搜好像是權限問題 直接將mysql 目錄 chmod 777 -R mysql 重啟服務好瞭
 
菩薩保佑 問題好瞭
 
將my.cnf 配置成server-id=2  主從配置在這裡不多提瞭
CHANGE MASTER TO MASTER_HOST='xxxx',MASTER_USER='xx',MASTER_PASSWORD='xxx',MASTER_LOG_FILE='mysql-bin.000047',MASTER_LOG_POS=43446639
 
MASTER_LOG_FILE這個值去/bak 下面的 xtrabackup_binlog_info 找
 
大功告成
 
省瞭以前通宵用mysqldump 來同步數據再做主從同步
 
這東東是個神器

You May Also Like