xtrabackup備份

1.下載安裝xtrabackup

rpm-ivh http://www.percona.com/downloads/percona-release/redhat/0.1-3/
percona-release-0.1-3.noarch.rpm

yum install percona-xtrabackup -y

 

2. 創建備份的目錄和基本參數

mkdir /data_backup   ///創建備份目錄

--user=    #指定數據庫備份用戶

--password=  #指定數據庫備份用戶密碼

--port=     #指定數據庫端口

--host=    #指定備份主機

--socket=   #指定socket文件路徑

--databases=  #備份指定數據庫,多個空格隔開,如--databases="dbname1 dbname2",不加備份所有庫

--defaults-file=      #指定my.cnf配置文件

--apply-log         #日誌回滾

--incremental=        #增量備份,後跟增量備份路徑

--incremental-basedir=     #增量備份,指上次增量備份路徑

--redo-only         #合併全備和增量備份數據文件

--copy-back         #將備份數據複製到數據庫,數據庫目錄要爲空

--no-timestamp        #生成備份文件不以時間戳爲目錄名

--stream=           #指定流的格式做備份,--stream=tar,將備份文件歸檔

--remote-host=user@ipDST_DIR #備份到遠程主機

 

3.模擬備份

/usr/bin/innobackupex --user=root--password=123456 --socket=/tmp/mysql.sock /data_backup/ ///全備份

然後我再數據庫裏添加了幾個表和記錄(模擬第2天)

 innobackupex--user=root -password=123456 --incremental /data_backup/--incremental-basedir=/data_backup/2015-09-25_14-01-10/  --socket=/tmp/mysql.sock  ///增量備份

然後我又再數據庫裏添加了幾張表和記錄(模擬第3天)

innobackupex --user=root -password=123456--incremental /data_backup/ --incremental-basedir=/data_backup/2015-09-25_14-15-20/  --socket=/tmp/mysql.sock   ///增量備份

然後我再次修改數據(模擬第4天)

innobackupex --user=root -password=123456--incremental /data_backup/ --incremental-basedir=/data_backup/2015-09-25_14-27-21/  --socket=/tmp/mysql.sock    ///增量備份

然後我繼續創了個表,寫了一些記錄,並在第2天添加的記錄裏刪除一條(模擬恢復)

 

4.模擬恢復

service mysqld stop                  ///關閉服務

mkdir /tmp/linshi                 ///創建臨時存放數據庫文件

mv /data/mysql/* /tmp/linshi    ///數據庫文件必須清空才能恢復

innobackupex --apply-log --redo-only/data_backup/2015-09-25_14-01-10/     ///合併第一個增量備份

innobackupex --apply-log --redo-only/data_backup/2015-09-25_14-01-10/--incremental-dir=/data_backup/2015-09-25_14-15-20        ///合併第二個增量備份

innobackupex --apply-log --redo-only/data_backup/2015-09-25_14-01-10/--incremental-dir=/data_backup/2015-09-25_14-27-21/       ///合併第三個增量備份

innobackupex --apply-log --redo-only/data_backup/2015-09-25_14-01-10/ --incremental-dir=/data_backup/2015-09-25_14-38-02/       ///合併第四個增量備份

innobackupex --defaults-file=/etc/my.cnf--copy-back /data_backup/2015-09-25_14-01-10/  

///恢復完整備份

chown -R mysql.mysql /data/mysql/   ///xtrabackup後會把數據文件宿主歸root

service mysqld restart              ///開啓服務

cat /data_backup/2015-09-25_14-01-10/xtrabackup_binlog_info  查看裏面的日誌文件和恢復到的position

cd /tmp/linshi/      ///進入以前的數據文件目錄

mysqlbinlog mysql-bin.000002  ///找出破壞前的那個position

mysqlbinlog --start-position=3625 --stop-position=5181 /tmp/linshi/mysql-bin.000002>/data_backup/`date +%F`_recovery.sql    ///恢復2position中間數據

mysql -uroot -p123456</data_backup/2015-09-25_recovery.sql   ///導入到數據庫

 

不過備份恢復後日志文件會清空,導致主從失敗,需要重新寫主從配置好像有個--safe-slave-master選項,有待研究,xtrabackup太強大很多需要探索。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章