1. 程式人生 > >MySQL binlog日誌引數簡介

MySQL binlog日誌引數簡介

binlog日誌是mysql的二進位制日誌,記錄了所有的DDL(資料定義語言)語句和DML(資料操作語言)語句,但是不包括資料查詢語句,語句是以“事件”的形式儲存的,它描述資料更改的過程。該日誌的兩個主要功能是:資料的恢復與資料的複製。

binlog引數
log_bin 設定此引數表示啟用binlog功能,並指定路徑名稱

log_bin_index 設定此引數是指定二進位制索引檔案的路徑與名稱

binlog_do_db 此引數表示只記錄指定資料庫的二進位制日誌

binlog_ignore_db 此引數表示不記錄指定的資料庫的二進位制日誌

max_binlog_cache_size 此引數表示binlog使用的記憶體最大的尺寸

binlog_cache_size 此引數表示binlog使用的記憶體大小,可以通過狀態變數binlog_cache_use和binlog_cache_disk_use來幫助測試。

binlog_cache_use:使用二進位制日誌快取的事務數量

binlog_cache_disk_use:使用二進位制日誌快取但超binlog_cache_size值並使用臨時檔案來儲存事務中的語句的事務數量

max_binlog_size Binlog最大值,最大和預設值是1GB,該設定並不能嚴格控制Binlog的大小,尤其是Binlog比較靠近最大值而又遇到一個比較大事務時,為了保證事務的完整性,不可能做切換日誌的動作,只能將該事務的所有SQL都記錄進當前日誌,直到事務結束

sync_binlog 這個引數直接影響mysql的效能和完整性
sync_binlog=0:當事務提交後,Mysql僅僅是將binlog_cache中的資料寫入Binlog檔案,但不執行fsync之類的磁碟 同步指令通知檔案系統將快取重新整理到磁碟,而讓Filesystem自行決定什麼時候來做同步,這個是效能最好的。
sync_binlog=n,在進行n次事務提交以後,Mysql將執行一次fsync之類的磁碟同步指令,同志檔案系統將Binlog檔案快取重新整理到磁碟。
Mysql中預設的設定是sync_binlog=0,即不作任何強制性的磁碟重新整理指令,這時效能是最好的,但風險也是最大的。一旦系統繃Crash,在檔案系統快取中的所有Binlog資訊都會丟失

binglog_format 可選值有statement(記錄邏輯sql語句)、row(記錄表的行更動情況)、mixed

查一下binlog日誌相關的引數

mysql> show variables like '%binlog%';

這裡寫圖片描述

上面那麼多引數其實不需要都配置,我一般配置以下幾個引數

#log-bin設定此引數表示啟用binlog功能,並指定路徑名稱
log-bin=/var/lib/mysql/mysql-bin
sync_binlog=0
#binlog_cache_size此引數表示binlog使用的記憶體大小
binlog_cache_size=1M

binlog_cache_size:預設大小是37268即32K,正常情況下設定為1M就可以了,如果系統事務多可以設定為2到4M。
max_binlog_cache_size: 預設值是18446744073709547520,這個值很大,夠我們使用的了,所以不需要設定。
注意:快取大小主從伺服器要設定的一致,如果不一致會有快取溢位問題。

sync_binlog設為0是出於系統性能考慮,如果系統有資料安全要求,可以設定1以上的值

binlog_do_db 和binlog_ignore_db建議不要配置,設定後會出現部分資料不能同步的問題,請看下面的例子

$ mysql
mysql> delete from garbage.junk;
mysql> use garbage;
mysql> update production.users set disabled = 1 where user = "root";

複製會broke2次, 第一次,因為 slave嘗試著去之西你給第一條語句,但是slave上並沒有這樣的表"garbage.junk" , 第二次, 隱含的, 因為 對 production.users不會被 複製,因為 root帳號並沒有在slave上被禁用掉.
為什麼? 因為 binlog-ignore-db 並不像你想的那樣執行, 我之前說的, "在garbage資料庫中的資料不會被複制" 是錯的, 實際上(資料庫)並沒有這麼做.事實上, 他是通過預設的資料庫為“garbage" 的連線, 過濾二進位制的(SQL)語句日誌的. 換句話說, 過濾不是基於 查詢的字串的, 而實際於你used的資料庫.
其他我提到的配置選項也都類似. binlog-do-db 和 binlog-ignore-db 語句是特別危險的,因為他們將語句寫入了二進位制日誌. 意味著你不能使用二進位制日誌從備份恢復指定時間的資料.
在嚴格控制的環境中, 這些選項是很有用的,但是我不會談論這些。

安全的替換方案是 在 slave上配置過濾, 使用基於查詢中真正涉及到的表的選項, 例如replicate-wild-* 選項

#指定需要同步的表
replicate-wild-do-table=ljzxdb.%

相關推薦

MySQL binlog日誌引數簡介

binlog日誌是mysql的二進位制日誌,記錄了所有的DDL(資料定義語言)語句和DML(資料操作語言)語句,但是不包括資料查詢語句,語句是以“事件”的形式儲存的,它描述資料更改的過程。該日誌的兩個主要功能是:資料的恢復與資料的複製。 binlog引數 l

Docker下MySQL主從三部曲之三:binlog日誌引數實戰

本章是《Docker下MySQL主從三部曲》的終篇,前面的章節我們能夠製作映象來搭建主從同步環境,本章我們來觀察binlog引數MASTER_LOG_POS;關於從庫同步的設定在設定從庫同步的時候一般會使用以下SQL:CHANGE MASTER TO MASTER_HOST=

mysql binlog日誌的三種模式

base 新版 產生 日誌模式 出現 行數據 原本 兩種模式 可能 1、statement level模式 每一條會修改數據的sql都會記錄到master的bin-log中。slave在復制的時候sql進程會解析成和原來master端執行過的相同的sql來再次執行。優點:s

mysql binlog日誌自動清理及手動刪除

vim having require clas mas fast replicat 想要 手動 轉自:http://blog.csdn.net/atco/article/details/24259333 說明:當開啟mysql數據庫主從時,會產生大量如mysql-bin.

mysql-binlog日誌恢復數據庫

rop mysql- master share int 查看 start row 分享圖片 mysqlbinlog常見的選項有以下幾個:--start-datetime:從二進制日誌中讀取指定等於時間戳或者晚於本地計算機的時間--stop-datetime:從二進制日誌中

MySQL binlog日誌三種模式選擇及配置

ble 文件 eve 圖解 nag 一行 人的 三種模式 jpg 在講解binlog日誌三種模式前,先了解一下解析binlog日誌的命令工mysqlbinlog。mysqlbinlog工具的作用是解析mysql的二進制binlog日誌內容,把二進制日誌解析成可以在MySQL

開啟mysql-binlog日誌操作步驟

.cn create 添加 log use 路徑 orm 賬戶 span 步驟1:找到mysql主庫的配置文件(註意:不能為從庫),lunix系統路徑一般為/etc/my.cnf步驟2:修改配置文件(可以提前備份一下)以開啟mysql-binlog功能。添加以下3行:log

mysql binlog 日誌詳解,恢復測試

二進位制日誌常用引數: max_binlog_size :單個二進位制日誌檔案的最大值,超過該值,則產生新的二進位制日誌檔案,並記錄到.index檔案,預設1G。 binlog_cache_size:  使用InnoDB時,所有未提交的事務會記錄到一個快取中,等待事務提交時

解決mysql binlog日誌查詢不出語句的問題

當bin-log的模式設定為 row時 不僅日誌長得快 並且檢視執行的sql時 也稍微麻煩一點:1.干擾語句多;2生成sql的編碼需要解碼。 binlog_format=row 直接mysqlbinlog出來的 檔案 執行sql部分的sql顯示為base64編碼

mysql binlog日誌檢視和匯出

檢視binlog檔案的2種方式 a、提取指定的binlog日誌   # mysqlbinlog /opt/data/APP01bin.000001   # mysqlbinlog /opt/data/APP01bin.000001|grep insert   /*!4001

mysql-binlog日誌恢復資料庫

binlog日誌用於記錄所有更新了資料或者已經潛在更新了資料的所有語句。語句以“事件”的形式儲存,它描述資料更改。當我們因為某種原因導致資料庫出現故障時,就可以利用binlog日誌來挽回(前提是已經配置好了binlog),接下來我們來配置 一、開啟mysql-binlog日誌 在mysql配置檔案my.c

提取mysql binlog日誌內容

整理自網路 (mysqlbinlog命令 -v 顯示每個欄位插入的值, -v -v顯示每個欄位的註釋,包括資料型別) MySQL binlog日誌記錄了MySQL資料庫從啟用日誌以來所有對當前資料庫的變更。 binlog日誌屬於二進位制檔案,實現基於時間點的恢復或者不完全

linux開啟MySQL binlog日誌

binlog日誌,即binary log,是二進位制日誌檔案。它有兩個作用,一是增量備份,即只備份新增的內容;二是用於主從複製等,即主節點維護了一個binlog日誌檔案,從節點從binlog中同步資料。我們可以通過binlog日誌恢復資料。下面就介紹一下開啟MySQL bin

Mysql binlog日誌binlog恢復數據庫操作

llb ase 一次 end 定時 列表 row head code 初識MySQL 日誌binlogMySQL重要log,二進制日誌文件,記錄所有DDL和DML語句(除select),事件形式記錄,包含語句所執行的消耗時間,事務安全型。DDL(數據庫定義語言),主要命

mysql開啟binlog日誌和慢查詢日誌

logs launch style spa 簡單 bsp mys 自動 文件的 1)首先,為什麽要開啟binlog日誌和慢查詢日誌呢? binlog日誌會記錄下數據庫的所以增刪改操作,當不小心刪除、清空數據,或數據庫系統出錯,這時候就可以使用binlog日誌來還原數據庫,

mysql數據庫binlog日誌的異地備份

logs 缺點分析 一致性 獲取 lin 生產環境 exit i++ hostname MySQL數據庫的二進制日誌binlog記錄了對數據庫的全量DDL和DML操作,對數據庫的point to point災難恢復起著無法替代的關鍵作用。因此,基於此類考慮,需要對生

Mysql中錯誤日誌binlog日誌、查詢日誌、慢查詢日誌簡單介紹

安全 view 記錄 bin 嚴重 like mod ng- ror 前言 數據庫的日誌是幫助數據庫管理員,追蹤分析數據庫以前發生的各種事件的有力根據。mysq

利用Maxwell組件實時監聽Mysqlbinlog日誌

nbsp 重啟 mysqld pan cli 生成 flush rest 插入數據 一:在linux環境下安裝部署好mysql 開啟binlog Vim /etc/my.cnf mysql的binlog格式有3種,為了把binlog解析成json數據格式,要設置b

Mysqlbinlog日誌說明及利用binlog日誌恢復數據操作記錄

Language 命令 ani art ase 回來 log日誌 slaves update 眾所周知,binlog日誌對於mysql數據庫來說是十分重要的。在數據丟失的緊急情況下,我們往往會想到用binlog日誌功能進行數據恢復(定時全備份+binlog日誌恢復增量數據部

MySQL數據庫全備和增備、增量數據恢復案例以及定時清理 binlog 日誌

代碼 fun transacti 適合 壓縮包 password 意願 root ati 一、mysql 全量備份以及增量備份1、全量備份命令: /application/mysql/bin/mysqldump -uroot -p123456 --lock-all-tab