生產環境MySQL快速備份工具XtraBackup使用案例

來源:互聯網
上載者:User

生產環境MySQL快速備份工具XtraBackup使用案例

MySQL的備份有很多種方式,最常用的應該是MySQLdump了,將資料庫匯出一個 sql檔案,還原的時候source db.sql 就歡快的執行了。小夥伴愉快的布上一個shell指令碼,配上cron,幸福的看著每天備份檔案的產生,倍感安全。假如一個MySQL超過了10G呢? 請相信我,匯出的時間需要好幾個小時,那還原呢,時間會更長。我曾經用sql還原一個6G的資料庫,用了3個多小時。

MySQLdump這種邏輯備份的缺點就不多說了,說說xtrabackup,又是PERCONA,就沖這個名號,值得信賴。官方說明:

1、快速可靠

2、備份過程中不中斷交易處理

3、節約磁碟空間和網路頻寬

4、自動備份驗證

5、由於快速還原而帶來的高可用行

上面說的,反正我是信了,還是那個6G多的庫,全備用了5分鐘,還原也只用了5分鐘。兄弟們,記住一點,要是真到了用備份來還原資料的時候,你還原幾個小時,老闆會有想法的!呵呵。

作業系統:CentOS release 6.5

MySQL: 5.6.21

一、安裝

yum install http://www.percona.com/downloads/percona-release/RedHat/0.1-3/percona-release-0.1-3.noarch.rpm

yum install percona-xtrabackup

二、開始使用

xtrabackup包含innobackupex,xtrabackup,xbcrypt,xbstream這幾個工具。Innobackupex支援MyISAM,InnoDB。所有,我選擇使用innobackupex。

1.建立備份使用者,你懂的,最小許可權
mysql> create user'bkuser'@'localhost' identified by 'bk2015';
Query OK, 0 rows affected (0.16sec)
mysql> grant reload,locktables,replication client on *.* to 'bkuser'@'localhost';
Query OK, 0 rows affected (0.00sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01sec)

2.使用innobackupex進行資料庫全備
innobackupex --user=bkuser--password=bk2015 /mnt/backups

--user 提供串連資料庫的使用者名稱
--password 串連資料庫的密碼
/mnt/backups 備份檔案的儲存路徑


命令執行完成後在/mnt/backups目錄下產生了2015-02-03_15-11-51目錄,該目錄就是我們當前資料庫的一個完整備份。該目錄是innobackupex自動產生的目錄,有一個參數可以控制該選項--no-timestamp,如果加上該參數,將不會自動組建目錄,備份建立在提供的路徑下。該參數在指令碼中使用比較方便。

3.使用完整備份進行資料庫還原

還原準備工作
innobackupex --apply-log/mnt/backups/2015-02-03_15-11-51

--apply-log 建立的備份中可能有些未提交的事務,需要復原或者從日誌進行回放

還原
停止mysql服務,
service mysqld stop

備份原有的mysql資料目錄
mv /mnt/data/mysql /mnt/data/mysql20150203

執行還原作業

innobackupex --copy-back/mnt/backups/2015-02-03_15-11-51/

改變目錄許可權,啟動服務

chown –R mysql.mysql /mnt/data/mysql
 
service mysqld start

 
4.innobackupex增量備份
增量備份需要一次完成備份為基礎,在全備的基礎上,下次備份僅備份目前時間到上次完備基礎上變化的資料。最大的好處是節約磁碟空間。當然,不好的地方是還原,還原的流程將變的複雜


4.1 首先進行全備
innobackupex --user=bkuser --password=bk2015 /mnt/backups

在備份目錄2015-02-03_15-11-51中有個xtrabackup-checkpoints,內容如下:
backup_type = full-backuped
from_lsn = 0
to_lsn = 1291135
 
建立增量備份
innobackupex --incremental /mnt/backups --incremental-basedir=/mnt/backups/2015-02-03_15-11-51--incremental 使用該參數建立增量備份
--incremental-basedir 指定上一次備份的目錄,比如這是完整備份後的第一次增備,該目錄是完備的目錄,如果這是第二次增備,則該目錄是第一次增備的目錄
 
檢查增備目錄的檔案中的xtraback_checkpoint檔案內容,會發現,lsn發生了變化
backup_type = incrementalfrom_lsn = 1291135to_lsn = 1352113

5.增量備份的還原


5.1 還原準備工作
流程: --apply-log 應用到全備目錄,第一次增備,第二增備……第N次增備,全部應用完成後相當於全備+所有增備 的一個新的全備。

innobackupex --apply-log --redo-only BASE-DIR

innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1innobackupex --apply-log BASE-DIR --incremental-dir=INCREMENTAL-DIR-2BASE-DIR 全備目錄
INCREMENTAL-DIR-1 第一次增備
INCREMENTAL-DIR-2 第二次增備

--redo-only 重要,每次增備都需要指定該參數,除了最後一次。否則未提交的事務將執行rollback。
以上步驟完成後,再次執行
innobackupex --apply-log BASE-DIR剩下的步驟按照全備的方式還原即可

MySQL管理之使用XtraBackup進行熱備

MySQL開源備份工具Xtrabackup備份部署

MySQL Xtrabackup備份和恢複

用XtraBackup實現MySQL的主從複製快速部署【主不鎖表】

安裝和使用 Percona 推出的 Xtrabackup 備份 MySQL

XtraBackup 的詳細介紹:請點這裡
XtraBackup 的:請點這裡

本文永久更新連結地址:

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.