開源的一款數(shù)據(jù)庫備份工具,可以去官網(wǎng)下載并使用
創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設,盧氏企業(yè)網(wǎng)站建設,盧氏品牌網(wǎng)站建設,網(wǎng)站定制,盧氏網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,盧氏網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
percona-backupxtra對InonoDB會進行增量備份,面對MyISAM的數(shù)據(jù)進持完全備份。
1 xtrabackup只能備份innodb和xtradb兩種引擎的表,而不能備份myisam引擎的表;
2 innobackupex是一個封裝了xtrabackup的Perl腳本,支持同時備份innodb和myisam,但在對myisam備份時需要加一個全局的讀鎖。還有就是myisam不支持增量備份。
3 另外2個工具相對小眾些,xbcrypt 是加解密用的;xbstream 類似于tar,是 Percona 自己實現(xiàn)的一種支持并發(fā)寫的流文件格式。兩都在備份和解壓時都會用到(如果備份用了加密和并發(fā))。
MySQL:表是MyISAM引擎,讀多寫少,性能好。
實現(xiàn)方式:說實話,看這個不如看備份產(chǎn)生的信息,產(chǎn)生的信息中每一步都顯示出來,能更好帶你了解innobackupex 是如何備份的。
1 首先會啟動一個xtrabackup_log后臺檢測的進程,實時檢測mysql redo的變化,一旦發(fā)現(xiàn)redo有新的日志寫入,立刻將日志寫入到日志文件xtrabackup_log中
2 復制innodb的數(shù)據(jù)文件和系統(tǒng)表空間文件idbdata1到對應的以默認時間戳為備份目錄的地方
3 復制結束后,執(zhí)行flush table with read lock操作
4 復制.frm .myd .myi文件
5 并且在這一時刻獲得binary log 的位置
6 將表進行解鎖unlock tables
7 停止xtrabackup_log進程

完全備份:
# innobackupex --user=root --password=mysql /PATH/TO/BACKUP-DIR/
如果要使用一個最小權限的用戶進行備份,則可基于如下命令創(chuàng)建此類用戶
> CREATE USER 'bkpuser'@'localhost' IDENRIFIED BY 'PASSWORD';
> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'bkpuser';
> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'bkpuser'@'localhost';
> FLUSH PRIVILEGES;
The RELOAD privilege enables use of the FLUSH statement. It also enables mysqladmin commands that are equivalent to FLUSH operations: flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, and reload.
The REPLICATION CLIENT privilege enables the use of the SHOW MASTER STATUS, SHOW SLAVE STATUS, and SHOW BINARY LOGS statements.
使用innobackupex備份時,其會調用xtrabackup備份所有的InnoDB表,復制所有關于表結構定義的相關文件(.frm)心及MyISAM、MERGE、CSV和ARCHIVE表的相關文件,同時還會備份觸發(fā)器和數(shù)據(jù)庫配置信息相關的文件。這些文件會被保存至一個以時間命令的目錄中。
在備份的同時,innobackupex還會備份目錄中創(chuàng)建如下文件:
(1)xtrabackup_checkpoints 備份類型(如完全或增量)、備份狀態(tài)(如是否已經(jīng)為prepared狀態(tài))和LSN(日志序列號)范圍信息;
每個InnoDB頁(通常為16K大小)都會包含一個日志序列號,即LSN,LSN是整個數(shù)據(jù)庫系統(tǒng)的系統(tǒng)版本號,每個頁面相關的LSN能夠表明此頁最近是如何發(fā)生改變的。
(2)xtrabackup_binlog_infomysql服務器當前正在使用的二進制日志文件及至備份這一刻為止二進制日志事件的位置。
3)xtrabackup_info備份的信息集合
(4)xtrabackup_binary 備份中用到的xtrabackup的可執(zhí)行文件;
(5)backup-my.cnf備份命令用到的配置選項信息;
(6)xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0 從哪個數(shù)據(jù)塊開始備份
to_lsn = 1637454備份到哪里
last_lsn = 1637454最后的數(shù)據(jù)塊
會維護每個數(shù)據(jù)塊的日志序列號,如果數(shù)據(jù)發(fā)生改變,日志序列號就會往前走一次的,所以它可以根據(jù)這個號碼來進行增量備份。發(fā)生改變就備份,沒有改變就不用備份了。
在使用innobackupex進行備份時,還可以用--no-timestamp選項來阻止命令自動創(chuàng)建一個以時間命名的目錄,如此一來,innobackupex命令將會創(chuàng)建一個BACKUP-DIR目錄來存儲備份數(shù)據(jù)。
一般情況下,在備份完成后,數(shù)據(jù)尚且不能用于恢復操作,因為備份的數(shù)據(jù)中可能會包含尚未提交的事務或已經(jīng)提交但尚且未同步至數(shù)據(jù)文件中的事務。因此,此時數(shù)據(jù)文件仍處理不一致狀態(tài)。“準備”的主要作用正是通過回滾未提交的事務及同步已經(jīng)提交的事務至數(shù)據(jù)文件也使得數(shù)據(jù)文件處于一致性狀態(tài)。
3、從一個完全備份中恢復數(shù)據(jù)
innobackupex命令的--copy-back選項用于執(zhí)行恢復操作,其通過復制所有數(shù)據(jù)相關的文件至mysql服務器DATADIR目錄中來執(zhí)行恢復過程。innobackupex通過backup-my.cnf來獲取DATADIR目錄的相關信息。
# innobackupex --copy-back /PATH/TO/BACKUP-DIR/ //--copy-back 或 --force-non-empty-directories
datadir必須是為空的,innobackupex –copy-back不會覆蓋已存在的文件
還原時需要先關閉服務,如果服務是啟動的,那么就不能還原到datadir。
如果執(zhí)行正確,其輸出信息的最后幾行通常如下:
innobackupex: Starting to copy InnoDB log file
...
innobackupex: Finished copying back files.
innobackupex: completed OK!
請確保如上信息的最后一行出現(xiàn)“completed OK!”
當數(shù)據(jù)恢復至DATADIR目錄后,還需要確保所有數(shù)據(jù)文件的屬主和屬組均為正確的用戶,如mysql,否則,在啟動mysqld之前還需要先修改文件的屬主和屬組,如:
chown -R mysql.msyql /data/
4、使用innobackupex進行增量備份
每個InnoDB的頁面都會包含一個LSN信息,每當相關的數(shù)據(jù)發(fā)生改變,相關的頁面的LSN就會自動增長。這正是InnoDB表可以進行增量備份的甚而,即innobackupex通過備份上次完全備份之后發(fā)生改變的頁面來實現(xiàn)。
要實現(xiàn)第一次增量備份,可以使用下面的命令進行:
# innobackupex --incremental /backup --incremental-dir=BASEDIR
ex:
innobackupex --user=root --password=mysql --incremental-basedir=/backup/2017-03-29_12-32-56/ --incremental /backup/
下一個增量備份要以之前的增量備份上做備份,也就是說--incremental-basedir=上一個新增的目錄,而不是全備的。
其中,BASEDIR指的是完全備份所在的目錄,此命令執(zhí)行結束后,innobackupex命令會在/backup目錄中創(chuàng)建一個新的以時間命名的目錄以存放所有的增量備份數(shù)據(jù)。另外,在執(zhí)行過增量備份之后再一次進行增量備份時,其--incremental-dir應該指向上一次完全備份所在的目錄。
需要注意的是,增量備份僅能應用于InnoDB或XtraDB表,對于MyISAM表而言,執(zhí)行增量備份其實進行的是完全備份,
“prepare”增量備份與整理完全備份有著一些不同,尤其要注意的是:
(1)需要在每個備份(包括完全和各個增量備份)上,將已經(jīng)提交的事務進行“重放”,“重放”之后,所有的備份數(shù)據(jù)將合并到完全備份上。
(2)基于所有的備份將未提交的事務進行“回滾”。
于是,操作就變成了:
#innobackupex --apply-log --redo-only BACKUP-DIR\//每一次的BACKUP-DIR都是全量備份文件的位置
接著執(zhí)行:
# innobackupex --apply-log --redo-only BACKUP-DIR --incremental-dir=INCREMENTAL-DIR-1
而后是第二個增量:
# innobackupex --apply-log --redo-only BACKUP-DIR(這里的目錄不是完全備份的目錄,面是上一次增量備份的目錄,因為是在上一次增量備份的基礎上還原的) --incremental-dir=INCREMENTAL-DIR-2
其中BASE-DIR指的是完全備份所在的目錄,而INCREMENTAL-DIR-1 指的是第一次增量備份的目錄,INCREMENTAL-DIR-2指的是第二次增量備份的目錄,其它依次類推,即如果有多次增量備份,第一次都要執(zhí)行如上操作;
首先準備文件
我的數(shù)據(jù)庫數(shù)據(jù)在/data/下用LVM做的,我在這還要強調一下,二進制日志必須與數(shù)據(jù)不在同一個磁盤上,這一點怎么提醒都不為過,最好日志能放到raid1有鏡像的地方上去。
mkdir /backup/
1、# innobackupex --user=root --password=mysql /backup///進行完全備份
2、# innobackupex --user=root --password=mysql --incremental-basedir=/backup/2017-03-29_13-49-52/ --incremental /backup/進行第一次增量備份
3、# innobackupex --user=root --password=mysql --incremental-basedir=/backup/2017-03-29_12-49-52/ --incremental /backup/進行第二次增量備份
4、# innobackupex --apply-log --redo-only /backup/2017-03-29_12-32-56///第一次全量恢復,但是數(shù)據(jù)沒有回/data目錄下
5、# nnobackupex --apply-log --redo-only /backup/2017-03-29_12-32-56/ --incremental-dir=/backup/2017-03-29_13-49-52/ //恢復第一次增量備份
6、# innobackupex --apply-log --redo-only /backup/2017-03-29_12-32-56/ --incremental-dir=/backup/2017-03-29_13-53-57///恢復第二次增量備份
7、# innobackupex --copy-back /backup/2017-03-29_12-32-56///進行回滾操作,因為之前做過perpare操作,所以直接回滾就可以了,數(shù)據(jù)就回來了
8、# chown -R mysql.mysql /data/*
9、# service mysqld start//如果這時候出現(xiàn)Starting MySQL.. ERROR! The server quit without updating PID file (/var/mysql/data/localhost.localdomain.pid).
你就可以killall mysqld 把之前殘留的進程殺死,在啟動
文章題目:xtrabackup原理及用法詳解
文章鏈接:http://chinadenli.net/article0/jgjdoo.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、外貿(mào)網(wǎng)站建設、手機網(wǎng)站建設、搜索引擎優(yōu)化、企業(yè)網(wǎng)站制作、移動網(wǎng)站建設
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)