1. 程式人生 > >[MySQL] innobackupex線上備份及恢復(全量和增量)

[MySQL] innobackupex線上備份及恢復(全量和增量)

Xtrabackup是由percona開發的一個開源軟體,它是innodb熱備工具ibbackup(收費的商業軟體)的一個開源替代品。Xtrabackup由個部分組成:xtrabackup和innobackupex,其中xtrabackup工具用於備份innodb和 xtraDB引擎的表;而innobackupex工具用於備份myisam和innodb引擎的表,本文將介紹如何用innobackupex工具做全量和增量備份。

安裝

宣告:以下操作最好以mysql使用者執行。

首先,通過wget下載原始碼tar包:

wget http://www.percona.com/redir/downloads/XtraBackup/LATEST/source/percona-xtrabackup-2.1.5.tar.gz
安裝依賴包:
yum install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bzr bison libtool ncurses-devel zlib-devel
解壓縮tar:
tar -zxvf percona-xtrabackup-2.1.5.tar.gz
cd percona-xtrabackup-2.1.5

utils/build.sh指令碼會根據指定的引擎版本,自動解壓縮適當的MySQL原始碼包並進行編譯,這是最簡單的安裝方式。當你在命令列下不帶任何引數執行該指令碼時,出現如下提示:

[[email protected]
~/software/percona-xtrabackup-2.1.5 ]$ ./utils/build.sh Build an xtrabackup binary against the specified InnoDB flavor. Usage: build.sh CODEBASE where CODEBASE can be one of the following values or aliases: innodb51 | plugin build against InnoDB plugin in MySQL 5.1 innodb55 | 5.5 build against InnoDB in MySQL 5.5 innodb56 | 5.6,xtradb56, build against InnoDB in MySQL 5.6 | mariadb100 xtradb51 | xtradb,mariadb51 build against Percona Server with XtraDB 5.1 | mariadb52,mariadb53 xtradb55 | galera55,mariadb55 build against Percona Server with XtraDB 5.5
根據上面提示和你使用的儲存引擎及版本,選擇相應的引數即可。因為我用的是MySQL 5.6,所以執行如下語句安裝:
./utils/build.sh innodb56
以上語句執行成功後,表示安裝完成。最後,把生成的二進位制檔案拷貝到一個自定義目錄下(本例中為/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  

全備及其恢復

全備: 執行如下語句進行全備:
innobackupex --defaults-file=/opt/mysql/my.cnf  --user=root --password=*** /backup/mysql/data
該語句將拷貝資料檔案(由my.cnf裡的變數datadir指定)至備份目錄下(/backup/mysql/data),注意:如果不指定--defaults-file,預設值為/etc/my.cnf。 備份成功後,將在備份目錄下建立一個時間戳目錄(本例建立的目錄為/backup/mysql/data/2013-10-29_09-05-25),在該目錄下存放備份檔案。 恢復: 恢復之前,要先關閉資料庫,並且刪除資料檔案和日誌檔案。
innobackupex --defaults-file=/opt/mysql/my.cnf --user=root --password=*** --use-memory=4G --apply-log /backup/mysql/data/2013-10-29_09-05-25
innobackupex --defaults-file=/opt/mysql/my.cnf --user=root --password=***  --copy-back /backup/mysql/data/2013-10-29_09-05-25
從什麼可以看出,恢復分為兩個步驟,第1步是apply-log,為了加快速度,一般建議設定--use-memory,這個步驟完成之後,目錄/backup/mysql/data/2013-10-29_09-05-25下的備份檔案已經準備就緒。 第2步是copy-back,即把備份檔案拷貝至原資料目錄下。 恢復完成之後,一定要記得檢查資料目錄的所有者和許可權是否正確。

增量備份及其恢復

注意:innobackupex 增量備份僅針對InnoDB這類支援事務的引擎,對於MyISAM等引擎,則仍然是全備。 增量備份: 增量備份需要基於全備,先假設我們已經有了一個全備(/backup/mysql/data/2013-10-29_09-05-25),我們需要在該全備的基礎上做增量備份。
innobackupex --defaults-file=/opt/mysql/my.cnf  --user=root --password=*** --incremental-basedir=/backup/mysql/data/2013-10-29_09-05-25 --incremental /backup/mysql/data
其中--incremental-basedir指向全備目錄,--incremental指向增量備份的目錄。 上面語句執行成功之後,會在--incremental執行的目錄下建立一個時間戳子目錄(本例中為:/backup/mysql/data/2013-10-29_09-52-37),在該目錄下存放著增量備份的所有檔案。 在備份目錄下,有一個檔案xtrabackup_checkpoints記錄著備份資訊,全備的資訊如下:
backup_type = full-backuped
from_lsn = 0
to_lsn = 563759005914
last_lsn = 563759005914
基於該全備的增量備份的資訊如下:
backup_type = incremental
from_lsn = 563759005914
to_lsn = 574765133284
last_lsn = 574765133284
從上面可以看出,增量備份的from_lsn正好等於全備的to_lsn。
那麼,我們是否可以在增量備份的基礎上再做增量備份呢?答案是肯定的,只要把--incremental-basedir執行上一次增量備份的目錄即可,如下所示:
innobackupex --defaults-file=/opt/mysql/my.cnf  --user=root --password=*** --incremental-basedir=/backup/mysql/data/2013-10-29_09-52-37 --incremental /backup/mysql/data
它的xtrabackup_checkpoints記錄著備份資訊如下:
backup_type = incremental
from_lsn = 574765133284
to_lsn = 574770200380
last_lsn = 574770200950
可以看到,該增量備份的from_lsn是從上一次增量備份的to_lsn開始的。 恢復: 增量備份的恢復比全備要複雜很多,第一步是在所有備份目錄下重做已提交的日誌,如:
innobackupex --apply-log --redo-only BASE-DIR
innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1
innobackupex --apply-log BASE-DIR --incremental-dir=INCREMENTAL-DIR-2
其中BASE-DIR是指全備目錄,INCREMENTAL-DIR-1是指第一次的增量備份,INCREMENTAL-DIR-2是指第二次的增量備份,以此類推。 這裡要注意的是:最後一步的增量備份並沒有--redo-only選項!還有,可以使用--use_memory提高效能。 以上語句執行成功之後,最終資料在BASE-DIR(即全備目錄)下。 第一步完成之後,我們開始第二步:回滾未完成的日誌:
innobackupex --apply-log BASE-DIR
上面執行完之後,BASE-DIR裡的備份檔案已完全準備就緒,最後一步是拷貝:
innobackupex --copy-back BASE-DIR
同樣地,拷貝結束之後,記得檢查下資料目錄的許可權是否正確。

常見錯誤及解決方法

錯誤:
131028 17:45:57  innobackupex: Connecting to MySQL server with DSN 'dbi:mysql:;mysql_read_default_group=xtrabackup' (using password: NO).
innobackupex: Error: Failed to connect to MySQL server as DBD::mysql module is not installed at /home/mysql/admin/bin/percona-xtrabackup-2.1.5/innobackupex line 2913.
解決方法:
yum -y install perl-DBD-MySQL.x86_64

錯誤:

sh: xtrabackup_55: command not found
innobackupex: Error: no 'mysqld' group in MySQL options at /home/mysql/admin/bin/percona-xtrabackup-2.1.6/innobackupex line 4341.
解決方法:
cp xtrabackup_innodb55 xtrabackup_55

相關推薦

[MySQL] innobackupex線上備份恢復增量

Xtrabackup是由percona開發的一個開源軟體,它是innodb熱備工具ibbackup(收費的商業軟體)的一個開源替代品。Xtrabackup由個部分組成:xtrabackup和innobackupex,其中xtrabackup工具用於備份innodb和 xtr

Elasticsearch使用Logstash-input-jdbc同步mysql資料增量

作者:camelcanoe 來源:CSDN 原文:https://blog.csdn.net/camelcanoe/article/details/79759376 版權宣告:本文為博主原創文章,轉載請附上博文連結! 專案中用到elasticsearch,初始化資料時時寫的程式從資

Elasticsearch使用Logstash-input-jdbc同步mysql資料增量windows

專案中用到elasticsearch,初始化資料時時寫的程式從資料庫裡面查詢出來,然後多執行緒往elasticsearch裡面寫入的。今天試了一下Logstash-input-jdbc外掛,發現高效又方便,而且可以設定定時任務。1、安裝外掛在logstash的bin目錄下執行

使用innobackupex線上備份恢復mysql資料庫

一、安裝解壓 # yum -y install mysql mysql-libs mysql-server MySQL-python 2.建立資料庫 create database dotatest; mysql -uroot -p dotat

mysql大數據備份恢復

日誌記錄 數據恢復 insert 數據庫mysql values Mysql大數據備份和恢復一MySQL備份一般采取全庫備份、日誌備份;MySQL出現故障後可以使用全備份和日誌備份將數據恢復到最後一個二進制日誌備份前的任意位置或時間;mysql的二進制日誌記錄著該數據庫的所有增刪改的操

PostgreSQL備份恢復

www.wohedb.com  中文資料庫管理系統                                 PostgreSQL備份與恢復     PostgreSQL提供了三種備份和恢復的方式:SQL dump、檔案系統複製和聯機熱備份。 每一種備份方式都有自己的

使用MySQL命令列備份恢復資料庫

使用MySQL命令列,可以實現對資料庫的備份以及恢復,下面就為您介紹使用MySQL命令列實現該功能的詳細方法步驟,供您參考。 MySQL命令列匯出資料庫: 1,進入MySQL目錄下的bin資料夾:cd MySQL中到bin資料夾的目錄 如我輸入的命令列:cd C:\Prog

MySQL】Xtrabackup備份恢復指令碼

簡介: 此備份指令碼的策略是每週日和週三進去全備 其餘每天增量備份。 # 備份指令碼XtraBackup.sh: #!/bin/bash # filename : XtraBackup.sh # Author : wang da

資料備份恢復mongodump/mongorestore

資料備份及恢復(mongodump/mongorestore) 2019年01月17日 16:22:29 Dream

mysqldump 定時備份數據

off quick tar innodb 引擎 -a 管理工具 -1 l數據庫 MYSQL 數據庫備份有很多種(cp、tar、lvm2、mysqldump、xtarbackup)等等,具體使用哪一個還要看你的數據規模。下面給出一個表 #摘自《學會用各種姿態備份Mysql

關於Subversion主從備份方式的調整增量腳本更新

關於 是否 incr times ext style 否則 ges sla 本文引用於http://blog.chinaunix.net/uid-25266990-id-3369172.html 之前對Subversion服務器作了遷移,關於SVN的架構也走了調整,有單一的

Xtrabackup 備份大資料庫備份增量備份

Xtrabackup Xtrabackup是由percona開源的免費資料庫熱備份軟體,它能對InnoDB資料庫和XtraDB儲存引擎的資料庫非阻塞地備份(對於MyISAM的備份同樣需要加表鎖);mysqldump備份方式是採用的邏輯備份,其最大的缺陷是備份和恢復速度較

Others-大資料平臺Lambda架構淺析計算+增量計算

大資料平臺Lambda架構淺析(全量計算+增量計算) 2016年12月23日 22:50:53 scuter_victor 閱讀數:1642 標籤: spark大資料lambda 更多

MySQL資料以增量方式,同步到ES搜尋引擎

一、配置詳解 場景描述:MySQL資料表以全量和增量的方式向ElasticSearch搜尋引擎同步。 1、下載內容 elasticsearch 版本 6.3.2 logstash 版本 6.3.2 mysql-connector-java-5.1.13.jar 2、核心配置 路徑:/usr/local

MySQL 資料庫備份恢復探討mysqldump 增量mysqlbinlog

背景介紹: 在開發、測試以及生產環境中,每次修改MySQL資料庫,嚴格上來說,都應該事先備份資料庫,以便修改錯誤後導致資料庫掛掉或者不能用,能夠及時還原為修改前的資料庫;另外,在實際使用中也可能因為不正確的使用MySQL資料庫,導致資料庫不可用。因此,做好MySQL資料庫的備份和恢復具有重要的意

Mysql備份+增量+恢復方案操作記錄

1、開啟mysql的binlog日誌&檢視$備份 2、shell指令碼 mysqldump 變數說明 --all-databases針對所有資料庫進行備份  --databases databasename 針對單個數據庫進行備份 --flush-logs為結束當前

MySQL數據庫-完全備份恢復

mysqlMySQL數據庫-完全備份及恢復數據庫備份的分類物理角度:冷備份;也稱脫機備份,特點:關掉數據庫再備份熱備份:也稱聯機備份,特點:開啟數據庫再備份溫備份:數據庫只有可讀權限的狀態下備份邏輯角度:對數據庫的對象的備份,例如數據表,及數據表中的一些sql語句等備份策略角度:完全備份:每次對數據進行整體的

mysql 數據庫備份恢復

skip abc mysqld name back com 密碼 語句 unknown 1、備份 # 導出數據庫:mysqldump -u 用戶名 -p 數據庫名 > 導出的文件名mysqldump -–add-drop-table -uusername -ppas

MySQL備份恢復

安裝 mysql備份 變量 導出 數據庫名 表名 person windows 用戶名 導出數據庫: 1、windows下cmd打開命令行 2、cd 到MySQL的安裝目錄的bin 目錄,如果bin目錄添加到環境變量中不需要切換到bin目錄 3、導出數據庫:mysqldum

Mysql數據庫的備份恢復參數詳解

端口號 一次 相等 命令行 腳本 l數據庫 恢復 全部 sql命令 常見選項: --all-databases, -A: 備份所有數據庫--databases, -B: 用於備份多個數據庫,如果沒有該選項,mysqldump把第一個名字參數作為數據庫名,後面的作為表名。使用