binlog是mysql的日誌工具,binlog日誌能夠記錄insert、update、delete的sql和操做時間。mysql
由於log數據是二進制格式的,因此稱爲binary log,即binlog。linux
排查數據問題
好比線上出現了莫名其妙的數據,就能夠經過binlog來查詢是什麼sql致使了這個數據問題。sql
當數據丟失時,能夠恢復數據
當某段時間的數據丟失時,能夠按照時間查詢binlog日誌,從而按照binlog恢復數據。工具
作主從同步用
從庫讀取主庫的binlog,來作主從同步。spa
打開 /etc/mysql/my.cnf
文件日誌
找到code
#log_bin = /var/log/mysql/mysql-bin.log
去掉註釋圖片
log_bin = /var/log/mysql/mysql-bin.log
如此,就打開了binlog,同時設置了binlog的存儲路徑。同步
大多數時候,咱們只須要記錄mysql裏某個database的binlog。
而且,因爲binlog文件的不斷擴充,log文件會變得很大,這樣會佔用你大量的磁盤空間,而且會使mysql特別慢。
爲此,咱們能夠作以下配置:it
binlog-do-db="test" #設置須要記錄binlog的database expire_logs_days=10 #設置log保留天數 max_binlog_size=100M #設置單個log文件的最大容量,超出100M後,會生成另外一個binlog
由此,最基本的binlog設置完成了。
由於binlog是二進制格式的,因此不能直接查看,須要使用mysqlbinlog
去查看binlog日誌。
mysqlbinlog /var/log/mysql/mysql-bin.000002
假設我要按照binlog恢復 「2017-01-10 10:31:12" 以後的數據
須要執行命令以下:
mysqlbinlog --start-datetime="2017-01-10 10:31:12" /var/log/mysql/mysql-bin.000002 > sql.txt
執行上面的命令,咱們就把「2017-01-10 10:31:12" 以後的 binlog 寫入到了sql.txt裏了,咱們直接執行sql.txt裏面的內容就能夠恢復數據了。
更多精彩,請關注公衆號「聊聊代碼」,讓咱們一塊兒聊聊「左手代碼右手詩」的事兒。