標籤: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資料備分與步聚