MySQL備份恢復(fù)的4種正確姿勢(shì)

MySQL

4種備份恢復(fù)的方式

  • mysqldump
  • mysqlbackup
  • mysqlhotcopy
  • xtrabackup/innobackupex

mysqldump

在日常工作中鹿寻,我們會(huì)經(jīng)常使用mysqldump的命令來創(chuàng)建SQL格式的轉(zhuǎn)儲(chǔ)文件來備份數(shù)據(jù)庫(kù)蚀浆,或者我們把數(shù)據(jù)導(dǎo)出后做數(shù)據(jù)遷移甜攀,主備搭建等操作荠医。mysqldump是一個(gè)邏輯備份工具暑劝,復(fù)制原始的數(shù)據(jù)庫(kù)對(duì)象定義和表數(shù)據(jù)產(chǎn)生一組可執(zhí)行的SQL語句侣肄。默認(rèn)情況下生成insert語句瑞躺,也能生成其他分隔符的輸出或XML格式的文件蚜印。
使用方法:

shell> mysqldump [arguments] > filename.sql

備份所有的數(shù)據(jù)庫(kù)

shell > mysqldump --all-databases > all_databases.sql
#不包含系統(tǒng)自帶的庫(kù)INFORMATION_SCHEMA,performance_schema,sys

備份指定數(shù)據(jù)庫(kù)

shell > mysqldump --databases db1 db2 db3 > db.sql
# 如果只包含一個(gè)數(shù)據(jù)庫(kù)莺禁,可以省略  --databases 直接使用mysqldump db1 > db1.sql
#區(qū)別:不加 --databases的話,數(shù)據(jù)庫(kù)轉(zhuǎn)儲(chǔ)輸出不包含創(chuàng)建數(shù)據(jù)庫(kù)的語句和use語句窄赋,所以可以直接導(dǎo)入到其他名字的數(shù)據(jù)庫(kù)里哟冬。

備份指定表

mysqldump --user[username] --password=[password] [databases name] [table name] > table_name.sql

幾個(gè)重要的參數(shù)

mysqlbackup

mysqlbackup是Oracle公司提供的針對(duì)企業(yè)的備份軟件,全稱MySQL Enterprise Backup,是一個(gè)收費(fèi)軟件忆绰。

全量備份

mysqlbackup --user=root --password=ucjmh --databases='t1' --encrypt-password=1 --with-timestamp --backup-dir=/u01/backup/ backup 

解釋一下參數(shù):
databases 要備份的數(shù)據(jù)庫(kù)
with-timestamp 產(chǎn)生一個(gè)當(dāng)前時(shí)間的備份目錄浩峡。mysqlbackup這個(gè)工具要求一個(gè)空目錄才能做備份。所以這個(gè)會(huì)常用错敢。
backup-dir 備份的目錄 翰灾。
compress:壓縮備份 這個(gè)提供了多種壓縮方法和壓縮級(jí)別。1--9,壓縮比依次遞增稚茅。
backup 是備份的方式纸淮, 一共有如下幾種方式
Backup operations: backup, backup-and-apply-log, backup-to-image
Update operations: apply-log, apply-incremental-backup
Restore operations: copy-back, copy-back-and-apply-log
Validation operation: validate
Single-file backup operations: image-to-backup-dir, backup-dir-to-image, list-image, extract

其實(shí),在大多數(shù)情況下,單個(gè)文件備份,使用backup-to-image命令創(chuàng)建,性能優(yōu)于backup亚享。buckup這個(gè)命令只執(zhí)行一個(gè)完整的備份過程的初始階段咽块。需要通過再次運(yùn)行mysqlbackup運(yùn)用apply-log 命令,使備份一致欺税。

mysqlbackup --user=root --password=ucjmh --databases='t1' --encrypt-password=1 --with-timestamp --backup-dir=/u01/backup/2017-04-28_12-49-35/ apply-log

當(dāng)然你可以直接用backup-and-apply-log 不過這個(gè)時(shí)候的備份將不能用于增量了侈沪。

增量備份

mysqlbackup --user=root --password=ucjmh --databases='t1' --encrypt-password=1 --with-timestamp --backup-dir=/u01/backup/ --incremental --incremental-base=dir:/u01/backup/2017-04-28_12-49-35 --incremental-backup-dir=/u01/backup/incremental backup
這個(gè)是基于上次的備份做的備份,當(dāng)然也可以基于某一個(gè)log position之后做晚凿。

--incremental:代表增量備份亭罪; 
--incremental-base:上次全備的目錄;
--incremental-backup-dir:增量備份的保存的目錄

backup-to-image

mysqlbackup --user=root --password=ucjmh --databases='t1' --encrypt-password=1 --with-timestamp --backup-dir=/u01/backup/ --backup-image=all.mbi backup-to-image

備份之后可以很清楚的發(fā)現(xiàn)這個(gè)比backup要節(jié)省很多空間晃虫,把所有的文件都以二進(jìn)制的方式放在了all.mbi這個(gè)文件里皆撩,可以使用list-image來查看具體內(nèi)容扣墩。

mysqlhotcopy

mysqlhotcopy使用lock tables哲银、flush tables和cp或scp來快速備份數(shù)據(jù)庫(kù).它是備份數(shù)據(jù)庫(kù)或單個(gè)表最快的途徑,完全屬于物理備份,但只能用于備份MyISAM存儲(chǔ)引擎和ARCHIVE引擎扛吞,并且是一個(gè)服務(wù)器命令,只能運(yùn)行在數(shù)據(jù)庫(kù)目錄所在的機(jī)器上.與mysqldump備份不同,mysqldump屬于邏輯備份,備份時(shí)是執(zhí)行的sql語句.使用mysqlhotcopy命令前需要要安裝相應(yīng)的軟件依賴包.

備份一個(gè)庫(kù)

mysqlhotcopy db_name [/path/to/new_directory]

備份一張表

mysqlhotcopy db_name./table_name/ /path/to/new_directory

xtrabackup/innobackupex

Percona XtraBackup是一款基于MySQL的熱備份的開源實(shí)用程序荆责,它可以備份5.1到5.7版本上InnoDB,XtraDB,MyISAM存儲(chǔ)引擎的表滥比, Xtrabackup有兩個(gè)主要的工具:xtrabackup、innobackupex 做院。
(1)xtrabackup只能備份InnoDB和XtraDB兩種數(shù)據(jù)表盲泛,而不能備份MyISAM數(shù)據(jù)表   
(2)innobackupex則封裝了xtrabackup,是一個(gè)腳本封裝键耕,所以能同時(shí)備份處理innodb和myisam寺滚,但在處理myisam時(shí)需要加一個(gè)讀鎖。

首先我們先來簡(jiǎn)單的了解一下xtrabackup是怎么工作的屈雄。xtrabackup基于innodb的crash-recovery(實(shí)例恢復(fù))功能村视,先copy innodb的物理文件(這個(gè)時(shí)候數(shù)據(jù)的一致性是無法滿足的),然后進(jìn)行基于redo log進(jìn)行恢復(fù)酒奶,達(dá)到數(shù)據(jù)的一致性蚁孔。

全備

xtrabackup --backup --target-dir=/data/backup/base

增量備份
當(dāng)我們做過全量備份以后會(huì)在目錄下產(chǎn)生xtrabackup_checkpoints的文件 這里面記錄了lsn和備份方式,我們可以基于這次的全量做增量的備份惋嚎。

$cat xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0
to_lsn = 1676085
last_lsn = 1676085
compact = 0
recover_binlog_info = 0

xtrabackup --backup --target-dir=/data/backup/inc1 --incremental-basedir=/data/backup/base

這個(gè)時(shí)候xtrabackup也是去打開了xtrabackup_checkpoints文件進(jìn)行上一次備份的信息查看杠氢。這個(gè)時(shí)候去查看增量備份的xtrabackup_checkpoints也記錄了這些信息。

$cat xtrabackup_checkpoints
backup_type = incremental
from_lsn = 1676085
to_lsn = 1676085
last_lsn = 1676085
compact = 0
recover_binlog_info = 0

這也意味著你可以在增量的備份上繼續(xù)增量的備份另伍。

同樣的鼻百,xtrabackup也支持壓縮(--compress)、加密(--encrypt)摆尝、并行(--parallel)等操作愕宋,但是和mysqlbackup不同的是這個(gè)沒有同時(shí)的備份binlog,而mysqlbackup是備份了binlog的。

參考資料

How Percona XtraBackup Works

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末结榄,一起剝皮案震驚了整個(gè)濱河市中贝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌臼朗,老刑警劉巖邻寿,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異视哑,居然都是意外死亡绣否,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門挡毅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蒜撮,“玉大人,你說我怎么就攤上這事《文ィ” “怎么了取逾?”我有些...
    開封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)苹支。 經(jīng)常有香客問我砾隅,道長(zhǎng),這世上最難降的妖魔是什么债蜜? 我笑而不...
    開封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任晴埂,我火速辦了婚禮,結(jié)果婚禮上寻定,老公的妹妹穿的比我還像新娘儒洛。我一直安慰自己,他們只是感情好狼速,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開白布晶丘。 她就那樣靜靜地躺著,像睡著了一般唐含。 火紅的嫁衣襯著肌膚如雪浅浮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天捷枯,我揣著相機(jī)與錄音滚秩,去河邊找鬼。 笑死淮捆,一個(gè)胖子當(dāng)著我的面吹牛郁油,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播攀痊,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼桐腌,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了苟径?” 一聲冷哼從身側(cè)響起案站,我...
    開封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎棘街,沒想到半個(gè)月后蟆盐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡遭殉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年石挂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片险污。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡痹愚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情拯腮,我是刑警寧澤窖式,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站疾瓮,受9級(jí)特大地震影響脖镀,放射性物質(zhì)發(fā)生泄漏飒箭。R本人自食惡果不足惜狼电,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望弦蹂。 院中可真熱鬧肩碟,春花似錦、人聲如沸凸椿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽脑漫。三九已至髓抑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間优幸,已是汗流浹背吨拍。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留网杆,地道東北人羹饰。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像碳却,于是被迫代替她去往敵國(guó)和親队秩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容