天天看點

MySQL備份

MySQL備份

MySQL支援的備份類型如下圖所示:

MySQL備份

? 根據備份方法,備份可以分為如下3種:

l 熱備份(Hot Backup):熱備份也稱為線上備份(Online Backup),是指在資料庫運作的過程中進行備份,對生産環境中的資料庫運作沒有任何影響。常見的熱備方案是利用mysqldump、XtraBackup等工具進行備份。

l 冷備份(Cold Backup):冷備份也稱為離線備份(Offline Backup),是指在資料庫關閉的情況下進行備份,這種備份非常簡單,隻需要關閉資料庫,複制相關的實體檔案即可。目前,線上資料庫一般很少能夠接受關閉資料庫,是以該備份方式很少使用。

l 溫備份(Warm Backup):溫備份也是在資料庫運作的過程中進行備份,但是備份會對資料庫操作有所影響。該備份利用鎖表的原理備份資料庫,由于影響了資料庫的操作,故該備份方式也很少使用。

? 根據備份檔案的種類,備份可以分為如下兩種:Physical (Raw) Versus Logical Backups

l 實體備份(Physical Backup):實體備份也稱為裸檔案備份(Raw Backup),是指複制資料庫的實體檔案。實體備份即可以在資料庫運作的情況下進行備份(常見備份工具:MySQL Enterprise Backup(商業)、XtraBackup等),也可以在資料庫關閉的情況下進行備份。該備份方式不僅備份速度快,而且恢複速度也快,但是由于無法檢視備份後的内容,是以隻能等到恢複之後,才能檢驗備份出來的資料是否是正确的。

l 邏輯備份(Logical Backup):邏輯備份是指備份檔案的内容是可讀的,該文本一般都是由一條條SQL語句或者表的實際資料組成。常見的邏輯備份方式有mysqldump、SELECT ... INTO OUTFILE等方法。這類備份方法的好處是可以觀察備份後的檔案内容,缺點是恢複時間往往都會很長。邏輯備份的最大優點是對于各種存儲引擎都可以用同樣的方法來備份;而實體備份則不同,不同的存儲引擎有着不同的備份方法。是以,對于不同存儲引擎混合的資料庫,用邏輯備份會更簡單一些。

? 根據備份内容,備份可以劃分為如下3種:

l 全量備份(Full Backup):全量備份(完全備份)是指對資料庫進行一次完整的備份,備份所有的資料,包含使用者表、系統表、索引、視圖和存儲過程等所有資料庫對象。這是一般常見的備份方式,可以使用該備份快速恢複資料庫,或者搭建從庫。恢複速度也是最快的,但是每次備份會消耗較多的磁盤空間,并且備份時間較長。是以,一般推薦一周做一次全量備份。

l 增量備份(Incremental Backup):增量備份也叫差異備份,是指基于上次完整備份或增量備份,對資料庫新增的修改進行備份。這種備份方式有利于減少備份時使用的磁盤空間,加快備份速度。但是恢複的時候速度較慢,并且操作相對複雜。推薦每天做一次增量備份。

l 日志備份(Binary Log Backup):日志備份是指對資料庫二進制日志的備份。二進制日志是一個單獨的檔案,它記錄資料庫的改變,備份的時候隻需要複制自上次備份以來對資料庫所做的改變,是以隻需要很少的時間。該備份方式一般與上面的全量備份或增量備份結合使用,可以使資料庫恢複到任意位置。是以,推薦每小時甚至更頻繁的備份二進制日志。

在生産環境上,一般都會選擇以實體備份為主,邏輯備份為輔,加上日志備份,來滿足線上使用資料庫的需求。

1

定義 

适用: 

實體備份适用于大資料量的備份,比如你有好幾G的資料,那你就适合使用實體備份;

典型方法: 

1.檔案系統指令:cp,scp,tar,rsync; 

2.系統快照snapshot;

特征: 

1.由資料庫檔案和目錄組成,是mysql資料目錄的全部或者部分; 

2.一般備份比邏輯備份快,因為純屬是檔案複制,不用像邏輯備份那樣,需要做sql的轉換; 

3.備份的粒度比邏輯備份小,因為是全檔案複制了,當然比sql要精确一些; 

4.實體備份的檔案可以不僅是資料庫,還可以是資料庫的日志,配置檔案; 

5.備份memory存儲引擎的資料就麻煩了,因為memory的資料不是存儲在硬碟的; 

6.mysql伺服器不運作的時候可以進行備份,而邏輯備份需要mysql-server處理運作狀态; 

7.mysqlbackup程式指令,可以幫助innodb的資料進行備份;而直接使用檔案系統的指令(cp,scp,tar,rsync)等,就可以對myisam的資料進行備份;

邏輯備份就是把資料庫的結構定義語句,資料内容的插入語句,全部存儲下來。然後恢複的時候,在另一個mysql伺服器執行這些語句,就可以建立另一個與之前一樣的資料庫了。

典型的方法: 

1.mysqldump程式可以把對遠端/本地資料庫進行邏輯備份. 

2.SELECT ..... INTO OUTFILE可以把資料進行邏輯備份,但備份檔案隻能存儲在mysql-server的機器上;

适用:這種比較适合資料量少的資料庫。

特點: 

1.邏輯備份通過查詢資料庫的資訊進行備份; 

2.速度比較慢。因為擷取了資訊,然後組裝成sql語句,如果調用指令是遠端,還要把sql語句遠端傳輸; 

3.備份檔案要比實體備份大; 

4.備份粒度隻能到表; 

5.沒有日志或者配置檔案; 

6.備份檔案是sql語句,邏輯語句,相對來說,可移植性要好。比如我在linux備份了,可以在windows進行恢複,實體備份就不行;

上面所說的,都是全量備份,一般增量備份,都是通過mysql-server的二進制檔案進行增量備份;

增量備份的恢複,是先恢複某個時間點A的全量備份,然後再把從A開始之後的二進制檔案進行應用,進而完成恢複;

 MySQL備份和還原系列一:備份類型

2014-07-23 16:54:49

    對于資料庫來說,最基本的工作就是資料庫的備份與恢複,在意外情況下(伺服器當機/或者磁盤損損壞)要保證資料不丢失。

在實體關系模型中,我們知道有三種關系:一對一

1、按照mysql伺服器狀态區分(備份過程中,伺服器是否繼續提供服務)

cold Backup      離線備份,讀、寫操作均中止

warm Backup   僅可執行讀操作

hot Backup       讀、寫操作不受影響

hot備份指在資料庫運作中直接備份,對正在運作的服務沒有任何影響。

cold備份指在資料庫停止的情況下進行備份,比較簡單,隻需要拷貝相關的實體檔案即可。

warm備份同樣是資料庫運作時進行,但是對目前的資料庫有所影響。

2、按照備份資料格式

logical     将資料導出至文本檔案中,備份sql語句,在恢複的時候執行備份的sql語句實作資料庫資料的重制,适用于資料庫更新、遷移工作,但是恢複時花的時間比較長。

physical    檔案系統層面直接拷貝資料檔案,但真正備份的時候自然不是cp這麼簡單

3、資料存儲方式

full                    完全備份

increamenta    增量備份   

differential       差異備份

差異備份的定義:備份自上一次完全備份之後有變化的資料。

增量備份的定義:備份自上一次備份(包括完全備份,增量備份,差異備份)之後有變化的資料。

MySQL備份

主要按照邏輯備份還是實體備份分成兩類進行說明:

邏輯備份:速度相對較慢,可能丢失浮點數精度,可移植性強。

實體備份:速度非常快,在檔案系統級完成。

1、邏輯備份(将資料導出至文本檔案中)

mysqldump 

mysqldump是采用SQL級别的備份機制,将資料表導成SQL腳本檔案,是最常用的邏輯備份方法。

ALL        WARM    支援所有引擎,MyISAM引擎是邏輯溫備,可手動加鎖

INNODB     HOT     邏輯熱備,僅用于INODB引擎

SELECT INTO OUTFILE

進行SQL級别的表備份,邏輯

2、實體備份(直接備份資料檔案)

ibbackup

INNODBHOT對于INNODB引擎,熱備,實體備份

ALLWARM    其他引擎,溫備

ibbackup 商業工具 MyISAM是溫備份,InnoDB是熱備份 ,備份和還原速度都很快,這個軟體它的每伺服器授權版本是5000美元。

xtrabackup

xtrabackup 開源工具 MyISAM是溫備份,InnoDB是熱備份 ,是ibbackup商業工具的替代工具。

snapshot(LVM,ZFS)

ALLALMOST     實體 HOT

熱備、支援所有基于本地磁盤的存儲引擎、快速備份、低開銷、容易保持完整性、快速恢複等。

幾乎是熱備份,支援所有引擎,基于快照(LVM,ZFS)的實體備份,速度非常快。隻影響資料幾秒鐘而已。但是建立快照的過程本身就影響到了資料庫線上的使用,是以備份速度比較快,恢複速度比較快,沒有什麼彈性空間,而且LVM的限制:不能對多個邏輯卷同一時間進行備份,是以資料檔案和事務日志等各種檔案必須放在同一個LVM上。而ZFS則非常好的可以在多邏輯卷之間備份。

mysqlhotcopy

僅MYISAMMOSTLY COLD(LVM,snapshot)

mysqlhotcopy是一個perl程式,是lock tables、flush tables 和cp或scp來快速備份資料庫。它是備份資料庫或單個表的最快的途徑,但它隻能運作在資料庫檔案(包括資料表檔案、資料檔案、索引檔案)所在的機器上。

實體備份工具,但隻支援MyISAM引擎,基本上屬于冷備的範疇,實體備份,速度比較快。

mysqldump可以備份各種類型的資料表,但是mysqlhotcopy隻适合備份MyISAM和ISAM的資料表。是以使用mysqlhotcopy之前,你必須确認你的資料表是不是有其他的存儲引擎(storage engines)的。

tar,cp冷備

使用直接拷貝資料庫檔案的方式進行打包備份,需要注意的是執行步驟:鎖表、備份、解表。恢複也很簡單,直接拷貝到之前的資料庫檔案的存放目錄即可。注意:對于Innodb引擎的表來說,還需要備份日志檔案,即ib_logfile*檔案。因為當Innodb表損壞時,就可以依靠這些日志檔案來恢複。cp 冷備份,支援所有引擎,複制指令,隻能實作冷備,實體備份。使用歸檔工具,cp指令,對其進行備份的,備份速度快,還原速度幾乎最快,但是靈活度很低,可以跨系統,但是跨平台能力很差。

使用mysql主從複制

mysql的複制是指将主資料庫的DDL和DML操作通過二進制檔案(bin-log)傳送到從伺服器上,然後在從伺服器上對這些日志做重新執行的操作,進而使得從伺服器和主伺服器保持資料的同步。

備份/恢複政策:

要定期做 mysql 備份,并考慮系統可以承受的恢複時間。

確定 mysql 打開 log-bin,有了 binarylog,mysql 才可以在必要的時候做完整恢複,或基于時間點的恢複,或基于位置的恢複。

要經常做備份恢複測試,確定備份是有效的,并且是可以恢複的。

備份什麼?

資料檔案

my.cnf 配置檔案

二進制日志

事務日志

因為MySQL表儲存為檔案方式,很容易備份。要想保持備份的一緻性,對相關表執行LOCK TABLES操作,然後對表執行FLUSH TABLES。

你隻需要讀鎖定;這樣當你複制資料庫目錄中的檔案時,允許其它客戶繼續查詢表。需要FLUSH TABLES語句來確定開始備份前将所有激活的索引頁寫入硬碟。

政策一:直接拷貝資料庫檔案(檔案系統備份工具 cp)(适合小型資料庫,是最可靠的)

    當你使用直接備份方法時,必須保證表不在被使用。如果伺服器在你正在拷貝一個表時改變它,拷貝就失去意義。保證你的拷貝完整性的最好方法是關閉伺服器,拷貝檔案,然後重新開機伺服器。如果你不想關閉伺服器,要在執行表檢查的同時鎖定伺服器。如果伺服器在運作,相同的制約也适用于拷貝檔案,而且你應該使用相同的鎖定協定讓伺服器“安靜下來”。當你完成了備份時,需要重新開機伺服器(如果關閉了它)或釋放加在表上的鎖定(如果你讓伺服器運作)。要用直接拷貝檔案把一個資料庫從一台機器拷貝到另一台機器上,隻是将檔案拷貝到另一台伺服器主機的适當資料目錄下即可。要確定檔案是MyIASM格式或兩台機器有相同的硬體結構,否則你的資料庫在另一台主機上有奇怪的内容。你也應該保證在另一台機器上的伺服器在你正在安裝資料庫表時不通路它們。

政策二:mysqldump備份資料庫(完全備份+增加備份,速度相對較慢,适合中小型資料庫)(MyISAM是溫備份,InnoDB是熱備份)

mysqldump 是采用SQL級别的備份機制,它将資料表導成 SQL 腳本檔案,在不同的 MySQL 版本之間更新時相對比較合适,這也是最常用的備份方法。mysqldump 比直接拷貝要慢些。對于中等級别業務量的系統來說,備份政策可以這麼定:第一次完全備份,每天一次增量備份,每周再做一次完全備份,如此一直重複。而對于重要的且繁忙的系統來說,則可能需要每天一次全量備份,每小時一次增量備份,甚至更頻繁。為了不影響線上業務,實作線上備份,并且能增量備份,最好的辦法就是采用主從複制機制(replication),在 slave 機器上做備份。

政策三:lvs快照從實體角度實作幾乎熱備的完全備份,配合二進制日志備份實作增量備份,速度快适合比較煩忙的資料庫

前提:

資料檔案要在邏輯卷上;

此邏輯卷所在卷組必須有足夠空間使用快照卷;

資料檔案和事務日志要在同一個邏輯卷上;

政策四:xtrabackup 備份資料庫,實作完全熱備份與增量熱備份(MyISAM是溫備份,InnoDB是熱備份)

說明:Xtrabackup是一個對InnoDB做資料備份的工具,支援線上熱備份(備份時不影響資料讀寫),是商業備份工具InnoDB Hotbackup或ibbackup的一個很好的替代品。

Xtrabackup有兩個主要的工具:xtrabackup、innobackupex

xtrabackup 隻能備份InnoDB和XtraDB兩種資料表,而不能備份MyISAM資料表。

innobackupex 是參考了InnoDB Hotbackup的innoback腳本修改而來的.innobackupex是一個perl腳本封裝,封裝了xtrabackup。主要是為了友善的 同時備份InnoDB和MyISAM引擎的表,但在處理myisam時需要加一個讀鎖。并且加入了一些使用的選項。如slave-info可以記錄備份恢複後作為slave需要的一些資訊,根據這些資訊,可以很友善的利用備份來重做slave。

特點:

備份過程快速、可靠;

備份過程不會打斷正在執行的事務;

能夠基于壓縮等功能節約磁盤空間和流量;

自動實作備份檢驗;

還原速度快;

政策五:主從複制(replication)實作資料庫實時備份(叢集中常用)

參考:

<a href="http://freeloda.blog.51cto.com/2033581/1254883" target="_blank">http://freeloda.blog.51cto.com/2033581/1254883</a>

 使用Xtrabackup進行MySQL備份

2014-07-24 13:18:46

1、簡介

 Xtrabackup是由percona提供的mysql資料庫備份工具,據官方介紹,這也是世界上惟一一款開源的能夠對innodb和xtradb資料庫進行熱備的工具。特點:

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

(2)備份過程不會打斷正在執行的事務;

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

(4)自動實作備份檢驗;

(5)還原速度快;

通過xtrabackup 可實作完全熱備份與增量熱備份(MyISAM是溫備份,InnoDB是熱備份)

2、安裝

&gt;      

&gt;       

&gt;          

&gt;  

      &gt;  

           &gt;  

    &gt; 

<a href="http://www.baidu-ops.com/2013/05/26/xtrabackup/" target="_blank"></a>

<a href="http://blog.itpub.net/26736162/abstract/1/" target="_blank"></a> <a href="http://www.cnblogs.com/lhrbest" target="_blank"></a> <a href="http://blog.itpub.net/26736162/viewspace-1624453/" target="_blank"></a> <a href="http://blog.itpub.net/26736162/viewspace-2134706/" target="_blank"></a> <a href="http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826" target="_blank"></a> <a href="https://weidian.com/s/793741433?wfr=c&amp;ifr=shopdetail%20" target="_blank">&amp;</a> <a href="http://blog.itpub.net/26736162/viewspace-2142121/" target="_blank"></a> <a href="http://mp.weixin.qq.com/s?__biz=MzIzOTA2NjEzNQ==&amp;mid=307287619&amp;idx=1&amp;sn=9149fab6ae1aecfd1288316c5edc3805&amp;scene=19#wechat_redirect" target="_blank"></a>
MySQL備份
MySQL備份
MySQL備份
MySQL備份
<a target="_blank" href="http://wpa.qq.com/msgrd?v=3&amp;uin=646634621&amp;site=qq&amp;menu=yes"></a>
MySQL備份
MySQL備份
MySQL備份
MySQL備份