percona-XtraBackup備份恢復
3 XtraBackup使用手冊
3.1 使用innobackupex指令碼
innobackupex是perl指令碼對xtrabackup的封裝,和功能擴充套件。
3.1.1 備份預備工作
許可權和連線
xtrabackup需要連線到資料庫和datadir操作許可權。
xtrabackup或者innobackupex在使用過程中設計到2類使用者許可權:
1.系統使用者,用來呼叫innobackupex或者xtrabackup
2.資料庫使用者,資料庫內使用的使用者
連線到服務:innobackupex或者xtrabackup通過—user和—password連線到資料庫服務
$ innobackupex --user=DBUSER --password=SECRET /path/to/backup/dir/
$ innobackupex --user=LUKE --password=US3TH3F0RC3 --stream=tar ./ | bzip2 -
$ xtrabackup --user=DVADER --password=14MY0URF4TH3R --backup --target-dir=/data/bkps/
其他連線選項:
Option |
Description |
–port |
The port to use when connecting to the database server with TCP/IP. |
–socket |
The socket to use when connecting to the local database. |
–host |
The host to use when connecting to the database server with TCP/IP. |
需要的許可權:連線到服務是為了執行備份,需要在datadir上有read,write和execute許可權。在資料庫中需要以下許可權:
Ÿ RELOAD和LOCK TABLES許可權為了執行FLUSH TABLES WITH READ LOCK 。
Ÿ REPLICATION CLIENT為了獲取binary log 位置
Ÿ CREATE TABLESPACE許可權為了匯入表,使用者表級別的恢復
Ÿ SUPER許可權在slave環境下備份用來啟動和關閉slave執行緒
mysql>CREATE USER'bkpuser'@'localhost' IDENTIFIED BY's3cret';
mysql>GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON*.*TO'bkpuser'@'localhost';
mysql> FLUSH PRIVILEGES;
3.1.2 全備和全備還原
3.1.2.1 使用innobackupex建立全備
建立全備
$ innobackupex --user=DBUSER --password=DBUSERPASS /path/to/BACKUP-DIR/
會輸出以下資訊
innobackupex: Backup created in directory '/path/to/BACKUP-DIR/2013-03-25_00-00-09'
innobackupex: MySQL binlog position: filename 'mysql-bin.000003', position 1946
111225 00:00:53 innobackupex: completed OK!
從資訊中會發現備份被建立在/path/to/BACKUP-DIR/2013-03-25_00-00-09
內部機制:在備份的時候innobackupex會呼叫xtrabackup來備份innodb表,並複製所有的表定義,其他引擎的表(MyISAM,MERGE,CSV,ARCHIVE)。
其他選項:
--no-timestamp,指定了這個選項備份會直接備份在BACKUP-DIR,不再建立時間戳資料夾。
--default-file,指定配置檔案,用來配置innobackupex的選線。
3.1.2.2 使用innobackupex預備全備
建立完備份之後資料被沒有馬上可以被還原,需要回滾未提交事務,前滾提交事務,讓資料庫檔案保持一致性。
innobackupex使用—apply-log來做預備備份
$ innobackupex --apply-log /path/to/BACKUP-DIR
成功則會輸出:
111225 1:01:57 InnoDB: Shutdown completed; log sequence number 1609228
111225 01:01:57 innobackupex: completed OK!
成功後,備份可以被用來還原資料庫了。
內部機制:讀取備份資料夾中的配置檔案,然後innobackupex重做已提交事務,回滾未提交事務,之後資料就被寫到了備份的資料檔案(innodb檔案)中,並重建日誌檔案。這一步隱式呼叫了2次xtrabackup –prepare。跟多關於xtrabackup可以看之後的章節。
其他選項:
--user-memory:指定預備階段可使用的記憶體,記憶體多則速度快,預設為10MB
$ innobackupex --apply-log --use-memory=4G /path/to/BACKUP-DIR
3.1.2.3 使用innobackupex還原備份
service mysql stop 備份資料檔案mysql> select @@datadir;
+--------------------------+
| @@datadir |
+--------------------------+
| /data/server/mysql/data/ |
+--------------------------+
1 row in set (0.00 sec)
cd /data/server/mysql
mv data data_bak
重建資料目錄
mkdir data
恢復:
innobackupex --copy-back /backup/mysql/2016-03-01_01-48-01
chown -R mysql:mysql data
service mysql start
3.1.3 增量備份和還原
增量備份呢是為了減少空間使用和備份的時間。
增量備份的實現,依賴於innodb頁上面的LSN(log sequence number),每次對資料庫的修改都會導致LSN自增。
增量備份會複製指定LSN之後的所有資料頁。
首先,使用percona-xtrabackup工具對資料庫進行全備,然後再每次資料庫的資料更新後對資料進行增量備份,每次增量備份均在上一次備份的基礎上。恢復時依次把每次增量備份的資料恢復到全備中,最後使用合併的資料進行資料恢復。
3.1.3.1 建立增量備份
建立全備
在建立增量備份之前需要一個全備,不然增量備份是沒有意義的。
$ innobackupex /data/backups
這樣就會在/data/backups下建立一個時間戳資料夾,如/data/backups/2013-03-31_23-01-18,然後資料夾內是備份檔案。
檢查備份資料夾下的xtrabackup-checkpoints,會有一下資訊:
backup_type = full-backuped
from_lsn =0
to_lsn =1291135
建立第一個增量備份
然後使用—incremental建立增量備份
$ innobackupex --incremental /data/backups --incremental-basedir=BASEDIR
BASEDIR指向之前的全備, /data/backups/2013-03-31_23-01-18,成功後備份會生成在/data/backups下的時間戳目錄中,如:/data/backups/2013-04-01_23-01-18 ,把這個目錄叫為記為 INCREMENTAL-DIR-1方面之後使用。
然後檢視xtrabackup-checkpoints:
backup_type = incremental
from_lsn =1291135
to_lsn =1352113
可以發現和全備不同的是,backup_type為incremental,from_lsn不為0。
然後再建立一個增量備份
在INCREMENTAL-DIR-1的基礎上再建立一個增量備份,記為INCREMENTAL-DIR-2。
$ innobackupex --incremental /data/backups --incremental-basedir=INCREMENTAL-DIR-1
增量備份替代方法
可以使用指定—incremental-lsn來代替—incremental-basedir的方法建立增量備份。
innobackupex --incremental /data/backups --incremental-lsn=1291135
innobackupex --incremental /data/backups --incremental-lsn=1358967
注意:xtrabackup只會影響xtradb或者innodb的表,其他引擎的表在增量備份的時候只會複製整個檔案,不會差異。
---下面是具體的增量備份恢復案例第一步,全備
[[email protected] databackup]# innobackupex --user=root --password=123456 /databackup/
第二步,檢視資料
mysql> use larrydb; Database changed mysql> select * from class; +------+-------+ | cid | cname | +------+-------+ | 1 | linux | | 2 | dab | | 3 | Devel | +------+-------+ 3 rows in set (0.00 sec) mysql> select * from stu; +------+----------+------+ | sid | sname | cid | +------+----------+------+ | 1 | larry007 | 1 | +------+----------+------+ 1 row in set (0.00 sec)
第三步,更新資料
mysql> insert into stu values(2,'larry02',1); Query OK, 1 row affected (0.00 sec) mysql> select * from stu; +------+----------+------+ | sid | sname | cid | +------+----------+------+ | 1 | larry007 | 1 | | 2 | larry02 | 1 | +------+----------+------+ 2 rows in set (0.00 sec)
第四步,增量備份,進行了全備和第一次增量備份,所以有兩個備份資料夾。我們每次增量備份都是針對上一次備份。
#--incremental:增量備份的資料夾 #--incremental-dir:針對哪個做增量備份 [[email protected] databackup]# innobackupex --user=root --password=123456 --incremental /databackup/ --incremental-dir /databackup/2013-09-10_22-12-50/ InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy and Percona Inc 2009-2012. All Rights Reserved. …… innobackupex: Backup created in directory '/databackup/2013-09-10_22-15-45' innobackupex: MySQL binlog position: filename 'mysql-bin.000004', position 353 130910 22:16:04 innobackupex: completed OK! [[email protected] databackup]# ll total 8 drwxr-xr-x. 9 root root 4096 Sep 10 22:13 2013-09-10_22-12-50 drwxr-xr-x. 9 root root 4096 Sep 10 22:16 2013-09-10_22-15-45
第五步,再次插入資料
mysql> insert into stu values(3,'larry03',1); Query OK, 1 row affected (0.00 sec) mysql> select * from stu; +------+----------+------+ | sid | sname | cid | +------+----------+------+ | 1 | larry007 | 1 | | 2 | larry02 | 1 | | 3 | larry03 | 1 | +------+----------+------+ 3 rows in set (0.00 sec)
第六步,再次增量備份
[[email protected] databackup]# ll total 8 drwxr-xr-x. 9 root root 4096 Sep 10 22:13 2013-09-10_22-12-50 drwxr-xr-x. 9 root root 4096 Sep 10 22:16 2013-09-10_22-15-45 [[email protected] databackup]# innobackupex --user=root --password=123456 --incremental /databackup/ --incremental-dir /databackup/2013-09-10_22-15-45/
第七步,再次插入資料
mysql> insert into stu values(4,'larry04',1); Query OK, 1 row affected (0.00 sec) mysql> select * from stu; +------+----------+------+ | sid | sname | cid | +------+----------+------+ | 1 | larry007 | 1 | | 2 | larry02 | 1 | | 3 | larry03 | 1 | | 4 | larry04 | 1 | +------+----------+------+ 4 rows in set (0.00 sec)
第八步,再次增量備份。一次全備,三次增量備份,所以有四個備份資料夾
[[email protected] databackup]# innobackupex --user=root --password=123456 --incremental /databackup/ --incremental-dir /databackup/2013-09-10_22-19-21/ [[email protected] databackup]# ll total 16 drwxr-xr-x. 9 root root 4096 Sep 10 22:13 2013-09-10_22-12-50 drwxr-xr-x. 9 root root 4096 Sep 10 22:16 2013-09-10_22-15-45 drwxr-xr-x. 9 root root 4096 Sep 10 22:19 2013-09-10_22-19-21 drwxr-xr-x. 9 root root 4096 Sep 10 22:22 2013-09-10_22-21-42
第九步,模擬資料丟失
mysql> drop database larrydb; Query OK, 2 rows affected (0.02 sec)
第十步,對全部的資料進行檢查。可以看到增量備份和全備的檔案佔用磁碟大小有很大的差別,顯然全備佔用磁碟空間多,增量備份佔用磁碟空間少
[[email protected] databackup]# innobackupex --apply-log --redo-only /databackup/2013-09-10_22-12-50/ InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy and Percona Inc 2009-2012. All Rights Reserved. …… xtrabackup: starting shutdown with innodb_fast_shutdown = 1 130910 22:23:35 InnoDB: Starting shutdown... 130910 22:23:36 InnoDB: Shutdown completed; log sequence number 2098700 130910 22:23:36 innobackupex: completed OK! [[email protected] databackup]# du -sh ./* 22M ./2013-09-10_22-12-50 1.5M ./2013-09-10_22-15-45 1.5M ./2013-09-10_22-19-21 1.5M ./2013-09-10_22-21-42
第十一步,對第一次做的增量備份資料進行合併到全備份中去
[[email protected] databackup]# innobackupex --apply-log --redo-only --incremental /databackup/2013-09-10_22-12-50/ --incremental-dir=/databackup/2013-09-10_22-15-45/ InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy and Percona Inc 2009-2012. All Rights Reserved. …… innobackupex: Copying '/databackup/2013-09-10_22-15-45/hello/db.opt' to '/databackup/2013-09-10_22-12-50/hello/db.opt' 130910 22:32:26 innobackupex: completed OK!
第十二步,對第二次做的增量備份資料進行合併到全備份中去
[[email protected] databackup]# innobackupex --apply-log --redo-only --incremental /databackup/2013-09-10_22-12-50/ --incremental-dir=/databackup/2013-09-10_22-19-21/
第十三步,對第三次做的增量備份資料進行合併到全備份中去
[[email protected] databackup]# innobackupex --apply-log --redo-only --incremental /databackup/2013-09-10_22-12-50/ --incremental-dir=/databackup/2013-09-10_22-21-42/
第十四步,恢復時需要停掉MySQL,所以我們停掉MySQL
[[email protected] databackup]# /etc/init.d/mysqld stop ERROR! MySQL server PID file could not be found! [[email protected] databackup]# pkill -9 mysql
第十五步,恢復資料。注意這裡指定的資料夾是2013-09-10_22-12-50
[[email protected] databackup]# innobackupex --copy-back /databackup/2013-09-10_22-12-50/ InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy and Percona Inc 2009-2012. All Rights Reserved. This software is published under the GNU GENERAL PUBLIC LICENSE Version 2, June 1991. IMPORTANT: Please check that the copy-back run completes successfully. At the end of a successful copy-back run innobackupex prints "completed OK!". Original data directory is not empty! at /usr/bin/innobackupex line 571. #報以上錯需要刪除資料目錄下的東西 [[email protected] data]# pwd /usr/local/mysql/data [[email protected] data]# ls game ib_logfile0 mysql mysql-bin.000003 performance_schema test hello ib_logfile1 mysql-bin.000001 mysql-bin.000004 serv01.host.com.err xtrabackup_binlog_pos_innodb ibdata1 mnt mysql-bin.000002 mysql-bin.index serv01.host.com.pid [[email protected] data]# rm -rf * #再次恢復資料,並更改資料庫資料目錄的擁有者和所屬組 [[email protected] databackup]# innobackupex --copy-back /databackup/2013-09-10_22-12-50/ [[email protected] data]# ll total 18464 drwxr-xr-x. 2 root root 4096 Sep 10 22:37 game drwxr-xr-x. 2 root root 4096 Sep 10 22:37 hello -rw-r-----. 1 root root 18874368 Sep 10 22:33 ibdata1 drwxr-xr-x. 2 root root 4096 Sep 10 22:37 larrydb drwxr-xr-x. 2 root root 4096 Sep 10 22:37 mnt drwxr-xr-x. 2 root root 4096 Sep 10 22:37 mysql drwxr-xr-x. 2 root root 4096 Sep 10 22:37 performance_schema drwxr-xr-x. 2 root root 4096 Sep 10 22:37 test -rw-r--r--. 1 root root 24 Sep 10 22:37 xtrabackup_binlog_pos_innodb [[email protected] data]# chown mysql.mysql /usr/local/mysql/data/ -R
第十六步,啟動服務
[[email protected] data]# /etc/init.d/mysqld start Starting MySQL.. SUCCESS!
第十七步,登入資料庫,然後檢視資料
[[email protected] data]# mysql -uroot -p123456 mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | game | | hello | | larrydb | | mnt | | mysql | | performance_schema | | test | +--------------------+ 8 rows in set (0.00 sec) mysql> select * from larrydb.class; +------+-------+ | cid | cname | +------+-------+ | 1 | linux | | 2 | dab | | 3 | Devel | +------+-------+ 3 rows in set (0.00 sec) mysql> select * from larrydb.stu; +------+----------+------+ | sid | sname | cid | +------+----------+------+ | 1 | larry007 | 1 | | 2 | larry02 | 1 | | 3 | larry03 | 1 | | 4 | larry04 | 1 | +------+----------+------+ 4 rows in set (0.00 sec)
相關推薦
MySQL Percona XtraBackup 備份恢復之一 ---工作原理
一、前言 Percona XtraBackup(簡稱PXB)是 Percona 公司開發的一個用於 MySQL 資料庫物理熱備的備份工具,支援 MySQl(Oracle)、Percona Server
percona-XtraBackup備份恢復
3 XtraBackup使用手冊 3.1 使用innobackupex指令碼 innobackupex是perl指令碼對xtrabackup的封裝,和功能擴充套件。 3.1.1 備份預備工作 許可權和連線 xtrabackup需要連線到資料庫和datadir操作許可權。
Xtrabackup備份恢復
mysql備份 mysql恢復 mysql增量備份 mysql Xtrabackup 完全備份+兩次增量備份 --> 新主機恢復 環境: CentOS7.4 x 2 MariaDB-5.5.5 zabbix數據 EPEL源 Xtrabackup工具包 一、兩臺主機分別安裝
XtraBackup備份恢復模擬實踐
x86 alter 故障描述 cno href color 連接 values 備份 XtraBackup是Percona公司開發的一款很好用的數據備份工具,支持對InnoDB引擎數據的熱備份,對MyISAM引擎的數據做備份時需要鎖表,詳細信息參見官網或其他資源。【Xtra
Percona Xtrabackup備份mysql全庫及指定數據庫(完整備份與增量備份)
direct 包括 ria update 格式 支持 本地 chown 一次 Xtrabackup簡介 Percona XtraBackup是開源免費的MySQL數據庫熱備份軟件,它能對InnoDB和XtraDB存儲引擎的數據庫非阻塞地備份(對於MyISAM的備份同樣需要加
xtrabackup備份恢復MySQL數據庫
服務 備份類型 file 提交 啟動數據庫 lis info done linux 1. 全量備份恢復: 查看原表內容: MariaDB [(none)]> select * from testdb.students; +----+------------+---
Percona XtraBackup 資料恢復工具安裝 ubuntu 16.04
來源: https://www.percona.com/doc/percona-xtrabackup/LATEST/installation/apt_repo.html Installing Percona XtraBackup on Debi
Percona XtraBackup 備份原理
本文來自:http://mysql.taobao.org/monthly/2016/03/07/ 前言 Percona XtraBackup(簡稱PXB)是 Percona 公司開發的一個用於 MySQL 資料庫物理熱備的備份工具,支援 MySQL(Oracle)、Percona Serve
MySQL-物理備份-Percona XtraBackup 備份原理
usr ├── bin │ ├── innobackupex │ ├── xbcrypt │ ├── xbstream │ └── xtrabackup 其中最主要的是 innobackupex 和 xtrabackup,前者是一個 perl 指令碼,後者是 C/C++ 編譯的二進位制。
mysql的xtrabackup備份恢復基本操作
演示環境:作業系統:Linux-x86-64資料庫版本:5.7.19本次演示包括:xtrabackup軟體的安裝, 全量備份,增量備份,恢復 操作附:官方軟體及文件下載地址:https://www.percona.com/software/mysql-database/per
如何用Percona XtraBackup進行MySQL從庫的單表備份和恢復【轉】
empty lec del bsp 重建表 nbsp 創建 cfg serve 前提 應該確定采用的是單表一個表空間,否則不支持單表的備份與恢復。 在配置文件裏邊的mysqld段加上 innodb_file_per_table = 1 環境說明: 主庫
MySQL備份與恢復之percona-xtrabackup軟體的使用
一 使用percona-xtrabackup的原因 在前面,我們講到MySQL冷備、熱備、mysqldump、熱拷貝、保證資料的一致性。因為mysql冷備、mysqldump、mysql熱拷貝均不能實現增量備份,在實際環境中增量備份是使用較多的,percon
Percona XtraBackup的部分備份與恢復/單庫備份/單表備份/指定庫備份/指定表備份
原官方文件沒有如何恢復的方法,恢復部分是我自己加的。 -----------------------------------------------------------這是一條分割線-------------------------------------------
mysql-學習-13-20170619-MySQL備份恢復-xtrabackup-2
soc tar pex cfa nod 遠程 表空間 tid doc mysql-學習-13-20170619-MySQL備份恢復-xtrabackup-2 【管理員】吳炳錫(82565387) 20:34:15基於xtrabackup的增備,只需要了解如果需要增備建
使用percona-xtrabackup工具對mysql數據庫的備份方案
因此 name 遠程 tables pex 兩臺 days 裝包 support 使用percona-xtrabackup工具對mysql數據庫的備份方案 需要備份mysql的主機 172.16.155.23存放備份mysql的主機 172.16.155.22 目的:將
xtrabackup全備操作和誤刪備份恢復操作
href strong -h 正常 backup 如果 x86 dir 一致性 1.安裝percona源rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_6
mysql系列之6--------使用第三方工具-percona來備份mysql和恢復
文件目錄 restart form rpm 導入 完全備份 mys 只需要 schema 使用第三方工具來備份mysql-----percona一、前期準備工作: 1、安裝依賴包:yum -y install perl-Digest-MD5 perl-DBD-
MYSQL 5.6備份實錄-- Percona XtraBackup
-name 技術 分享圖片 .com img zxvf crontab ces pex [root@king01 ~]# cd /usr/local/src[root@king01 src]# tar zxvf percona-xtrabackup-2.4.4-Linux-
XtraBackup 備份與恢復實例講解
XtraBackupXtraBackup官網 www.percona.com 下載XtraBackup wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.3.3/binary/redhat/6/i386/percona
Mysql中-Xtrabackup備份和恢復應用
images 選項 SQ oca memory 使用方法 doc 如果 def 關於Xtrabackup(又或innobackupex)的介紹,詳細參考官方文檔 Xtrabackup安裝指南 文件準備 [root@wuxiang11 ~]# cd percona-xtr