mysqldump備份通常採起全庫備份加日誌備份的方式,如天天執行一次全備份,每小時執行一次二進制日誌備份。在mysql故障後可使用全備份和日誌備份將數據恢復到最後一個二進制日誌備份前的任意位置或時間。mysql
binlog簡介:sql
mysql二進制日誌記錄着數據庫的全部增刪改的操做日誌,在這前提上必須開啓binlog,裏面包括這些操做的執行時間。顯示二進制內容可使用mysqlbinlog命令查看。數據庫
binlog的做用:1,主從複製 2,恢復數據庫服務器
開啓binary log功能ide
編輯my.cnf中的log-bin選項開啓二進制日誌:log-bin[=DIR/[filename]]。DIR參數指定二進制文件的存儲路徑,filename參數指定二進制文件的文件名,形式爲filename.number,number的形式爲000001,000002等。每次重啓mysql服務或運行mysql > flush logs;都會生成一個新的二進制日誌文件,這些二進制文件的number會不斷地遞增。其實還會生成一個名爲filename.index的文件,這個文件中存儲全部二進制日誌文件的清單又稱爲二進制文件的索引。工具
mysql> show variables like 'log_bin':查看bing-log日誌是否開啓。spa
bin-log由於是二進制文件,不能經過文件內容查看命令直接打開查看,mysql提供兩種方式查看方式。
線程
show binary logs; 查看mysql server上二進制日誌
日誌
查看二進制信息的命令格式:show binlog events [in 'log_name'] [ffrom pos] [limit [offset,] row_count]
server
默認顯示可找到的第一個二進制日誌文件中的時間,包含了日誌文件名,事件的開始位置,時間類型,結束位置,信息等內容。
show binary logs等價於show master logs
purge binary logs用於刪除二進制日誌。
purge binary logs before '2016-08-28 22:46:26':把指定時間以前的二進制文件刪除
peset master與reset slave
前者清空index文件中列出的全部二進制日誌,重置index文件爲空,並建立一個新的二進制日誌文件,通常用於master首次啓動時。後者使slave忘記其在master二進制日誌文件中的複製位置,它會刪除master.info,relay-log.info和全部中繼日誌文件並開始一個新的中繼日誌文件,以便於開始一個乾淨的複製。使用reset slave前須要先關閉slave賦值線程。
想要查看到文件中劇吐內容並應於恢復場景還得藉助mysqlbinlog這個工具格式:mysqlbinlog [options] log_file ...輸出的內容會因日誌文件的格式以及mysqlbinlog工具使用的選項不一樣而略不一樣。
二進制日誌文件的格式包含行模式,語句模式,混合模式,基於語句的日誌中事件信息包含執行的語句等,基於行的日誌中事件謝謝包含的是行的變化信息。
mysqlbinlog和能夠經過--read-from-remote-server選項從遠程服務器讀取二進制日誌文件,須要一些而外的鏈接參數,如-h,-p,-P,-u等,這些側腦室近在指定了--read-from-remote-server後有效。
不管是本地二進制日誌文件仍是遠程服務器上的二進制日誌文件,不管是行模式,語句模式仍是混合模式的二進制日誌文件,被mysqlbinlog工具解析後均可直接應用與mysql server進行基於時間點,位置或數據庫的恢復。
mysqldump是mysql用於備份好數據轉移的一個工具,主要產生一系列的sql語句,能夠封裝到文件,該文件包含全部重建你的數據庫所須要sql命令如create database,create table,insert等等。能夠用來實現輕量級的快速遷移或恢復數據庫。
mysqldump是將數據表導成sql腳本文件,在不一樣的mysql版本之間升級時相對比較合適,也是最經常使用的備份方法。mysqldump通常在數據量不多的時候能夠用於備份,當數據量比較大的狀況下,就不建議用mysqldump工具進行備份。
數據庫的導出,導出對象說明:mysqldump能夠針對單個表,多個表,單個數據庫,多個數據庫,全部數據庫進行導出的操做。
mysqldump [options] db_name [tbl_name ...] 導出指定數據庫或單個表
mysqldump [options] --databases db_name... 導出多個數據庫
mysqldump [optoins] --all-databases 導出全部
mysqldump -u用戶名 -p --flush-logs test > /opt/test.sql --flush-logs這個選項就會完整備份的時候從新開啓一個新binlog。
數據庫的導入
mysql -u用戶名 -p test / /opt/test.sql
全庫備份+binlog的數據恢復
環境準備與備份還原:
線程開啓binlog