Mysql的備份工具備mysql
實踐:sql
1、使用mysqldump備份。(該條備份能夠在數據量不大狀況下在線重導數據,亦能夠修復主從同步,由於備份出來的sql文件中記錄有binglog和post值)數據庫
mysqldump -uxxx -h127.0.0.1 -pxxx -R --triggers --single-transaction --flush-logs --master-data --database xxx xxx xxx > xxx.sql 服務器
-R : 導出數據庫的存儲過程和函數app
--triggers :爲每一個轉儲的錶轉儲觸發器。該選項默認啓用;用--skip-triggers禁用它。函數
--single-transaction:從服務器轉儲數據以前發出一個BEGIN SQL語句。適用於事務表,例如InnoDB和BDB,由於而後它將在發出BEGIN而沒有阻塞任何應用程序時轉儲一致的數據庫狀態。工具
--flush-logs --master-data :開始轉儲前刷新MySQL服務器日誌文件,若是你想要同時轉儲和刷新日誌,應使用--flush-logs連同--master-data。post
二:使用xtrabackup備份及數據恢復rest
Xtrabackup是一個對InnoDB作數據備份的工具,支持在線熱備份(備份時不影響數據讀寫),是商業備份工具InnoDB Hotbackup的一個很好的替代品。
Xtrabackup有兩個主要的工具:xtrabackup、innobackupex
(1)xtrabackup只能備份InnoDB和XtraDB兩種數據表,而不能備份MyISAM數據表
(2)innobackupex-1.5.1則封裝了xtrabackup,是一個腳本封裝,因此能同時備份處理innodb和myisam,但在處理myisam時須要加一個讀鎖日誌
環境:CentOS 5.4,xtrabackup-1.6.tar.gz
一、首先從http://www.percona.com/下載
wget http://www.percona.com/downloads/XtraBackup/XtraBackup-1.6/Linux/binary/i686/xtrabackup-1.6.tar.gz
二、檢查服務器是否安裝了Mysql版本,若是沒有就要安裝好mysql
my.cnf中必須有 datadir = /usr/local/mysql/var
三、開始安裝xtrabackup
1)解壓
cd /opt
tar zxvf xtrabackup-1.6.tar.gz
2)拷貝innobackupex、xtrabackup、xtrabackup_51 工具到/usr/bin
cp xtrabackup-1.6/bin/innobackupex /usr/bin/innobackupex
cp xtrabackup-1.6/bin/xtrabackup /usr/bin/xtrabackup
cp xtrabackup-1.6/bin/xtrabackup_51 /usr/bin/xtrabackup_51
四、備份並打包壓縮
innobackupex --user=xxx --password=xxx --port=3306 --database=xxx --stream=tar +備份目錄 2>> /opt/innobackupex.log | gzip > xxx.sql.tar.gz
說明:
--database=x單獨對某個庫備份,如果不添加此參數那就那就是對全庫作備份
2>> /opt/innobackupex.log 輸出信息寫入日誌中
gzip > xxx.sql.tar.gz 打包壓縮存儲到該文件中
五、恢復數據
1) 先中止數據庫:service mysqld stop
2) 解壓 tar -izxvf xxx.tar.gz -C datadir目錄
3) 恢復
xtrabackup --prepare --target-dir=datadir目錄
innobackupex-1.5.1 --apply-log datadir目錄
4) 賦權 chown -R mysql.mysql datadir目錄
5) 重啓數據庫 service mysqld restart
進入數據庫查看,一切OK~
恢復最近一個小時以內的數據,可從bin-log日誌中導出數據:
直接本機導出,例如:導出 "2017-06-06 11:25:56"至"2016-06-06 14:56"的binlog數據:
mysqlbinlog --start-datetime="2017-06-06 11:25:56" --stop-datetime="2016-06-06 14:56" mysql-bin.000012 > 000012.sql
再把全部sql導入到數據庫中
mysql -uxxx -pxxx -h127.0.0.1 -f < 000012.sql
-f, --force //若是有錯誤跳過去,繼續執行下面的
使用腳本進行天天4點備份。