xtrabackup 備份恢復測試過程

參考:html

http://blog.csdn.net/justdb/article/details/17054579# MySQL備份與恢復之percona-xtrabackup軟件的使用mysql

http://blog.csdn.net/justdb/article/details/17054667# MySQL備份與恢復之percona-xtrabackup實現增量備份及恢復sql

http://devliangel.blog.51cto.com/469347/1374232# 使用innobackupex在線增量備份及恢復mysql數據庫數據庫

http://www.percona.com/doc/percona-xtrabackup/2.2/# 官方使用手冊文檔app

http://blog.chinaunix.net/uid-20785090-id-4212816.html# xtraBackup備份原理剖析 ide

http://blog.csdn.net/tianlesoftware/article/details/7028733 # MySQL 數據文件 說明函數


xtrabackup 備份恢復測試過程測試


一、安裝ui

cd /data/softspa

wget http://www.percona.com/redir/downloads/XtraBackup/LATEST/binary/redhat/6/x86_64/percona-xtrabackup-2.2.6-5042.el6.x86_64.rpm


yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL


rpm -ivh percona-xtrabackup-2.2.6-5042.el6.x86_64.rpm


二、徹底備份及恢復


# mysql備份用戶受權

mysql> grant select,show view,Replication client,SUPER,RELOAD  on *.* to 'backup'@'127.0.0.1' identified by 'passwd';flush privileges;


徹底備份

innobackupex --host=127.0.0.1  --port=3306 --user=backup --password='passwd' --no-lock --defaults-file=/usr/local/services/mysql/etc/my.cnf --parallel=4   /data/backup     


徹底恢復

#檢查及準備備份完的數據 --use-memory 參數默認100M, 表示能夠給innobackupex使用的內存,越多越好

innobackupex --parallel=4 --use-memory=1G --apply-log  /data/backup/2014-11-18_15-52-40

#恢復

innobackupex  --defaults-file=/usr/local/services/mysql/etc/my.cnf   --parallel=4 --copy-back  /data/backup/2014-11-18_15-52-40

chown mysql:mysql /data/mysql_data -R

service mysql start


三、增量備份及恢復


#針對已經備份的目錄進行增量備份

innobackupex --host=127.0.0.1  --port=3306 --user=backup --password='passwd' --no-lock --defaults-file=/usr/local/services/mysql/etc/my.cnf  --incremental /data/backup/ --incremental-dir /data/backup/2014-11-18_15-52-40

#再次插入數據

# 再次增量備份

innobackupex --host=127.0.0.1  --port=3306 --user=backup --password='passwd' --no-lock --defaults-file=/usr/local/services/mysql/etc/my.cnf  --incremental /data/backup/ --incremental-dir /data/backup/2014-11-18_18-11-35

#再次插入數據

# 再次增量備份

innobackupex --host=127.0.0.1  --port=3306  --user=backup --password='passwd' --no-lock --defaults-file=/usr/local/services/mysql/etc/my.cnf  --incremental /data/backup/ --incremental-dir /data/backup/2014-11-18_18-14-56


#模擬數據丟失

service mysql stop

rm -rf /data/mysql_data/*


#三次增量備份數據合併到全備份中去

innobackupex  --apply-log --redo-only --incremental /data/backup/2014-11-18_15-52-40 --incremental-dir /data/backup/2014-11-18_18-11-35

innobackupex  --apply-log --redo-only --incremental /data/backup/2014-11-18_15-52-40 --incremental-dir /data/backup/2014-11-18_18-14-56

innobackupex  --apply-log --redo-only --incremental /data/backup/2014-11-18_15-52-40 --incremental-dir /data/backup/2014-11-18_18-17-07


#恢復整合後的全備數據

#檢查及準備備份完的數據

innobackupex --parallel=4 --use-memory=1G --apply-log  /data/backup/2014-11-18_15-52-40

#恢復

innobackupex   --defaults-file=/usr/local/services/mysql/etc/my.cnf   --parallel=4 --copy-back  /data/backup/2014-11-18_15-52-40

chown mysql:mysql /data/mysql_data -R

service mysql start


四、單數據庫備份及恢復


#指定數據庫備份

innobackupex --host=127.0.0.1  --port=3306  --user=backup --password='passwd' --no-lock --defaults-file=/usr/local/services/mysql/etc/my.cnf --parallel=4  --databases='test_backup5'  /data/backup     



#模擬表數據丟失

mysql > drop test_backup5 MyClass;

mysql > create table MyClass(  id int(4) not null primary key auto_increment,   name char(20) not null,  sex int(4) not null default '0',   degree double(16,2));

ALTER TABLE test_backup5.MyClass IMPORT TABLESPACE:


# 恢復指定庫表數據


#指定數據庫恢復檢查及導出表空間文件

innobackupex --apply-log --export /data/backup/2014-11-19_18-05-35

# 刪除表空間

mysql > use test_backup5;

mysql >  ALTER TABLE  test_backup5.MyClass DISCARD TABLESPACE;

#複製須要導入的表空間文件到相應數據庫目錄,複製MyClass.ibd 和 MyClass.cfg (mysql5.6之前的版本是.exp)

cp /data/backup/2014-11-19_18-05-35/test_backup5/{MyClass.ibd,MyCLass.cfg} /data/mysql_data/test_backup5

# 導入表空間

mysql > use test_backup5;

mysql >  ALTER TABLE  test_backup5.MyClass IMPORT TABLESPACE;


五、使用定製的xtrabackup備份及恢復腳本 + binlog備份恢復


爲簡化操做編寫了三個腳本,各腳本中有數據庫及備份目錄參數設置(附件有下載連接)

腳本列表說明:

#全數據庫備份腳本 用法: ./xtrabackup_backup.sh

xtrabackup_backup.sh

#全數據庫導入腳本 用法: ./xtrabackup_all_import.sh <BAK_IMPORT_DATETIME>

xtrabackup_all_import.sh 

#單數據庫導入腳本 用法: ./xtrabackup_import <BAK_IMPORT_DATETIME> <DBNAME>

xtrabackup_import.sh


#備份及恢復過程以下


# 徹底備份數據表結構,此處省略過程(注意,備份表結構需加-R(備份函數及存儲過程) --no-data(不備份數據))

# 徹底備份數據,使用備份腳本

sudo sh xtrabackup_backup.sh

# 備份目錄在爲

# innobackupex: Backup created in directory '/data/backup/2014-12-01_16-51-00'

# binlog信息在 xtrabackup_binlog_info 或 xtrabackup_info 中

# innobackupex: MySQL binlog position: filename 'mysql-bin.000006', position 191, GTID of the last change '7d481ded-790b-11e4-9d81-00e081e00029:1-178'



# Game數據庫,表cGameServerList 修改一條、添加一條數據、刪除一條數據 (三次修改數據,爲binlog恢復驗證作準備)

# 此處省略過程


# 刪除Game數據庫

drop database Game


# binlog日誌生成新文件

mysql -uroot -e "flush logs;"

# 查看binlog新日誌名稱

mysql -uroot -e "show binary logs;"|tail 


# 建立數據庫,並導入表結構

mysql -uroot -e "create database Game"

mysql -uroot Game < Game-nodata.sql

# 用xtrabackup 單庫恢復Game, 執行恢復腳本 ,輸入參數 恢復備份目錄及恢復數據庫 (注意:mysiam 引擎表或在現有的innodb表基礎上恢復,須要重啓mysql服務)

sudo sh  xtrabackup_import.sh 2014-12-01_16-51-00 Game


#檢查cGameServerList 表數據正常


# 經過binlog 恢復從定時備份到drop 數據庫前的數據

# 查看xtrabackup備份的binlog-info 備份時 MySQL binlog position: filename 'mysql-bin.000009', position 191

# 查看drop database Game 時 MySQL binlog position

sudo /usr/local/services/mysql/bin/mysqlbinlog --start-position=191  /data/mysql_data/mysql-bin.000006|grep -B 10 -i 'DROP DATABASE' 


#備份現有binlog

cp /data/mysql_data/mysql-bin* /data/mysqlbinlogbak/

#初始化binlog,清空現有的mysqlbinlog日誌,若是不執行這步,導入不了最後須要執行的binlog中的數據記錄

mysql -uroot -e "reset master"

#導入須要恢復的binlog(按備份的position 至drop 前的position 恢復),若是須要恢復多個mysql-bin 文件,執行多條下面命令

sudo /usr/local/services/mysql/bin/mysqlbinlog /data/mysqlbinlogbak/mysql-bin.000009 --start-position=191 --stop-position=2814 | mysql -uroot 


#再次檢查cGameServerList 表數據正常,發現此次數據爲作過三次修改的數據,到如今爲止,所有數據恢復正常


六、從數據庫使用參數 --slave-info --safe-slave-backup 記錄備份時的slave狀態,注意:slave信息備份須要的backup備份帳戶有 SUPER 權限 

相關文章
相關標籤/搜索