xtrabackup備份msyql數(shù)據(jù)庫

簡介:

為天寧等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及天寧網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站制作、做網(wǎng)站、天寧網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

Xtrabackup是由percona提供的MySQL數(shù)據(jù)庫備份工具,可以對Innodb數(shù)據(jù)庫做熱備

特點(diǎn):

(1)備份過程快速、可靠

(2)備份過程不會打斷正在執(zhí)行的事務(wù)

(3)能夠基于壓縮等功能節(jié)約磁盤空間和流量

(4)自動實(shí)現(xiàn)備份檢驗(yàn)

(5)還原速度快

準(zhǔn)備工作:

1.安裝xtrabackup(在percona官網(wǎng)下載rpm包)

# yum install percona-xtrabackup-2.2.3-4982.el6.x86_64.rpm

 

2.創(chuàng)建最小權(quán)限用戶

 MariaDB [(none)]>grant reload,lock tables,replication client on *.* to 'backupuser'@'localhost' identified by 'backuppassword';

 

MariaDB [(none)]> flush privileges;

Query OK, 0 rows affected (0.04 sec)

 

開始備份:(模擬線上環(huán)境)

1.完全備份(生成的備份目錄為2015-04-09_02-35-22)

# innobackupex --user=backupuser --password=backuppassword /backup/

若顯示以下內(nèi)容即為備份成功:

150409 02:35:25  innobackupex: Connection to database server closed

150409 02:35:25  innobackupex: completed OK!

 

若顯示以下錯誤信息:在my.cnf文件[mysqld] 中添加innodb_log_file_size = 5M 

InnoDB: Error: log file ./ib_logfile0 is of different size 5242880 bytes

InnoDB: than specified in the .cnf file 50331648 bytes!

innobackupex: Error: The xtrabackup child process has died at /usr/bin/innobackupex line 2672.

 

 

2.在數(shù)據(jù)庫插入數(shù)據(jù),模擬msyqld正常線上運(yùn)行第一天

MariaDB [(none)]> create database xx;

Query OK, 1 row affected (0.00 sec)

 

3.執(zhí)行增量備份(生成2015-04-09_02-59-13,此時--incremental-basedir則應(yīng)該指為完全備份的目錄2015-04-09_02-35-22)

注意:增量備份僅能應(yīng)用于InnoDB或XtraDB表,對于MyISAM表而言,執(zhí)行增量備份時其實(shí)進(jìn)行的是完全備份

 

# innobackupex --incremental /backup/ --incremental-basedir=/backup/2015-04-09_02-35-22/

顯示以下信息即為增量備份成功:

innobackupex: MySQL binlog position: filename 'mysql-bin.000001', position 324

150409 02:59:18  innobackupex: Connection to database server closed

150409 02:59:18  innobackupex: completed OK!

 

4.再次在數(shù)據(jù)庫插入數(shù)據(jù),模擬mysqld正常線上運(yùn)行第二天

MariaDB [(none)]> create database yy;

Query OK, 1 row affected (0.00 sec)

 

5.再次執(zhí)行增量備份(生成2015-04-09_03-00-38,此時--incremental-basedi則應(yīng)該指為上一次增量備份的目錄2015-04-09_02-59-13)

# innobackupex --incremental /backup/ --incremental-basedir=/backup/2015-04-09_02-59-13/

 

6.再次在數(shù)據(jù)庫插入數(shù)據(jù),模擬mysqld正常線上運(yùn)行第三天

MariaDB [(none)]> create database zz;

Query OK, 1 row affected (0.00 sec)

 

7.模擬事故,停掉mysqld,刪除/data目錄下的數(shù)據(jù)

注意:線上環(huán)境應(yīng)該將二進(jìn)制日志文件(binlog)和數(shù)據(jù)文件分開存放;

# service mysqld stop

說明:因?yàn)榇颂帉?shí)驗(yàn)我并沒有將二進(jìn)制日志文件和數(shù)據(jù)分開存放,所以我先將二進(jìn)制日志復(fù)制到其他目錄再刪除數(shù)據(jù)

# cp mysql-bin.000001  /backup/

# rm /data/* -rf

 

8.查看上一次增量備份,二進(jìn)制日志最后記錄position的位置

# cat /backup/2015-04-09_03-00-38/xtrabackup_binlog_info

mysql-bin.000001        479        

 

9.導(dǎo)出二進(jìn)制日志,從最后備份的position開始

# mysqlbinlog mysql-bin.000001 --start-position="479">/backup/binlog.sql

 

恢復(fù)數(shù)據(jù):

一般情況下,在備份完成后,數(shù)據(jù)尚且不能用于恢復(fù)操作,因?yàn)閭浞莸臄?shù)據(jù)中可能會包含尚未提交的事務(wù)或已經(jīng)提交但尚未同步至數(shù)據(jù)文件中的事務(wù)。因此,此時數(shù)據(jù)文件仍處理不一致狀態(tài)?!皽?zhǔn)備”的主要作用正是通過回滾未提交的事務(wù)及同步已經(jīng)提交的事務(wù)至數(shù)據(jù)文件也使得數(shù)據(jù)文件處于一致性狀態(tài)

“準(zhǔn)備”(prepare)增量備份與整理完全備份有著一些不同,尤其要注意的是:

(1)需要在每個備份(包括完全和各個增量備份)上,將已經(jīng)提交的事務(wù)進(jìn)行“重放”?!爸胤拧敝螅械膫浞輸?shù)據(jù)將合并到完全備份上。

(2)基于所有的備份將未提交的事務(wù)進(jìn)行“回滾”。

 

此時備份目錄下的所有文件:

xtrabackup備份msyql數(shù)據(jù)庫

按排列順序:完全備份文件 第一次增量備份文件 第二次增量備份文件 導(dǎo)出的部分二進(jìn)制日志文件 所有的二進(jìn)制日志文件

 

 

1.整理合并備份文件

# innobackupex --apply-log --redo-only /backup/2015-04-09_02-35-22/

 

將第一個增量備份合并到完全備份中

# innobackupex --apply-log --redo-only /backup/2015-04-09_02-35-22/ --incremental-dir=/backup/2015-04-09_02-59-13/

 

將第二個增量備份合并到完全備份中

# innobackupex --apply-log --redo-only /backup/2015-04-09_02-35-22/ --incremental-dir=/backup/2015-04-09_03-00-38/

注意:假如我們在每周日晚上00:00點(diǎn)做完全備份,在周1-周6晚上00:00點(diǎn)做增量備份,剛好有用戶一直在00:00點(diǎn)前一直在操作,并且在00:01分才提交事務(wù),所以為了避免系統(tǒng)自動將備份時候未提交的事務(wù)做回滾操作,所以我們需要加上--redo-only參數(shù),讓其只提交事務(wù),而不回滾事務(wù)。到最后系統(tǒng)會判定哪些是需要回滾的操作執(zhí)行回滾

 

2.恢復(fù)操作

# innobackupex --copy-back /backup/2015-04-09_02-35-22/

 

3.改變恢復(fù)后數(shù)據(jù)目錄(/data)下文件的屬主屬組為msyql

# chown -R mysql.mysql /data/*

 

4.查看數(shù)據(jù)庫有備份的內(nèi)容有無恢復(fù)

# service mysqld start

 

xtrabackup備份msyql數(shù)據(jù)庫

可以看到備份的數(shù)據(jù)已經(jīng)恢復(fù)

 

5.通過二進(jìn)制日志恢復(fù)未來得及備份的數(shù)據(jù)

# mysql <binlog.sql

 

xtrabackup備份msyql數(shù)據(jù)庫

可以看到未來的及備份的數(shù)據(jù)也通過二進(jìn)制日志恢復(fù)

 

-------------------------------完成。-------------------------------------

 

當(dāng)前題目:xtrabackup備份msyql數(shù)據(jù)庫
網(wǎng)頁路徑:http://bm7419.com/article32/gegjsc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版靜態(tài)網(wǎng)站、自適應(yīng)網(wǎng)站、App設(shè)計(jì)、網(wǎng)站設(shè)計(jì)公司、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作