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

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

MySQL的備份有不少種方式,最經常使用的應該是MySQLdump了,將數據庫導出一個 sql文件,還原的時候source db.sql 就歡快的執行了。小夥伴愉快的布上一個shell腳本,配上cron,幸福的看着天天備份文件的生成,倍感安全。假如一個MySQL超過了10G呢? 請相信我,導出的時間須要好幾個小時,那還原呢,時間會更長。我曾經用sql還原一個6G的數據庫,用了3個多小時。linux

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

一、快速可靠shell

二、備份過程當中不中斷事務處理數據庫

三、節約磁盤空間和網絡帶寬安全

四、自動備份驗證網絡

五、因爲快速還原而帶來的高可用行app

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

操做系統:CentOS release 6.5工具

MySQL: 5.6.21

1、安裝

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

yum install percona-xtrabackup

2、開始使用

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進行熱備 http://www.linuxidc.com/Linux/2014-04/99671.htm

MySQL開源備份工具Xtrabackup備份部署 http://www.linuxidc.com/Linux/2013-06/85627.htm

MySQL Xtrabackup備份和恢復 http://www.linuxidc.com/Linux/2011-12/50275.htm

用XtraBackup實現MySQL的主從複製快速部署【主不鎖表】 http://www.linuxidc.com/Linux/2012-10/71919p2.htm

安裝和使用 Percona 推出的 Xtrabackup 備份 MySQL http://www.linuxidc.com/Linux/2011-10/44451.htm

相關文章
相關標籤/搜索