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 備份
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
- mysql的資料庫備份與恢復MySql資料庫
- Mysql技術內幕InnoDB儲存引擎讀書筆記--《八》備份與恢復MySql儲存引擎筆記
- 分散式文件儲存資料庫之MongoDB備份與恢復分散式資料庫MongoDB
- 備份與恢復:polardb資料庫備份與恢復資料庫
- Mysql的備份與恢復MySql
- MySQL備份與恢復MySql
- 【備份恢復】Oracle 資料備份與恢復微實踐Oracle
- Redis的資料備份與恢復Redis
- 資料庫的備份與恢復資料庫
- Linux下MySQL資料庫的備份與恢復LinuxMySql資料庫
- MySQL備份與恢復——基於Xtrabackup物理備份恢復MySql
- Backup And Recovery User's Guide-備份和恢復介紹-備份和恢復的目的-資料儲存GUIIDE
- Mysql備份與恢復(1)---物理備份MySql
- Mysql 備份與恢復 二MySql
- RMAN備份恢復——備份集儲存位置改變
- 【備份恢復】從備份恢復資料庫資料庫
- 備份與恢復--從備份的歸檔日誌中恢復資料
- mysqldump使用方法(MySQL資料庫的備份與恢復)MySql資料庫
- Oracle資料泵的備份與恢復Oracle
- oracle資料庫的備份與恢復Oracle資料庫
- Oracle資料庫備份與恢復之三:OS備份/使用者管理的備份與恢復Oracle資料庫
- MySQL 非常規恢復與物理備份恢復MySql
- Mysql備份與恢復(2)---邏輯備份MySql
- MySQL備份和恢復資料表的方法MySql
- Mysql的幾種備份與恢復MySql
- postgresql備份與恢復資料庫SQL資料庫
- mongo資料庫備份與恢復Go資料庫
- Informix資料庫備份與恢復ORM資料庫
- DB2_建立備份恢復使用自動儲存的資料庫DB2資料庫
- 入門MySQL——備份與恢復MySql
- 《入門MySQL—備份與恢復》MySql
- MySQL備份與恢復操作解析MySql
- MySQL備份與恢復——實操MySql
- MySQL備份與恢復簡介MySql
- Effective MySQL之備份與恢復MySql
- 重新學習Mysql資料庫3:Mysql儲存引擎與資料儲存原理MySql資料庫儲存引擎
- Mysql備份恢復MySql