1. 程式人生 > >Innobackupex(全備+增量)備份恢復

Innobackupex(全備+增量)備份恢復

als between 相關 pac 復數 pro 提交 myisam ply

MySQL的熱備(物理備份)可以采取全備加增量備份的方式來減輕數據庫I/O壓力及系統資源的占用。增量備份主要是以全備或增量備份為基礎,備份那些變更過的頁面。其備份的原理是基於一個不斷增長的LSN序列,這個LSN與Oracle的SCN類似。在恢復期間,我們需要將已提交的事務前滾,未提交的事務回滾。本文主要描述了增量備份及增量恢復。

1、增備的相關知識點
As not all information changes between each backup, the incremental backup strategy uses this to reduce the storage needs and the duration of making a backup. This can be done because each InnoDB page has a log sequence number, LSN, which acts as a version number of the entire database. Every time the database is modi?ed, this number gets incremented. An incremental backup copies all pages since a speci?c LSN. Once the pages have been put together in their respective order, applying the logs will recreate the process that affected the database, yielding the data at the moment of the most recently created backup.
增備是備份上次以來發生變化的頁面,通過增備可以減輕存儲以及系統資源開銷。增量備份主要針對於InnoDB,因為InnoDB采用了日誌序列號(LSN)的方式。InnoDB的LSN是一個增長的序列,類似於Oracle的SCN,記錄了InnoDB的變化情況。增量備份則是備份特定的LSN之後變化的情況。通過按序重組這些LSN即可將數據庫恢復到故障點或任意時刻。


innobackupex --incremental /data/backups --incremental-lsn=1291135
innobackupex --incremental /data/backups --incremental-lsn=1358967
如上,我們可以使用--incremental-lsn選項來實施增量備份

Warning: This procedure only affects XtraDB or InnoDB-based tables. Other tables with a different storage engine, e.g. MyISAM, will be copied entirely each time an incremental backup is performed.
對於非XtraDB或者InnoDB存儲引擎,熱備方式依舊會全部備份所有的數據文件,索引文件,格式文件等。

Preparing an Incremental Backup with innobackupex Preparing incremental backups is a bit different than full ones. This is, perhaps, the stage where more attention is needed:
? First, only the committed transactions must be replayed on each backup. This will merge the base full backup with the incremental ones.
? Then, the uncommitted transaction must be rolled back in order to have a ready-to-use backup.
對於增量備份的Prepare階段,有2個需要註意的地方,一個是提交的事務需要replayed,一個未提交的事務需要rollback。

If you replay the committed transactions and rollback the uncommitted ones on the base backup, you will not be able to add the incremental ones. If you do this on an incremental one, you won’t be able to add data from that moment and the remaining increments. Having this in mind, the procedure is very straight-forward using the --redo-only option, starting with the base backup:
如果在Prepare階段replay了已提交的事務以及回滾了未提交的事務,則後續的增量備份無法添加到當前全備。因此在Prepare階段全備應使用--redo-only選項。

--redo-only should be used when merging all incrementals except the last one. That’s why the previous line doesn’t contain the --redo-only option. Even if the --redo-only was used on the last step, backup would still be consistent but in that case server would perform the rollback phase.
對於存在多次增量的情形,僅僅只有最後一個增量不需要使用--redo-only 選項。如果使用了的話,rollback將由服務器啟動的時候來完成。


二、 演示
1. 準備實驗環境
mysql> select version();
+------------+
| version() |
+------------+
| 5.6.25-log |
+------------+
1 row in set (0.00 sec)
mysql> create database inc_rec;
Query OK, 1 row affected (0.00 sec)
mysql> use inc_rec;
Database changed
mysql> create table andy (id int);
Query OK, 0 rows affected (0.08 sec)
mysql> insert into andy values(1),(2);
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
2. 全備
[[email protected]

/* */ full]# innobackupex --defaults-file=/etc/my.cnf --user=root --password=oracle --port=3606 /xtrabackup/full/
xtrabackup: Transaction log of lsn (1648193) to (1648193) was copied.
170609 03:53:56 completed OK!
3. 查看全備生成文件
[[email protected] full]# ll /xtrabackup/full/
total 4
drwxr-x---. 6 root root 4096 Jun 9 03:53 2017-06-09_03-53-51
4. 模擬業務新數據
mysql> insert into andy values(3),(4);
Query OK, 2 rows affected (0.14 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
5. 增量備份
-- 創建存放增量備份目錄並賦權
[[email protected]
/* */ full]# mkdir -p /xtrabackup/increament/
[[email protected] full]# chown -R mysql:mysql /xtrabackup/increament/
[[email protected] full]# ll /xtrabackup/
total 8
drwxr-xr-x. 3 mysql mysql 4096 Jun 9 03:53 full
drwxr-xr-x. 2 mysql mysql 4096 Jun 9 04:00 increament
-- 正式開始增量備份
[[email protected]
*/ full]# innobackupex --defaults-file=/etc/my.cnf --user=root --password=oracle --incremental \
--incremental-basedir=/xtrabackup/full/2017-06-09_03-53-51/ /xtrabackup/increament/
########################################下面是增量備份輸出
170609 04:02:21 Backup created in directory ‘/xtrabackup/increament/2017-06-09_04-02-16/‘
MySQL binlog position: filename ‘binlog.000003‘, position ‘894‘
。。。省略
xtrabackup: Transaction log of lsn (1652210) to (1652210) was copied.
170609 04:02:22 completed OK!


補充:
[[email protected] 2017-06-09_04-02-16]# pwd
/xtrabackup/increament/2017-06-09_04-02-16
-- 查看增備產生的相關文件
[[email protected] 2017-06-09_04-02-16]# ll
total 8580
-rw-r-----. 1 root root 418 Jun 9 04:02 backup-my.cnf
-rw-r-----. 1 root root 360448 Jun 9 04:02 ibdata1.delta
-rw-r-----. 1 root root 44 Jun 9 04:02 ibdata1.meta
drwxr-x---. 2 root root 4096 Jun 9 04:02 inc_rec
drwxr-x---. 2 root root 4096 Jun 9 04:02 mysql
drwxr-x---. 2 root root 4096 Jun 9 04:02 performance_schema
drwxr-x---. 2 root root 4096 Jun 9 04:02 test
-rw-r-----. 1 root root 18 Jun 9 04:02 xtrabackup_binlog_info
-rw-r-----. 1 root root 117 Jun 9 04:02 xtrabackup_checkpoints
-rw-r-----. 1 root root 584 Jun 9 04:02 xtrabackup_info
-rw-r-----. 1 root root 8388608 Jun 9 04:24 xtrabackup_logfile
-- 文件 xtrabackup_info 含有備份類型
[[email protected] 2017-06-09_04-02-16]# more xtrabackup_info|grep ^incremental
incremental = Y
-- 文件xtrabackup_checkpoints包含了備份的相關檢查點信息
[[email protected] 2017-06-09_04-02-16]# more xtrabackup_checkpoints
backup_type = incremental
from_lsn = 1648193
to_lsn = 1652210
last_lsn = 1652210
compact = 0
recover_binlog_info = 0
-- 文件xtrabackup_binlog_info包含了binlog的位置
[[email protected] 2017-06-09_04-02-16]# more xtrabackup_binlog_info
binlog.000003 894
6. 誤操作,truncate表
mysql> truncate table andy;
Query OK, 0 rows affected (0.22 sec)
mysql> select * from andy;
Empty set (0.01 sec)
7. 停止mysql數據庫
[[email protected] ~]# service mysql stop
[[email protected] ~]# ps -ef|grep mysql
8.恢復數據庫 (先恢復全備,再按增量備份時間先後順序,依次恢復增量備份)
8.1 先恢復完整的備份集:
[[email protected] full]# innobackupex --defaults-file=/etc/my.cnf --user=root --apply-log --redo-only /xtrabackup/full/2017-06-09_03-53-51/
170609 04:19:30 completed OK!
8.2 在恢復增量備份集: (如果有多份增量備份,最好最後一份增量不用 --redo-only , 其他的都用 --redo-only)
[[email protected] full]# innobackupex --defaults-file=/etc/my.cnf --user=root --apply-log /xtrabackup/full/2017-06-09_03-53-51 --incremental-dir=/xtrabackup/increament/2017-06-09_04-02-16/
170609 04:24:45 completed OK! #結果出現completed OK表示完全成功
說明: /xtrabackup/full/2017-06-09_03-53-51 為全備基目錄 , incremental-dir 為增量備份目錄
9.將原有文件夾重命名到新位置,並創建原文件夾
[[email protected] full]# mv /data/mysql /data/mysqlbak
[[email protected] full]# mkdir -p /data/mysql
10.執行拷貝恢復的文件到原來的數據位置
[[email protected] full]# innobackupex --defaults-file=/etc/my.cnf --user=root --copy-back /xtrabackup/full/2017-06-09_03-53-51/
170609 04:33:06 completed OK! #結果出現completed OK表示完全成功
說明: /xtrabackup/full/2017-06-09_03-53-51/ 為全備基目錄
11. 權限修改
[[email protected] ~]# mkdir -p /data/mysql/binarylog (說明:這裏我binlog在datadir在路徑下,所以要單獨為binlog創建目錄)
chown -R mysql:mysql /data/mysql
12. 啟動被恢復的實例
[[email protected] mysql]# mysqld_safe --defaults-file=/etc/my.cnf &
[[email protected] ~]# mysql -uroot -poracle
mysql> use inc_rec;
mysql> select * from andy;
+------+
| id |
+------+
| 1 |
| 2 |
| 3 | > 恢復成功!
| 4 |
+------+
總結:
a、增量備份是基於增量或全備的基礎之上完成的。
b、增量備份的基礎是InnoDB引擎使用了LSN機制,非InnoDB引擎不存在增量備份的說法,每次都是全備。
c、對於增量備份的恢復期間需要對已提交的事務前滾,未提交的事務回滾。
d、增量備份的恢復應按照備份的順利逐個逐個replay,需要使用--apply-log --redo-only選項。
e、僅僅最後一個增量備份不需要使用--redo-only選項。
f、如果要做完全恢復或時點恢復,需要結合binlog來實現。
參考:http://blog.csdn.net/leshami/article/details/42141627 感謝大師

Innobackupex(全備+增量)備份恢復

相關推薦

Innobackupex全備+增量備份恢復

als between 相關 pac 復數 pro 提交 myisam ply MySQL的熱備(物理備份)可以采取全備加增量備份的方式來減輕數據庫I/O壓力及系統資源的占用。增量備份主要是以全備或增量備份為基礎,備份那些變更過的頁面。其備份的原理是基於一個不斷增長的LSN

2.7備份與還原--在完全恢復模式下事務日誌的角色

ges 需要 很多 對數 for 事情 mage .com .html 簡介 生產環境下的數據是如果可以寫在資產負債表上的話,我想這個資產所占的數額一定不會小。而墨菲定律(事情如果有變壞的可能,無論這種可能性有多小,它總會發生)仿佛是給DBA量身定做的。在上篇文章介

2.6備份與還原--在簡單恢復模式下事務日誌的角色

除了 空間 ble 暫時 cover recovery html AC truncated 簡介 在簡單恢復模式下,日誌文件的作用僅僅是保證了SQL Server事務的ACID屬性。並不承擔具體的恢復數據的角色。正如”簡單”這個詞的字面意思一樣,數據的備份和恢復僅僅

2.8備份與還原--在大容量恢復模式下事務日誌的角色

數據一致性 過程 使用 非正常關閉 cnblogs 地方 重建 結構 恢復 簡介 日誌的作用是保證持久性和數據一致性,通過日誌可以實現數據的Undo與Redo,因此通過日誌,SQL Server不僅僅可以實現災難恢復,還可以通過日誌的Redo來實現高可用性。本篇文章

MySQL自動化全量+增量備份指令碼

文章轉自:http://www.it-hack.cn/forum.php?mod=viewthread&tid=220&extra=page%3D1一、MySQL的日常備份方案:全備+增量備份:1、週日凌晨三點進行全備;2、週一到週日增量備份。不是往常的週日全備份,週一到週六增量備份,這樣如果

2.10備份與還原--利用T-SQL進行備份還原

bject 新建 pri bak 調用示例 語句 pid active eric --利用T-SQL語句,實現數據庫的備份與還原的功能 ----體現了SQL Server中的四個知識點: ----1. 獲取SQL Server服務器上的默認目錄 ----2. 備份SQL語句

2.17備份與還原--事務日誌不能截斷的原因與收縮日誌文件

查點 數據庫引擎 重復 int .data ase 日誌截斷 soft 時間 一、日誌截斷的目的  日誌截斷後,數據庫引擎將MinLSN之前的虛擬日誌文件(VLF)標記為“可復用”。“可復用”的VLF可以成為日誌回繞後重復利用的空間,也可以在收縮日誌文件時釋放其占用的磁盤空

智慧手機串號IMEI碼丟失無效IMEI解決恢復辦法

本方法本少爺親測可行,故做一記錄如下: 準備工作: 1、手機已經ROOT。沒有ROOT的下載ROOT大師即可ROOT。 詳細步驟   1、記錄你的手機IMEI串號:IMEI串號,可以在手機背面找到,把電池拿掉,手機放電池的那個槽,裡面有IMEI號,

Veeam Backup & Replication試用:配置同步Replication Job恢復Restore

===========================================================Veeam Backup & Replication安裝/配置系列: 上次介紹瞭如何使用Veeam Backup & Replica

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

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

Mysql備份系列3--innobackupex備份mysql大資料(全量+增量操作記錄

    在日常的linux運維工作中,大資料量備份與還原,始終是個難點。關於mysql的備份和恢復,比較傳統的是用mysqldump工具,今天這裡推薦另一個備份工具innobackupex。innobackupex和mysqldump都可以對mysql進行熱備份的,mys

postgresql數據庫備份恢復超快

我們 其中 -- 數據庫 過程 back 手動 文件導入 必須 PostgreSQL自帶一個客戶端pgAdmin,裏面有個備份,恢復選項,也能對數據庫進行備份 恢復(還原),但最近發現數據庫慢慢龐大的時候,經常出錯,備份的文件過程中出錯的幾率那是相當大,手動調節灰常有限。所

備份恢復

需要 更改 ann 大小 歸檔 歸檔日誌 關閉數據庫 可能 ase 數據庫可恢復性(備份)(冗余) 配置可恢復性 1.修改控制文件:先在sys權限下 修改參數文件。 修改完參數後,關閉數據庫。再回到$oracle 按照修改的參數移動路徑或更改文件名稱。 再重啟數據庫。控制文

MySQL常用操作2MySQL用戶管理、常用sql語句、 MySQL數據庫備份恢復

MySQL用戶管理 MySQL用戶管理創建一個普通用戶並且授權1.grant all on *.* to 'user1' identified by 'passwd';grant all on *.* to 'user1' iden

Greeplum 系列 備份恢復

移除 cat eat 適合 主機 pdb SQ 簡單 mail Greeplum 系列(六) 備份與恢復 一、備份 1.1 並行備份(gp_dump) GP 同時備份 Master 和所有活動的 Segment 實例,備份消耗的時間與系統中實例的數量沒有關系。在 Maste

select … into outfile 備份恢復load data以及mysqldump時間對比

IE sele 文本文 root 實現 default sin while con select … into outfile ‘path‘ 備份 此種方式恢復速度非常快,比insert的插入速度要快的多,他跟有備份功能豐富的mysqldump不同的是,他只能備份表中的數據

Oracle備份恢復RMAN篇

RMAN ORACLE 張晨 前言:歡迎加QQ交流1445696451微博地址http://blog.51cto.com/13434336~~~~~~~分割~~~~~~數據庫備份與恢復是數據庫管理員必須掌握的。沒有任何系統能免遭硬盤物理損壞、粗心用戶的錯誤操作、或一些可能會威脅到存儲數據的潛在災難

使用mysqldump 備份 恢復從庫報錯解決方案ERROR 1872

tab 註意 targe 密碼 二進制 5.6 rec 可用 alter 版本:MySQL5.7.22一、報錯現象dba:(none)> start slave;ERROR 1872 (HY000): Slave failed to initialize relay

mongodb基礎4備份恢復

pro oss col mon 圖片 備份 cto ffffff 技術 1、備份2、恢復mongodb基礎(4)備份與恢復

xtrabackup備份MySQL備份恢復

xtrabackup備份(MySQL備份)與恢復 1. innobackupex引數選項 --no-timestamp: 不建立一個時間戳 --defaults-file=[MY.CNF] //指定配置檔案:只能從給定的檔案中讀取預設選項。 且必須作為命令列上的第一個選項;必須是一個真實的檔案,它不