邏輯備份用於備份數據庫的結構(CREAET DATABASE、CREATE TABLE)和數據(INSERT),這種備份類型適合數據量小、跨SQL服務器、須要修改數據等場景。如mysqldump
命令就是產生一個邏輯備份工具,使用mysqldump
輸出的文件包含CREATE TABLE
和INSERT
語句,可以直接重建表內容和表結構。mysql
使用邏輯備份有如下優點和劣勢:sql
物理備份是包括存儲數據庫內容的目錄和文件的副本,這種類型的備份適用於須要在出現問題時快速恢復的大型重要數據庫。shell
在線備份須要mysql服務器處理運行狀態,以便備份工具從mysql服務器中獲取數據。離線備份表示mysql服務器處理中止狀態。兩種備份形式也能夠稱爲「熱備份」和「冷備份「。數據庫
mysqldump
屬於邏輯備份命令,使用mysqldump
備份的優點是它很是方便和靈活,能夠直接編輯輸出文件或者使用導入到其餘的SQL服務器中去,可是它不能用做備份大量數據的快速解決方案,對於大數據量,即便備份花費的時候能夠接受,可是恢復數據也可能會很是緩慢,由於執執行SQL語句會涉及磁盤I/O進行插入,建立索引等。mysqldump
的使用方式很是簡單:服務器
shell> mysqldump [options] db_name [tbl_name ...] shell> mysqldump [options] --databases db_name ... shell> mysqldump [options] --all-databases
使用mysqldump
備份時要注意:數據庫的一致狀態,在執行mysqldump
命令時要保證數據不會再發生變動,保持數據的一致性有二種方法:微信
REPEATABLE READ
使用REPEATABLE READ
事務隔離級別執行mysqldump
命令(使用事務保持數據庫的一致狀態):架構
mysqldump --master-data=2 \ --flush-logs \ --single-transaction \ --all-databases > /backup/`date +%F-%H`-mysql-all.sql
備份參數說明:工具
爲了保證複製文件的完整性,備份原始文件最好是中止mysql服務器,複製原始文件備份由如下步驟完成:大數據
$ mysqladmin shutdown
$ tar cf /tmp/dbbackup.tar ./data
$ mysqld_safe
使用mysqldump
和tar
備份或多或少都會對業務產生影響,使用mysqldump
備份須要對數據加鎖,加鎖就意味着其餘客戶端操做受到限制。使用tar
命令須要中止服務器直接致使數據庫服務器不可用,有沒有辦法能解決這兩種問題呢?答案是有的,就是使用主從備份模式。日誌
在單機的基礎上增長一臺Slave機器對Master機器的數據進行同步:
開始備份時對Slave進行備份,這樣即便Slave停機或對數據加鎖也不會影響業務的正常使用,若是公司有條件或業務很是重要能夠選擇這種方案來備份數據。
歡迎關注微信公衆號《架構文摘》,高質量技術文章第一時間推送。