MySQL不同儲存引擎的資料備份與恢復
資料備份的目的很直接也很簡單,就是為了避免因不可預測、偶然的事件而導致的慘重損失,所以資料越重要、變化越頻繁,就越要進行資料備份。在之前的幾篇文章中,我們以MySQL為例對資料備份進行了粗略的解讀,本文我們依然以MySQL為例,講講面對不同的儲存引擎如何做資料備份與恢復。
為了應對不同的資料處理,MySQL提供了十幾種不同的儲存引擎,不過,我們沒有必要一一去了解,因為熟悉使用MySQL的人都知道,比較常用的儲存引擎有兩個,分別是MyISAM和InnoDB。
-
MyISAM是MySQL的ISAM擴充套件格式和預設的資料庫引擎,不支援事務、也不支援外來鍵,但其優勢在於訪問速度快,對事務完整性沒有要求,以select,insert為主的應用基本上可以用這個引擎來建立表。常用於高讀取的應用場景資料庫,支援三種不同型別的儲存結構:靜態型、動態型、壓縮型。
-
InnoDB提供了具有提交、回滾和崩潰恢復能力的事務安全,支援自動增長列,支援外來鍵約束。對比MyISAM引擎,InnoDB寫的處理效率會差一些,並且會佔用更多的磁碟空間以保留資料和索引。
瞭解了MySQL常用的兩種儲存引擎之後,我們就來看看在這兩種引擎中如何進行資料備份和恢復。
MyISAM資料備份
因為MyISAM是儲存成檔案的形式,所以在備份時有多種方法可以使用,並且大多數虛擬主機提供商和INTERNET平臺提供商只允許使用MyISAM格式,掌握MyISAM資料備份就格外重要了。
方法1:檔案複製
為了保持資料備份的一致性,我們可以對相關表執行LOCK TABLES操作,對錶執行FLUSH TABLES。當然,你只需要限制寫操作,這樣能夠保證在複製資料時,其它操作仍然可以查詢表,而FLUSH TABLES是用來確保開始備份前將所有啟用的索引頁寫入硬碟。
標準流程:鎖表、重新整理表到磁碟、複製檔案、解鎖。
方法2:SQL語句備份
SELECT INTO ...OUTFILE或BACKUP TABLE都可以進行SQL級別的表備份,需要注意的是這兩種方法如果有重名檔案,最好是先移除重名檔案。另外,BACKUP TABLE備份需要注意輸出目錄的許可權,改方法只是備份MYD和frm檔案,不備份索引。
方法3: mysqlhotcopy 備份
mysqlhotcopy 是一個 Perl指令碼,使用LOCK TABLES、FLUSH TABLES和cp或scp來快速備份資料庫,但其只能執行在資料庫目錄所在的機器上,且只用於備份MyISAM。
shell> mysqlhotcopy db_name [/path/to/new_directory ]
shell> mysqlhotcopy db_name_1 ... db_name_n /path/to/new_directory
方法4: 備份
Mysqldump既可以備份表結構和資料,也可以備份單個表、單個庫或者所有庫,輸出是SQL語句檔案或者是其它資料庫相容的格式。在之前的文章中,我們較詳細的介紹了Mysqldump,本文就不再贅述了。
shell> mysqldump [options] db_name [tables]
shell> mysqldump [options] ---database DB1 [DB2 DB3...]
shell> mysqldump [options] --all—database
方法5:冷備份
冷備份的方法就很簡單粗暴了,在MySQL伺服器停止服務時,複製所有表檔案。
MyISAM資料備份恢復
不同的備份方式有相應的恢復方法:
-
如果是mysqldump備份,恢復方法是mysql –u root < 備份檔名;
-
如果是mysqlhotcopy或檔案冷/熱複製備份,恢復方法是停止MySQL服務,並用備份檔案覆蓋現有檔案;
-
如果是BACKUP TABLE備份,使用restore table來恢復;
-
如果是SELECT INTO ...OUTFILE備份,使用load data恢復資料或mysqlimport命令。
InnoDB資料備份
MyISAM不支援事務和外來鍵,這使得MySQL使用者往往會面臨一些挑戰,所以,理所當然的當InnoDB支援事務和外來鍵時,即使它的速度較慢,也還是獲得了MySQL使用者的青睞。
方法1:mysqldump
是不是看著很眼熟,沒錯兒,上面MyISAM資料備份的方法其中之一就是它。Mysqldump也可以對InnoDB提供非物理的線上邏輯熱備份,使用方法和MyISAM類似。
方法2:copy file
InnoDB底層儲存的時候會將資料和元資訊存在ibdata*, *.ibd, *.frm, *.ib_logfile*等檔案中,所以備份了這些檔案就相當於備份了InnoDB資料。
方法3:select into
與MyISAM用法一樣。
方法4:商業工具
InnoDB資料備份有很多商業工具可以使用,例如InnoDB Hotbackup,這是一個線上備份工具,即可以在InnoDB資料庫執行時備份InnoDB資料庫; ibbackup,將線上的my.cnf所指向的的資料內容備份到my.backup.cnf指向的資料目錄。
InnoDB資料備份恢復
在使用特定的恢復方法之前,InnoDB資料備份恢復還有兩個通用的方法,分別是InnoDB的日誌自動恢復功能,即重啟mysql服務和“萬能大法”——重啟計算機。
-
如果是mysqldump完全備份,先恢復完全備份,然後再恢復完全備份後的增量日誌備份。
-
如果是select into備份表,則採用load data或mysqlimport恢復。
-
如果是copy file,那麼就停止MySQL服務,備份檔案覆蓋當前檔案,並執行上次完全備份後的增量日誌備份。
【本文整理自多篇網路文章】
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31137683/viewspace-2213906/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Mysql資料備份與恢復MySql
- 備份與恢復:polardb資料庫備份與恢復資料庫
- 分散式文件儲存資料庫之MongoDB備份與恢復分散式資料庫MongoDB
- Linux下MySQL資料庫的備份與恢復LinuxMySql資料庫
- MySQL 備份與恢復MySql
- MySQL-19.資料庫備份與恢復MySql資料庫
- MySQL備份與恢復——基於Xtrabackup物理備份恢復MySql
- Mysql備份與恢復(1)---物理備份MySql
- Mysql資料庫備份及恢復MySql資料庫
- mysqldump使用方法(MySQL資料庫的備份與恢復)MySql資料庫
- MySQL 非常規恢復與物理備份恢復MySql
- Mysql備份與恢復(2)---邏輯備份MySql
- Mysql的幾種備份與恢復MySql
- MySQL備份與恢復——基於MyDumper/MyLoader 邏輯備份恢復MySql
- 【儲存資料恢復】NetApp儲存誤刪除的資料恢復案例資料恢復APP
- 《入門MySQL—備份與恢復》MySql
- MySQL備份與恢復——實操MySql
- 入門MySQL——備份與恢復MySql
- MySQL備份與恢復操作解析MySql
- RabbitMQ如何備份與恢復資料MQ
- postgresql備份與恢復資料庫SQL資料庫
- 【儲存資料恢復】NetApp儲存誤刪資料夾的資料恢復案例資料恢復APP
- Mysql備份恢復MySql
- 【儲存資料恢復】EqualLogic PS系列儲存磁碟故障的資料恢復案例資料恢復
- MySQL備份與恢復——基於OUTFILE /LOAD DATA 邏輯備份恢復MySql
- 重新學習Mysql資料庫3:Mysql儲存引擎與資料儲存原理MySql資料庫儲存引擎
- 使用Mysqldump備份和恢復MySQL資料庫MySql資料庫
- 資料庫備份與恢復技術資料庫
- 【儲存資料恢復】HP EVA儲存誤刪除VDISK的資料恢復案例資料恢復
- MySQL 日誌管理、備份與恢復MySql
- MySQL入門--備份與恢復(三)MySql
- MySQL入門--備份與恢復(一)MySql
- MySQL入門--備份與恢復(二)MySql
- RAC備份恢復之Voting備份與恢復
- 【MySQL】MySQL備份和恢復MySql
- 【VSAN資料恢復】VSAN儲存資料恢復案例資料恢復
- 資料庫備份恢復資料庫
- 【伺服器儲存資料恢復】HP-Lefthand儲存資料恢復案例伺服器資料恢復