溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MySQL數(shù)據(jù)庫(kù)備份種類以及常用備份工具有哪些

發(fā)布時(shí)間:2021-11-06 09:56:59 來源:億速云 閱讀:388 作者:小新 欄目:MySQL數(shù)據(jù)庫(kù)

小編給大家分享一下MySQL數(shù)據(jù)庫(kù)備份種類以及常用備份工具有哪些,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

1、數(shù)據(jù)庫(kù)備份種類
MySQL按照數(shù)據(jù)庫(kù)大小備份,有四種類型,分別應(yīng)用于不同場(chǎng)合,下面簡(jiǎn)要介紹一下:
1.1 完全備份
   這是大多數(shù)人常用的方式,它可以備份整個(gè)數(shù)據(jù)庫(kù),包含用戶表、系統(tǒng)表、索引、視圖和存儲(chǔ)過程等所有數(shù)據(jù)庫(kù)對(duì)象。但它需要花費(fèi)更多的時(shí)間和空間,所以,一般推薦一周做一次完全備份。

1.2事務(wù)日志備份
   事務(wù)日志是一個(gè)單獨(dú)的文件,它記錄數(shù)據(jù)庫(kù)的改變,備份的時(shí)候只需要復(fù)制自上次備份以來對(duì)數(shù)據(jù)庫(kù)所做的改變,所以只需要很少的時(shí)間。為了使數(shù)據(jù)庫(kù)具有魯棒性,推薦每小時(shí)甚至更頻繁的備份事務(wù)日志。

1.3 差異備份
   差異備份也叫增量備份,它是只備份數(shù)據(jù)庫(kù)一部分的另一種方法,它不使用事務(wù)日志,相反,它使用整個(gè)數(shù)據(jù)庫(kù)的一種新映象。它比最初的完全備份小,因?yàn)樗话陨洗瓮耆珎浞菀詠硭淖兊臄?shù)據(jù)庫(kù)。它的優(yōu)點(diǎn)是存儲(chǔ)和恢復(fù)速度快。推薦每天做一次差異備份。

1.4 文件備份
   數(shù)據(jù)庫(kù)可以由硬盤上的許多文件構(gòu)成。如果這個(gè)數(shù)據(jù)庫(kù)非常大,并且一個(gè)晚上也不能將它備份完,那么可以使用文件備份每晚備份數(shù)據(jù)庫(kù)的一部分。由于一般情況下數(shù)據(jù)庫(kù)不會(huì)大到必須使用多個(gè)文件存儲(chǔ),所以這種備份不是很常用。

按照數(shù)據(jù)庫(kù)的狀態(tài)可分為三種:
1.冷備份,此時(shí)數(shù)據(jù)庫(kù)處于關(guān)閉狀態(tài),能夠較好的保證數(shù)據(jù)庫(kù)的完整性。
2.熱備份,數(shù)據(jù)庫(kù)正處于運(yùn)行狀態(tài),這種方法依賴于數(shù)據(jù)庫(kù)的[1] 日志文件進(jìn)行備份。
3.邏輯備份,使用軟件從數(shù)據(jù)庫(kù)中提取數(shù)據(jù)并將結(jié)果寫到一個(gè)文件上。

2、備份工具簡(jiǎn)介
   MySQL按照備份恢復(fù)方式分為邏輯備份和物理備份。邏輯備份是備份sql語句,在恢復(fù)的時(shí)候執(zhí)行備份的sql語句實(shí)現(xiàn)數(shù)據(jù)庫(kù)數(shù)據(jù)的重現(xiàn),物理備份就是備份數(shù)據(jù)文件了,比較形象點(diǎn)就是cp下數(shù)據(jù)文件,但真正備份的時(shí)候自然不是的cp這么簡(jiǎn)單。這兩種備份各有優(yōu)劣,一般來說,物理備份恢復(fù)速度比較快,占用空間比較大,邏輯備份速度比較慢,占用空間比較小。
官方地址: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的熱備份。但是由于是邏輯備份,所以速度不是很快,適合備份數(shù)據(jù)比較小的場(chǎng)景。Mysqldump完全備份+二進(jìn)制日志可以實(shí)現(xiàn)基于時(shí)間點(diǎn)的恢復(fù)。
   對(duì)myisam存儲(chǔ)引擎的表,只能使用溫備份,這個(gè)時(shí)候要防止數(shù)據(jù)的寫入,所以先加上讀鎖。這個(gè)時(shí)候也可以進(jìn)入數(shù)據(jù)庫(kù)手動(dòng)加讀鎖,不過這樣比較麻煩,可以在mysqldump工具中直接有一個(gè)加鎖的選擇,就是 --lock-all-tables ,例如mysqldump --databases test --lock-all-tables --flush-logs > /tmp/backup_test_`date+%F-%H-%M`.sql。如果是備份單張表,直接在庫(kù)名字test后面加上表名字即可。
   對(duì)于innodb存儲(chǔ)引擎表,可以熱備,不必對(duì)數(shù)據(jù)庫(kù)進(jìn)行加鎖的操作,加一個(gè)選項(xiàng)可以進(jìn)行熱備份,--single-transaction,例如:mysqldump --databases test --single-transaction --flush-logs--master-data=2> /tmp/backup_test_`date +%F-%H-%M`.sql。

PS:注意點(diǎn),恢復(fù)的時(shí)候記得關(guān)閉二進(jìn)制日志:
mysql> set sql_log_bin=0;
因?yàn)檫@是基于邏輯備份方式,所以執(zhí)行sql會(huì)插入數(shù)據(jù),會(huì)記錄到二進(jìn)制日志里面去,因?yàn)檫@事恢復(fù),所以插入的二進(jìn)制日志基本沒有啥意思,可以關(guān)閉掉,縮短恢復(fù)時(shí)間。

2.2 基于LVM快照備份
   在物理備份中,有基于文件系統(tǒng)的物理備份(LVM的快照),也可以直接用tar之類的命令對(duì)整個(gè)數(shù)據(jù)庫(kù)目錄進(jìn)行打包備份,但是這些只能進(jìn)行泠備份,不同的存儲(chǔ)引擎?zhèn)浞莸囊膊灰粯?,myisam自動(dòng)備份到表級(jí)別,而innodb不開啟獨(dú)立表空間的話只能備份整個(gè)數(shù)據(jù)庫(kù)。
下面就介紹下使用LVM的快照功能進(jìn)行備份為了安全,首先在數(shù)據(jù)庫(kù)上施加讀鎖
mysql>FLUSH TABLES WITH READ LOCK;
刷新一下二進(jìn)制日志,便于做時(shí)間點(diǎn)恢復(fù)
mysql>FLUSH LOGS;
然后創(chuàng)建快照卷
lvcreate –L 1G –s –n data-snap –p –r/dev/myvg/mydata
最后進(jìn)入數(shù)據(jù)庫(kù)釋放讀鎖
UNLOCK TABLES;
掛載快照卷進(jìn)行備份
mount –r /dev/myvg/data-snap /mnt/snap
然后對(duì)/mnt/snap下的文件進(jìn)行打包備份
還原的時(shí)候,關(guān)閉mysqld,然后備份二進(jìn)制日志后將原來備份的文件還原進(jìn)去,然后通過二進(jìn)制日志還原到出錯(cuò)的時(shí)間點(diǎn)(通過二進(jìn)制還原時(shí)間點(diǎn)的時(shí)候不要忘了暫時(shí)關(guān)閉二進(jìn)制日志)

   在2010年到2012年之間,mysql數(shù)據(jù)庫(kù)部署在亞馬遜的云環(huán)境中,他們提供了LVM快照,蠻方便快捷的,使用lvm快照,在亞馬遜的萬兆網(wǎng)絡(luò)下,恢復(fù)起來也迅速無比。

2.3 tar包備份
0,準(zhǔn)備從庫(kù)第一次數(shù)據(jù)備份,臨時(shí)鎖所有表,開啟窗口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:這個(gè)窗口不能exit,要一直保持知道tar完包為止。
--重新開一個(gè)shell窗口,去數(shù)據(jù)文件目錄tar包
開啟窗口2
 [root@myfstv_21_11 data]# tar -zcvf mysqla1.tar.gz mysqla
 tar -zcvf mysqla1.tar.gz mysqla  壓縮完畢

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

copy tar包到另外一個(gè)mysql庫(kù)服務(wù)器上面,覆蓋data目錄,然后重啟mysql數(shù)據(jù)庫(kù)服務(wù)。

2.4 percona提供的xtrabackup工具
   支持innodb的物理熱備份,支持完全備份,增量備份,而且速度非??欤С謎nnodb存儲(chǔ)引起的數(shù)據(jù)在不同數(shù)據(jù)庫(kù)之間遷移,支持復(fù)制模式下的從機(jī)備份恢復(fù)備份恢復(fù),為了讓xtrabackup支持更多的功能擴(kuò)展,可以設(shè)立獨(dú)立表空間,打開 innodb_file_per_table功能,啟用之后可以支持單獨(dú)的表備份。
下載地址為:http://www.percona.com/software/percona-xtrabackup,
參考文章地址:http://www.linuxidc.com/Linux/2015-03/115293.htm
支持在線熱備與恢復(fù)
大數(shù)據(jù)量的時(shí)候,備份恢復(fù)都比較快
xtrabackup可以實(shí)現(xiàn)完全備份,增量備份,以及部分備份。

xtrabackup備份原理
   xtraBackup基于InnoDB的crash-recovery功能。它會(huì)復(fù)制innodb的data file,由于不鎖表,復(fù)制出來的數(shù)據(jù)是不一致的,在恢復(fù)的時(shí)候使用crash-recovery,使得數(shù)據(jù)恢復(fù)一致。
   InnoDB維護(hù)了一個(gè)redo log,又稱為transaction log,事務(wù)日志,它包含了innodb數(shù)據(jù)的所有改動(dòng)情況。當(dāng)InnoDB啟動(dòng)的時(shí)候,它會(huì)先去檢查data file和transaction log,并且會(huì)做二步操作:
xtraBackup在備份的時(shí)候, 一頁一頁地復(fù)制innodb的數(shù)據(jù),而且不鎖定表,與此同時(shí),XtraBackup還有另外一個(gè)線程監(jiān)視著transactions log,一旦log發(fā)生變化,就把變化過的log pages復(fù)制走。為什么要急著復(fù)制走呢?因?yàn)閠ransactions log文件大小有限,寫滿之后,就會(huì)從頭再開始寫,所以新數(shù)據(jù)可能會(huì)覆蓋到舊的數(shù)據(jù)。
   在prepare過程中,XtraBackup使用復(fù)制到的transactionslog對(duì)備份出來的innodb data file進(jìn)行crash recovery。

看完了這篇文章,相信你對(duì)“MySQL數(shù)據(jù)庫(kù)備份種類以及常用備份工具有哪些”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI