MySQL 資料庫備份種類以及常用備份工具匯總

來源:互聯網
上載者:User

標籤:

 


1,Database Backup種類

按照資料庫大小備份,有四種類型,分別應用於不同場合,下面簡要介紹一下:

1.1完全備份

這是大多數人常用的方式,它可以備份整個資料庫,包含使用者表、系統資料表、索引、視圖和預存程序等所有資料庫物件。但它需要花費更多的時間和空間,所以,一般推薦一周做一次完全備份。

 

1.2交易記錄備份

交易記錄是一個單獨的檔案,它記錄資料庫的改變,備份的時候只需要複製自上次備份以來對資料庫所做的改變,所以只需要很少的時間。為了使資料庫具有魯棒性,推薦每小時甚至更頻繁的備份交易記錄。

 

1.3差異備份

也叫增量備份。它是只備份資料庫一部分的另一種方法,它不使用交易記錄,相反,它使用整個資料庫的一種新映象。它比最初的完全備份小,因為它只包含自上次完全備份以來所改變的資料庫。它的優點是儲存和恢複速度快。推薦每天做一次差異備份。

 

1.4檔案備份

資料庫可以由硬碟上的許多檔案構成。如果這個資料庫非常大,並且一個晚上也不能將它備份完,那麼可以使用檔案備份每晚備份資料庫的一部分。由於一般情況下資料庫不會大到必須使用多個檔案儲存體,所以這種備份不是很常用。

按照資料庫的狀態可分為三種:

1.冷備份,此時資料庫處於關閉狀態,能夠較好的保證資料庫的完整性。

2.熱備份,資料庫正處於運行狀態,這種方法依賴於資料庫的[1] 記錄檔進行備份。

3.邏輯備份,使用軟體從資料庫中提取資料並將結果寫到一個檔案上。

 

2,備份工具簡介

mysql按照備份恢複方式分為邏輯備份和物理備份。邏輯備份是備份sql語句,在恢複的時候執行備份的sql語句實現資料庫資料的重現,物理備份就是備份資料檔案了,比較形象點就是cp下資料檔案,但真正備份的時候自然不是的cp這麼簡單。

 

這2種備份各有優劣,一般來說,物理備份恢複速度比較快,佔用空間比較大,邏輯備份速度比較慢,佔用空間比較小。

官方地址:http://dev.mysql.com/doc/refman/5.6/en/backup-and-recovery.html

2.1 mysqldump工具

Mysqldump是mysql內建的備份工具,目錄在bin目錄下面:/usr/local/mysql/bin/mysqldump,支援基於innodb的熱備份。但是由於是邏輯備份,所以速度不是很快,適合備份資料比較小的情境。Mysqldump完全備份+二進位日誌可以實現基於時間點的恢複。

 

對myisam儲存引擎的表,只能使用溫備份,這個時候要防止資料的寫入,所以先加上讀鎖。這個時候也可以進入資料庫手動加讀鎖,不過這樣比較麻煩,可以在mysqldump工具中直接有一個加鎖的選擇,就是 --lock-all-tables ,例如mysqldump --databases test --lock-all-tables --flush-logs > /tmp/backup_test_`date+%F-%H-%M`.sql。

 如果是備份單張表,直接在庫名字test後面加上表名字即可。

 

對於innodb儲存引擎表,可以熱備,不必對資料庫進行加鎖的操作,加一個選項可以進行熱備份,--single-transaction,例如:mysqldump --databases test --single-transaction --flush-logs--master-data=2> /tmp/backup_test_`date +%F-%H-%M`.sql。

 

PS:注意點,恢複的時候記得關閉二進位日誌:

mysql> set sql_log_bin=0;

因為這是基於邏輯備份方式,所以執行sql會插入資料,會記錄到二進位日誌裡面去,因為這事恢複,所以插入的二進位日誌基本沒有啥意思,可以關閉掉,縮短恢復。

 

2.2 基於LVM快照備份

在物理備份中,有基於檔案系統的物理備份(LVM的快照),也可以直接用tar之類的命令對整個資料庫目錄進行打包備份,但是這些只能進行泠備份,不同的儲存引擎備份的也不一樣,myisam自動備份到表層級,而innodb不開啟獨立資料表空間的話只能備份整個資料庫。

 

下面就介紹下使用LVM的快照功能進行備份為了安全,首先在資料庫上施加讀鎖

mysql>FLUSH TABLES WITH READ LOCK;

 

重新整理一下二進位日誌,便於做時間點恢複

mysql>FLUSH LOGS;

 

然後建立快照卷

lvcreate –L 1G –s –n data-snap –p –r/dev/myvg/mydata

 

最後進入資料庫釋放讀鎖

UNLOCK TABLES;

 

掛載快照卷進行備份

mount –r /dev/myvg/data-snap /mnt/snap

 

然後對/mnt/snap下的檔案進行打包備份

還原的時候,關閉mysqld,然後備份二進位日誌後將原來備份的檔案還原進去,然後通過二進位日誌還原到出錯的時間點(通過二進位還原時間點的時候不要忘了暫時關閉二進位日誌)

 

在2010年到2012年之間,mysql資料庫部署在亞馬遜的雲環境中,他們提供了LVM快照,蠻方便快捷的,使用lvm快照,在亞馬遜的萬兆網路下,恢複起來也迅速無比。

 

2.3 tar包備份

0,準備從庫第一次資料備份,臨時鎖所有表,開啟視窗1

mysql> flush tables with read lock; 

Query OK, 0 rows affected (0.00 sec) 

 

mysql> show master status;          

+------------------+----------+--------------+------------------+ 

| File             | Position | Binlog_Do_DB |Binlog_Ignore_DB | 

+------------------+----------+--------------+------------------+ 

| mysql-bin.000003 |   194554 |              |                  | 

+------------------+----------+--------------+------------------+ 

1 row in set (0.00 sec) 

PS:這個視窗不能exit,要一直保持知道tar完包為止。

--重新開一個shell視窗,去資料檔案目錄tar包
開啟視窗2
[[email protected]_21_11 data]# tar -zcvf mysqla1.tar.gz mysqla
tar -zcvf mysqla1.tar.gz mysqla  壓縮完畢

切換到視窗1,執行解鎖命令
mysql> unlocktables;              
Query OK, 0 rows affected (0.00 sec)

mysql>

copy tar包到另外一個mysql程式庫伺服器上面,覆蓋data目錄,然後重啟mysql資料庫服務。

 

2.4 percona提供的xtrabackup工具

支援innodb的物理熱備份,支援完全備份,增量備份,而且速度非常快,支援innodb儲存引起的資料在不同資料庫之間遷移,支援複製模式下的從機備份恢複備份恢複

,為了讓xtrabackup支援更多的功能擴充,可以設立獨立資料表空間,開啟 innodb_file_per_table功能,啟用之後可以支援單獨的表備份。

為:http://www.percona.com/software/percona-xtrabackup,

參考文章地址:http://blog.csdn.net/mchdba/article/details/11563027

 

支援線上熱備與恢複

大資料量的時候,備份恢複都比較快快

 

xtrabackup可以實現完全備份,增量備份,以及部份備份。

 

xtrabackup備份原理 

 xtraBackup基於InnoDB的crash-recovery功能。它會複製innodb的data file,由於不鎖表,複製出來的資料是不一致的,在恢複的時候使用crash-recovery,使得資料恢複一致。 

 

 InnoDB維護了一個redo log,又稱為transaction log,交易記錄,它包含了innodb資料的所有改動情況。當InnoDB啟動的時候,它會先去檢查data file和transaction log,並且會做二步操作:

 

  xtraBackup在備份的時候, 一頁一頁地複製innodb的資料,而且不鎖定表,與此同時,XtraBackup還有另外一個線程監視著transactions log,一旦log發生變化,就把變化過的log pages複製走。為什麼要急著複製走呢?因為transactions log檔案大小有限,寫滿之後,就會從頭再開始寫,所以新資料可能會覆蓋到舊的資料。 

  在prepare過程中,XtraBackup使用複製到的transactionslog對備份出來的innodb data file進行crash recovery。 

 

 

 ----------------------------------------------------------------------------------------------------------------
<著作權所有,文章允許轉載,但必須以連結方式註明源地址,否則追究法律責任!>
原部落格地址:       http://blog.itpub.net/26230597/viewspace-1460065/
原黃杉(mchdba)
----------------------------------------------------------------------------------------------------------------

MySQL 資料庫備份種類以及常用備份工具匯總

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.