程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 基於Xtrabackup備份還原MySQL

基於Xtrabackup備份還原MySQL

編輯:關於SqlServer
 

Xtrabackup 是percona公司的開源項目,用以實現類似innodb官方的熱備份工具InnoDB Hot Backup的功能,能夠非常快速地備份與恢復mysql數據庫。

1. 工具說明
Xtrabackup中包含兩個工具:
  xtrabackup是用於熱備份innodb, xtradb表中數據的工具,不能備份其他類型的表,也不能備份數據表結構;
  innobackupex是將xtrabackup進行封裝的perl腳本,提供了備份myisam表的能力。
由於innobackupex的功能更為全面和完善,所以,本文以innobackupex作為基礎進行研究描述。

2. 備份前的准備工作

2.1 Xtrabackup安裝

1)     首先,通過wget下載源碼tar包:
wget http://www.percona.com/redir/downloads/XtraBackup/LATEST/source/percona-xtrabackup-2.1.5.tar.gz
2)     安裝依賴包:
yum install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bzr bison libtool ncurses-devel zlib-devel
3)     解壓縮tar:
tar -zxvf percona-xtrabackup-2.1.5.tar.gz
cd percona-xtrabackup-2.1.5
4)     所以執行如下語句安裝:
./utils/build.sh innodb56
5)     以上語句執行成功後,表示安裝完成。
6)     最後,把生成的二進制文件拷貝到一個自定義目錄下(本例中為/home/mysql/admin/bin/percona-xtrabackup-2.1.5),並把該目錄放到環境變量PATH中。
cp ./innobackupex /home/mysql/admin/bin/percona-xtrabackup-2.1.5
cp ./src/xtrabackup_56 ./src/xbstream /home/mysql/admin/bin/percona-xtrabackup-2.1.5

2.2 為用戶授權

在開始備份之前先要給用戶授權,創建一個用戶,賦予需要的最小權限
grant reload,lock tables,replication client on *.* to 'backup'@'localhost' identified by 'password'

3. 全庫備份及還原

3.1 生成一個完整的備份

1)   通過以下語句執行完整備份
innobackupex --user=backup --password=password --defaults-file=/etc/my.cnf /mydata/backup/
注:其中/mydata/backup/為備份保存的文件夾,該語句將拷貝數據文件(由my.cnf裡的變量datadir指定)至備份目錄下(/mydata/backup),注意:如果不指定--defaults-file,默認值為/etc/my.cnf。第一步完成後,會在backup文件夾中生成一個以日期為名稱的文件夾,存放著文件。

3.2 使用innobackupex恢復備份
 

1)生成innoDB日志,使備份可用
innobackupex --apply-log --defaults-file=/etc/my.cnf --use-memory=1G /mydata/backup/2015-03-23_14-35-12/

注:這條命令將根據my.cnf裡datadir指定的路徑,將備份恢復至數據庫,所以datadir指定的路徑一定要存在,且這個datadir的路徑必須是空的。
2)   修改文件權限
Chmod -R mysql.mysql /mydata/data/
3)   完成第二步的權限修改就可以成功啟動數據庫了

4. 增量備份及還原

4.1 創建備份目錄

首先創建3個目錄,在/mydata/下創建mon,tue,wed 三個目錄

4.2 完整備份及增量備份
 

1)制作星期一的完整備份:

innobackupex --user=backup --password=password --defaults-file=/etc/my.cnf /mydata/backup/mon/ --host=196.168.0.140
2)   制作星期二的增量備份:
innobackupex --incremental /mydata/tue/ --defaults-file=/etc/my.cnf --incremental-basedir=/mydata/mon/2015-03-23_15-09-21/ --user=backup --password=password --host=196.168.0.140
3)   制作星期三的增量備份
innobackupex --incremental /mydata/wed/ --defaults-file=/etc/my.cnf --incremental-basedir=/mydata/tue/2015-03-23_15-13-24/ --user=backup --password=password --host=196.168.0.140

4.3 增量備份的恢復

1)   首先准備原始的完整備份
innobackupex --apply-log --redo-only /mydata/mon/2015-03-23_15-09-21/ --use-memory=1G
2)   合並周二的增量備份至原始備份
innobackupex --apply-log --redo-only /mydata/mon/2015-03-23_15-09-21/ --incremental-dir=/mydata/tue/2015-03-23_15-13-24/ --use-memory=1G
3)   合並周三的增量備份是原始備份
innobackupex --apply-log /mydata/mon/2015-03-23_15-09-21/ --incremental-dir=/mydata/wed/2015-03-23_15-23-45/ --use-memory=1G
注意:最後的增量備份恢復,是沒有—read-only參數的
4)   以上三步執行完後,數據保存在全備目錄/mydata/mon/2015-03-23_15-09-21/
5)   回滾未完成的日志
innobackupex --apply-log --defaults-file=/etc/my.cnf /mydata/mon/2015-03-23_15-09-21/ --use-memory=G 
6)   生成最終的備份,這裡要指定配置文件
innobackupex --copy-back /mydata/mon/2015-03-23_15-09-21/ --defaults-file=/etc/my.cnf --use-memory=1G
7)   修改文件和目錄的權限 ,屬主改為mysql
Chmod -R mysql.mysql “my.cnf中指定的datadir路徑”
Chmod -R mysql.mysql “系統表空間所在的目錄”
Chmod -R mysql.mysql “重做日志表空間所在目錄”
8)   完成權限修改就可以成功啟動數據庫了  
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved