標籤:基於 依賴 自動認可 滾動 scsi 檔案內容 正數 設定 指標
二進位日誌主要用於記錄任何有可能改變資料庫的操作,因此主要用於記錄 DDL DML語句,包括資料庫授權語氣。記錄格式為二進位的。我們無法使用普通文本查看命令取查看。只能使用mysql提供的專用命令,叫做mysqlbinlog二進位日誌非常重要用於我們資料庫伺服器崩潰時候,依靠二進位日誌可以進行恢複一般情況下位於資料目錄下,以主機名稱開頭或者是mysql-bin開頭,mysql伺服器重啟一次,這個日誌就會滾動一次,這個日誌需要不停的滾動。而且記錄增長的速度非常快。是能夠實現mysql複製,以及即時間點復原的重要工具查看當前伺服器上面所有的二進位記錄檔show binary logs;查看資料庫是否記錄二進位日誌SHOW GLOBAL VARIABLES LIKE ‘%log%‘;開啟二進位日誌需要在設定檔中定義。把 log-bin 前面的 # 注釋掉即可二進位日誌的格式:1 基於語句(statemen t);如果兩次執行帶來的結果是相同的就基於語句來記錄2 基於行 (row) :把那個行的相關改變記錄下來。3 混合模式 (mixed): 二進位日誌增長到一定程度就會滾動一次。 如果我們資料檔案有10G,我們周三備份了10G,運行兩天后到了周五,伺服器硬碟壞了,我們由於備份時候只備份到了周三,後面兩天產生的資料沒有備份,就需要依賴二進位檔案進行找回那兩天的資料,因此我們的二進位記錄檔最好和資料庫伺服器不要放在同一塊硬碟上面。這種恢複資料叫做即時點還原如果資料沒有備份,但是二進位記錄檔全部在,也可以恢複,但是恢復比較慢 二進位日誌事件:二進位時間日誌在記錄時候會記錄:1.事件產生的時間。2.每一個事件在記錄檔中的相對位置 二進位記錄檔組成:索引檔案 (儲存檔案在資料目錄下面叫做mysql-bin.index是一個文字檔)從裡面可以看到一共產生了多少個二進位記錄檔二進位記錄檔 二進位記錄檔預設儲存帶資料目錄下面,通常名稱是 mysql-bin.000001 mysql-bin.000002 mysql-bin.000003 ..........等等 使用show master status; 查看當前正在使用的二進位記錄檔 查看某個二進位記錄檔的內容比如查看 mysql-bin.000003使用命令 SHOW BINLOG EVENTS IN ‘mysql-bin.000003‘;還可以加上FROM 命令 表示從哪個位置開始查看SHOW BINLOG EVENTS IN ‘mysql-bin.000003 FROM 107‘;server_id :表示由哪個mysql伺服器產生的二進位日誌 使用mysqlbinlog也可以查看日誌。並且指定日誌顯示的資訊。常用選項: --start-datetime --stop-datetime--start-position --stop-position 不跟選項就是顯示整個檔案內容mysqlbinlog mysql-bin.000003 指定位置查看mysqlbinlog --start-position = 107 --stop-postion = 358 mysql-bin.000003 指定時間查看mysqlbinlog --start-datetime=‘2016-03-13 10:40:50‘ mysql-bin.000003 在Linux上面 可以將查看的結果儲存到一個我們指定路徑的 以 .sql 結尾的檔案中mysqlbinlog --start-datetime=‘2016-03-13 10:40:50‘ mysql-bin.000003 >/root/a.sql以後你可以將這個sql檔案直接匯入到資料庫當中,這個sql檔案就會將裡面的sql語氣執行一遍。所以我們通常通過使用mysqlbinlog 查詢到結果輸出重新導向到sql指令碼中,匯入到其他資料庫中就可以實現即時點還原 手動滾動日誌:FLUSH LOGS; (只會滾動二進位日誌)決不允許使用rm 命令刪除二進位記錄檔,會導致資料庫崩潰刪除二進位記錄檔使用 PURGE 命令用法PURGE BINARY LOGS TO log_name; 這個是把這個日誌名稱之前的日誌全部刪除,而不是刪除這個記錄檔 與二進位日誌相關的伺服器變數。使用SHOW GLOBAL VARIABLES LIKE ‘%log%‘; binlog_format :二進位日誌的格式 binlog_cache_size :緩衝大小,二進位日誌寫入磁碟之前先在記憶體進行緩衝binlog_cache_size 隨著 binlog_stmt_cache_size 大小的改變而改變 binlog_stmt_cache_size:也是緩衝,記錄跟事務相關的二進位日誌緩衝大小改變binlog_stmt_cache_size大小,binlog_cache_size也會跟著改變,不建議調大,有可能造成資料丟失 log_bin : 是否啟用二進位日誌,這個功能開啟,但是不一定就會記錄二進位日誌是否真正的記錄日誌還需要取決於另外的變數。開啟時候需要在設定檔指定一下路徑。sql_log_bin:用於控制二進位日誌資訊是否記錄進記錄檔sql_log_off :用於控制是否禁止將一般查詢日誌類記錄到查詢記錄檔中,與二進位日誌無關sync_binlog:設定多久同步一次二進位日誌到磁碟檔案中,0表示不同步,為0時取決於auto_commit(事務自動認可,立即被寫入日誌)。如果這個值是任何正數,就表示多少次寫操作之後 同步到磁碟中。這裡設定為0的好處是事務不提交,日誌就不會寫入磁碟。這樣IO也會隨之降低,效能得到提高 二進位日誌所在的硬碟速度越快,IO效能越好,我們的伺服器效能也就越好,因為我們的二進位日誌只有一個,如果並發多個線程同時來執行修改資料庫操作時候,都需要幾個線程同時寫入二進位日誌。因此如果我們硬碟是固態硬碟,讀寫速度就越好,伺服器效能越好expire_logs_days: 表示多少天以後日誌日誌會到期,並自動刪除硬碟IO效能指標:IOPS 表示硬碟IO每秒能進行的IO運算元。台式機硬碟:每秒100次SCSI硬碟:每秒200次SSD:每秒大概500-2000
mysql bin log