mysql備份、恢複之mysqldump

來源:互聯網
上載者:User

標籤:mysql   mysqldump   databases   master   全量   增量   

  mysqldump是mysql用於轉儲存資料庫的公用程式。它主要產生一個SQL指令碼,其中包含從頭重新建立資料庫所必需的命令CREATE TABLE INSERT等

 mysqldump 文法 : 

  預設配置讀取路徑:  /etc/mysql/my.cnf     /etc/my.cnf    ~/.my.cnf  

   Usage: mysqldump [OPTIONS] database [tables] 

   OR   mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] 

   OR   mysqldump [OPTIONS] --all-databases [OPTIONS]

常用參數 :      -u, --user=name         指定使用者     -h, --host=name         指定主機     -p, --password[=name]      指定密碼     -A, --all-databases       指定所有庫,-A與--all-databases不同時使用     -B, --databases         只指定--databases表示備份單個資料庫;多資料庫之間使用空格隔開;                     如果不指定--databases表示備份整個資料庫;只指定dbname表示備份單張表;多表之間使用空格隔開    --master-data[=#]         0 表示關閉,預設值為 0                      1 表示開頭列印CHANGE MASTER命令資訊,在複製情境中有用                      2 表示添加註釋資訊,記錄當前所處二進位日誌及所處位置     --single-transaction       如果全部為 InnoDB引擎表,則不需要使用 --lock-all-tables;                     基於此選項能實現熱備InnoDB表;會啟動單個大事務,對全域服務影響可能是持久的    --lock-all-tables         執行備份前請求鎖定表,一般只鎖定當前要備份的資料庫及表     --add-drop-database        在恢複之前先刪除已經存在的對應資料庫     --add-drop-table         在恢複之前先刪除已經存在的對應表     -C, --compress          將資料先壓縮後通過網路傳輸     -E, --events           備份資料同時,備份事件調度器代碼     -R, --routines          備份資料同時,備份預存程序和儲存函數     -d, --no-data          表示只備份表結構不備份資料,複製表結構、空庫至其它伺服器時有用.其它任何時候不可用      --opt               同時啟動各種進階選項

 備份方式 : 

    全量+增量+二進位日誌 

      前提需要在配置中添加參數 : 

        default-storage-engine = InnoDB       設定預設儲存引擎為InnoDB 

        innodb_file_per_table=1            設定每表單個資料表空間 

        log-bin=mysql-bin                啟用二進位功能

備份過程 :     全量備份 :       使用InnoDB引擎,備份使用--single-transaction選項不需要鎖定表即實現熱備;使用非InnoDB引擎,備份需要使用--lock-all-tables選項進行請求鎖定所有表後開始備份       mysqldump -uroot -pmypass --single-transaction --all-databases --master-data=2 > /backup/mysql_fullbak.sql     增量備份 :       mysql>SHOW MASTER STATUS;              查看當前處於哪個記錄檔及位置          less  /backup/mysql_fullbak.sql     查看從哪個位置開始       mysqlbinlog --start-position=4579 --stop-position=4868 mysql-bin.000015 > /backup/increment.sql  指定開始及結束位置匯出成增量備份          二進位記錄備份:       mysql>INSERT INTO test (Name,Age) VALUES (‘tom‘,18);       增量備份後,插入一條資料      mysql>DROP DATABASE hello;                                 此時刪除資料庫      mysql>SHOW MASTER STATUS;                           查看當前處於哪個記錄檔及位置      mysqlbinlog --start-position=4868 mysql-bin.000015  查看資料庫崩潰前二進位日誌開始位置,結束位置必須是資料庫刪除之前位置      mysqlbinlog --start-position=4868 --stop-position=5062 mysql-bin.000015 > /tmp/hello.sql 將二進位日誌啟動時位置至崩潰前位置資料匯出
恢複過程 :     前提 : 清空資料目錄下所有檔案,重新初始化資料庫       mysql>SET GLOBAL sql_log_bin=0;      恢複時需要臨時關閉二進位日誌,如不關閉,恢複資料將記錄進二進位日誌增加日誌管理難度      mysql>FLUSH LOGS;                    手動對二進位日誌進行一次滾動      mysql < /backup/mysql_fullbak.sql    恢複全量備份      mysql < /backup/increment.sql        恢複增量備份      mysql < /tmp/hello.sql               恢複崩潰前置出位元據      mysql>SET GLOBAL sql_log_bin=1;      恢複完成開啟二進位日誌

  恢複後需要使用 mysqlcheck -uroot -pmypass -c -all-databases 檢查所有表是否存在問題,所有恢複完成後請記得對資料庫做一次全量備份


  至此,使用mysqldump備份恢複完成,如有錯誤請大家指教!

本文出自 “Why no !” 部落格,請務必保留此出處http://mydove.blog.51cto.com/8487472/1790176

mysql備份、恢複之mysqldump

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.