5、MySQL热备份及恢复
與冷備份正好相反,熱備份是在數據庫處于運行狀態時直接備份,不影響現有業務的正常進行。熱備份又細分為邏輯備份和裸文件備份,下面我們介紹邏輯備份和冷備份以及它們常用的備份和恢復的方法。
邏輯備份
邏輯備份的最大優點就是對于各種存儲引擎,都可以用同樣的方法來備份。而冷備份則不同,不同的存儲引擎的備份方法也各不相同。因此,對于不同存儲引擎混合的數據庫,用邏輯備份會更簡單一些。
邏輯備份可以說是最簡單,也是目前中小型系統最常用的備份方法。邏輯備份主要有以下幾種方法:
1)mysqldump
mysqldump 是 MySQL 自帶的邏輯備份工具。它的備份原理是通過協議連接到 MySQL 數據庫,將需要備份的數據查詢出來,然后將查詢出的數據轉換成對應的 INSERT 語句。當我們需要還原恢復這些數據時,只要執行這些 INSERT 語句,就能將對應的數據還原。所以有的資料也將這種備份方式稱為 INSERT 備份。
恢復數據時可以使用 mysql -uroot -p <backup.sql 直接調用備份文件執行所有命令,將數據完全恢復到備份時候的狀態。如果已經連接上了 MySQL 服務器,那么可以通過 source /path/backup.sql 來進行恢復。
我們在《MySQL mysqldump備份數據庫》和《MySQL恢復數據庫》中詳細介紹了上面所講的備份和恢復數據的方法。
2)SELECT INTO…OUTFILE
SELECT INTO…OUTFILE 語句可以把表數據導出到一個文本文件中,且能將數據庫中的表數據以特定分隔符進行分隔后記錄在文本文件中,以達到邏輯備份的效果。
這種備份方式與 mysqldump 方法相比,使用的存儲空間更小,數據格式更加清晰明確,編輯方便。但是這種方法只能導出或導入數據的內容,不包括表的結構,如果表的結構文件損壞,則必須先恢復原來的表的結構。而且這種方法不能在同一個備份文件中存在多個表的備份數據,增加了文件維護和恢復的成本。
這種備份方法恢復起來會稍微麻煩一點,需要一個表一個表通過相關命令來進行恢復。當然如果是通過腳本來實現自動多表恢復也是比較方便的。恢復方法有 2 個,一個是通過 MySQL 的 LOAD DATA INFILE 命令來恢復數據,另一種方法就是通過 MySQL 提供的使用工具 mysqlimport 來進行恢復。
我們在《MySQL導出表數據》和《MySQL數據庫恢復(LOAD DATA)》中詳細介紹了上面所講的備份和恢復數據的方法。
3)mydumper
mydumper 是針對 MySQL 數據庫備份的一個輕量級第三方的開源工具,備份方式為邏輯備份。它支持多線程,備份速度遠高于原生態的 mysqldump 以及其它眾多優異特性。與其配套的相應恢復數據為 myloader 工具。DBA 稱 mydumper 和 myloader 為備份界的“小鋼炮”。
我們可以看出所謂的邏輯備份就是備份 SQL 語句,然后恢復數據時執行備份 SQL,從而實現數據庫數據的重現。邏輯備份完成后所形成的文件都可以直接編輯。
邏輯備份的作用如下:
- 通過邏輯備份,我們可以僅僅恢復備份中的部分數據而不需要全部恢復。不會影響不相關的數據;
- 通過全庫的邏輯備份,我們可以在新的 MySQL 環境下完全重建出一個與備份時完全一樣的數據庫,并且不受平臺類型限制;
- 通過特定條件的邏輯備份,我們可以將某些特定數據輕松遷移(或者同步)到其它的 MySQL 或另外的數據庫環境。
裸文件備份
裸文件備份主要在底層復制數據文件,所以備份速度要比邏輯備份更快。
我們利用 Percona 公司發布的一個 XtraBackup 熱備份工具來完成裸文件備份,它是 Percona 公司的開源項目,據官方介紹它是世界上唯一 一款開源的能夠對 InnoDB 和 XtraDB 數據庫進行熱備的工具。
它的優點就是備份與恢復過程的速度很快,安全可靠,而且在備份過程中不會縮表,不影響現有業務。但它目前還是不能對表結構文件和其它非事務類型的表進行備份。
總結
以上是生活随笔為你收集整理的5、MySQL热备份及恢复的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2、MySQL备份类型
- 下一篇: 6、mysqldump备份数据库(附带实