mysql新說·記錄數據軌跡的binlog

一、什麼是binlog?

binlog是mysql的日誌工具,binlog日誌能夠記錄insert、update、delete的sql和操做時間。mysql

由於log數據是二進制格式的,因此稱爲binary log,即binlog。linux

二、binlog有什麼用?

  • 排查數據問題
    好比線上出現了莫名其妙的數據,就能夠經過binlog來查詢是什麼sql致使了這個數據問題。sql

  • 當數據丟失時,能夠恢復數據
    當某段時間的數據丟失時,能夠按照時間查詢binlog日誌,從而按照binlog恢復數據。工具

  • 作主從同步用
    從庫讀取主庫的binlog,來作主從同步。spa

三、如何啓用和配置binlog(以linux系統爲例)?

打開 /etc/mysql/my.cnf文件日誌

啓用binlog

找到code

#log_bin = /var/log/mysql/mysql-bin.log

去掉註釋圖片

log_bin = /var/log/mysql/mysql-bin.log

如此,就打開了binlog,同時設置了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

由於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裏面的內容就能夠恢復數據了。

更多精彩,請關注公衆號「聊聊代碼」,讓咱們一塊兒聊聊「左手代碼右手詩」的事兒。
圖片描述

相關文章
相關標籤/搜索