標籤:mysql資料備份與恢複
一、MySQL資料備份與恢複
1.資料備份方式:
物理備份:cp tar mysqlhotcopy
邏輯備份:mysqldump mysql
備份策略:
完全備份 差異備份 增量備份
常用備份組合:
完全備份+差異備份
完全備份+增量備份
2.完全備份
缺點: 無法恢複完整備份後產生的資料,只能把資料恢複到備份時的狀態。
範例1
備份:mysqldump -hlocalhost -uroot -p 源庫名 > 路徑/xxx.sql
恢複:mysql -hlocalhost -uroot -p 目標庫名 < 路徑/xxx.sql
源庫名的表示:
所有庫:--all-databases
指定單個庫:庫名
指定單個表:庫名 表名(註:中間沒有.)
備份多個庫:-B 庫1 庫2
3.增量備份
啟動MySQL binlog 日誌,實現資料的增量備份)
二進位日誌(binlog日誌)記錄使資料發生改變的sql語句(除查詢之外的sql語句)
3.1啟用日誌方法:
vim /etc/my.cnf
[mysqld]
log-bin
#log-bin=日誌名
#log-bin=目錄名/日誌名
service mysql restart
註:
預設目錄 /var/lib/mysql/
日誌名字:主機名稱-bin.000001 (當該日誌體積大於500M會自動建立新的日誌)
xxx-bin.index 記錄當前已有的binlog記錄檔名
3.2查看日誌內容:
mysqlbinlog 主機名稱-bin.000001
mysqlbinlog 主機名稱-bin.000001 | mysql -hip -u使用者名稱 -p密碼 資料庫名
3.3手動產生新的binlog日誌
flush logs;
mysql -hip -u使用者名稱 -p密碼 -e "flush logs"
mysqldump -hip -u使用者名稱 -p密碼 --flush-logs 資料庫名 > 備份檔案名
service mysql restart
3.4根據日誌恢複資料
預設mysqlbinlog 命令 把檔案的內容從頭讀到尾
文法格式
mysqlbinlog 主機名稱-bin.000001 | mysql -uroot -p999
mysqlbinlog $(cat /var/lib/mysql/mail-bin.index) | mysql -uroot -p999
選項
字元位移量
--start-position=num 啟始位移量
--stop-position=num 結束位移量
mysqlbinlog --start-position=310 主機名稱-bin.000001
mysqlbinlog --stop-position=578 主機名稱-bin.000001
mysqlbinlog --start-position=201 --stop-position=740 mail-bin.000004
時間點
--start-datetime="yyyy-mm-dd hh:mm:ss" 啟始時間
--stop-datetime="yyyy-mm-dd hh:mm:ss" 結束時間
mysqlbinlog --start-datetime="2014-11-11 23:17:51" --stop-datetime"=2014-11-11 23:17:52" /var/lib/mysql/mail-bin.000006 | mysql -uroot -p999
3.5刪除早於指定版本的binlog日誌
PURGE MASTER LOGS TO ‘binlog檔案‘;
PURGE MASTER LOGS TO "mail-bin.000004";
刪除所有binlog日誌,重建新日誌
RESET MASTER;
本文出自 “劉福” 部落格,請務必保留此出處http://liufu1103.blog.51cto.com/9120722/1656834
MySQL資料備份與恢複