mysql資料備分與步聚

來源:互聯網
上載者:User

標籤:mysql備份資料步聚   mysql備份工具有哪些   mysql備份前需要做什麼   

 

mysql備份和恢複:
 1、災難恢複;
 2、審計;
 3、測試;

 

備份:目的用於恢複;對備份資料做恢複測試;

 

 備份類型:

  根據備份時,資料庫伺服器是否線上:
   冷備:cold backup
   溫備:warm backup
   熱備:hot backup

 

  根據備份的資料集:
   完全備份:full backup
   部份備份: partial backup

 

 根據備份時的介面(直接備份資料檔案還是通過mysql伺服器匯出資料):
   物理備份:直接複製(歸檔)資料檔案的備份方式;physical backup
   邏輯備份:把資料從庫中提出出來儲存為文字檔;logical backup
    mysqldump

 

 根據備份時是備份整個資料還是僅備份變化的資料:
   完全備份:full backup
   增量備份:incremental backup
   差異備份:differential backup

 

備份策略:
  選擇備份方式
  選擇備份時間
  考慮到恢複成本
   恢複時間長度

  備份成本:
   鎖時間
   備份時間長度
   備份負載

 

備份對象:
  資料
  設定檔
  代碼:預存程序,儲存函數,觸發器
  OS相關的設定檔,如crontab配置計劃及相關的指令碼

  跟複製相關的配置;
  二進位記錄檔

 

 備份工具:
  mysqldump:邏輯備份工具
   InnoDB熱備、MyISAM溫備、Aria溫備
   備份和恢複過程較慢
  mysqldumper: 多線程的mysqldump

   很難實現差異或增量備份;

  lvm-snapshot:
   接近於熱備的工具:因為要先請求全域鎖,而後建立快照,並在建立快照完成後釋放全域鎖;
   使用cp、tar等工具進行物理備份;
   備份和恢複速度較快;

    很難實現增量備份,並且請求全域需要等待一段時間,在繁忙的伺服器上尤其如此;

  SELECT clause INTO OUTFILE ‘/path/to/somefile‘
  LOAD DATA INFILE ‘/path/from/somefile‘
   部份備份工具, 不會備份關係定義,僅備份表中的資料;
   邏輯備份工具,快於mysqldump

 

 Innobase: 商業備份工具, innobackup
  Xtrabackup: 由Percona提供的開源備份工具
   InnoDB熱備,增量備份;
   MyISAM溫備,不支援增量;
   物理備份,速度快;

  mysqlhotcopy: 幾乎冷備

 

mysqldump:
  mysqldump [options] [db_name [tbl_name ...]]

  備份單個庫:mysqldump [options] db_name
   恢複時:如果目標庫不存在,需要事先手動建立

  --all-databases: 備份所有庫

  --databases db1 db2 ...: 備份指定的多個庫

 注意:備份前要加鎖

  --lock-all-tables:請求鎖定所有表之後再備份,對MyISAM、InnoDB、Aria做溫備

  --single-transaction: 能夠對InnoDB儲存引擎實現熱備;

  備份代碼:
   --events: 備份事件調度器代碼
   --routines: 備份預存程序和儲存函數
   --triggers:備份觸發器

  備份時滾動日誌:
   --flush-logs: 備份前、請求到鎖之後滾動日誌;

  複製時的同步位置標記:
   --master-data=[0|1|2]
    0: 不記錄
    1:記錄為CHANGE MASTER語句
    2:記錄為注釋的CHANGE MASTER語句

  

使用mysqldump備份:
   請求鎖:--lock-all-tables或使用--singe-transaction進行innodb熱備;
   滾動日誌:--flush-logs
   選定要備份的庫:--databases
   記錄二進位記錄檔及位置:--master-data=

  恢複:
   建議:關閉二進位日誌,關閉其它使用者串連;

 

 備份策略:基於mysqldump
   備份:mysqldump+二進位記錄檔;
    周日做一次完全備份:備份的同時滾動日誌
    周一至周六:備份二進位日誌;
   恢複:
    完全備份+各二進位記錄檔中至此刻的事件

   對MySQL設定檔,以及與MySQL相關的OS設定檔在每次修改後都應該直接進行備份;

  

  備份步驟:
  1、請求全域鎖,並滾動日誌
  mysql> FLUSH TABLES WITH READ LOCK;
  mysql> FLUSH LOGS;

  2、做二進位記錄檔及位置標記(手動進行);
  # mysql -e ‘show master status‘ > /path/to/somefile

  3、建立快照卷
  # lvcreate -L   -s -n    -p r  /path/to/some_lv

  4、釋放全域鎖
  mysql> UNLOCK TABLES;

  5、掛載快照卷並備份
  # cp

  6、備份完成之後,刪除快照卷

  恢複:
  1、二進位日誌儲存好;
   提取備份之後的所有事件至某sql指令碼中;
  2、還原資料,修改許可權及屬主屬組等,並啟動mysql
  3、做即時點還原

  mylvbackup: perl指令碼,快速基於Lvm備份mysql

 xtrabackup:

  

 

備份 注意:
  1、將資料和備份放在不同的磁碟裝置上;異機或異地備份儲存較為理想;
  2、備份的資料應該周期性地進行還原測試;
  3、每次災難恢複後都應該立即做一次完全備份;
  4、針對不同規模或層級的資料量,要定製好備份策略;
  5、二進位日誌應該跟資料檔案在不同磁碟上,並周期性地備份好二進位記錄檔;

 從備份中恢複應該遵循步驟:
  1、停止MySQL伺服器;
  2、記錄伺服器的配置和檔案許可權;
  3、將資料從備份移到MySQL資料目錄;其執行方式依賴於工具;
  4、改變更配置置和檔案許可權;
  5、以限制訪問模式重啟伺服器;mysqld的--skip-networking選項可跳過網路功能;
   方法:編輯my.cnf設定檔,添加如下項:
   skip-networking
   socket=/tmp/mysql-recovery.sock
  6、載入邏輯備份(如果有);而後檢查和重放二進位日誌;
  7、檢查已經還原的資料;
  8、重新以完全訪問模式重啟伺服器;
   注釋前面在my.cnf中添加的選項,並重啟;


 SELECT clause INTO OUTFILE ‘‘
 LOAD DATA INFILE ‘‘ INTO TABLE tb_name

本文出自 “散人” 部落格,請務必保留此出處http://zouqingyun.blog.51cto.com/782246/1690149

mysql資料備分與步聚

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.