二進位制日誌記錄三種格式
基於「語句」記錄:statement,記錄語句,預設模式( mariadb 10.2.3 版本以下 ),日誌量較少
基於「行」記錄:row,記錄資料,日誌量較大,更加安全,建議使用的格式
混合模式:mixed, 讓系統自行判定該基於哪種方式進行,預設模式( mariadb 10.2.4及版本以上)
格式配置
mariadb [hellodb]
> show variables like 'binlog_format'
;+---------------+-------+
| variable_name | value |
+---------------+-------+
| binlog_format | mixed |
+---------------+-------+
1 row in
set(0.001 sec)
二進位制日誌檔案的構成
有兩類檔案
日誌檔案:mysql|mariadb-bin.檔名字尾,二進位制格式
如: mariadb-bin.000001
索引檔案:mysql|mariadb-bin.index,文字格式
二進位制日誌相關的伺服器變數
sql_log_bin=on|off:#是否記錄二進位制日誌,預設on,支援動態修改,系統變數,而非伺服器選項
log_bin=/path/bin_log_file:#指定檔案位置;預設off,表示不啟用二進位制日誌功能,上述兩項都開啟才可以
binlog_format=statement|row|mixed:#二進位制日誌記錄的格式,預設statement
max_binlog_size=1073741824:#單個二進位制日誌檔案的最大體積,到達最大值會自動滾動,預設為1g
#說明:檔案達到上限時的大小未必為指定的精確值
binlog_cache_size=4m #此變數確定在每次事務中儲存二進位制日誌更改記錄的快取的大小(每次連線)
max_binlog_cache_size=512m #限制用於快取多事務查詢的位元組大小。
sync_binlog=1|0:#設定是否啟動二進位制日誌即時同步磁碟功能,預設0,由作業系統負責同步日誌到磁碟
expire_logs_days=n:#二進位制日誌可以自動刪除的天數。 預設為0,即不自動刪除
二進位制日誌檔案相關配置
檢視mariadb自行管理使用中的二進位制日誌檔案列表,及大小
show logs
檢視使用的二進位制檔案
show master status
show binlog events [in 'log_name'] [from pos] [limit [offset,] row_count]
例:show binlog events in 'mysql-bin.000001' from 6516 limit 2,3
mysqlbinlog:二進位制日誌的客戶端命令工具,支援離線檢視二進位制日誌
格式:
mysqlbinlog [options] log_file…
--start-position=
# 指定開始位置
--stop-position=
# --start-datetime=
#時間格式:yyyy-mm-dd hh:mm:ss
--stop-datetime=
--base64-output[
=name]
-v -vvv
範例:
mysqlbinlog --start-position=678 --stop-position=752 /var/lib/mysql/mariadbbin.000003 -v
mysqlbinlog --start-datetime=
"2018-01-30 20:30:10" --stop-datetime=
"2018-01-
30 20:35:22" mariadb-bin.000003 -vvv
二進位制日誌檔案的格式
at 328
151105 16:31:40 server id 1 end_log_pos 431 query thread_id=1
exec_time=0 error_code=0
use `mydb`
/*!*/;
set timestamp=1446712300/*!*/;
create table tb1 (id int, name char(30))
/*!*/;
事件發生的伺服器標識:server id 1
事件的結束位置:end_log_pos 431
事件的型別:query
事件發生時所在伺服器執行此事件的執行緒的id:thread_id=1
語句的時間戳與將其寫入二進位制檔案中的時間差:exec_time=0
錯誤**:error_code=0
事件內容:
gtid:global transaction id,mysql5.6以mariadb10以上版本專屬屬性:gtid
清除指定二進位制日誌
purge logs
例:purge binary logs to 'mariadb-bin.000003'; #刪除mariadb-bin.000003之前的日誌
purge binary logs before '2017-01-23';
purge binary logs before '2017-03-22 09:25:30';
刪除所有二進位制日誌,index檔案重新記數
reset master [to #]; #刪除所有二進位制日誌檔案,並重新生成日誌檔案,檔名從#開始記數,預設從1開始,一般是master主機第一次啟動時執行,mariadb 10.1.6開始支援to #
切換日誌檔案
flush logs;
MysqL資料庫二進位制日誌
二進位制日誌 該日誌檔案會以二進位制形式記錄資料庫的各種操作,但是不記錄查詢語句。mysql 的二進位制日誌 binlog 可以說是 mysql 最重要的日誌,它記錄了所有的 ddl 和 dml 語句 除了資料查詢語句select show等 以事件形式記錄,還包含語句所執行的消耗的時間,mysql...
mysql 資料庫二進位制日誌恢復
如果mysql伺服器啟用了二進位制日誌,你可以使用mysqlbinlog工具來恢復從指定的時間點開始 例如,從你最後一次備份 直到現在或另乙個指定的時間點的資料。mysqlbinlog 用於處理二進位制日誌檔案的實用工具 要想從二進位制日誌恢復資料,你需要知道當前二進位制日誌檔案的路徑和檔名。一般可...
mysql 二進位制日誌
如果mysql 伺服器啟用了二進位制日誌,你可以使用mysqlbinlog工具來恢復從指定的時間點開始 例如,從你最後一次備份 直到現在或另乙個指定的時間點的資料。mysqlbinlog 用於處理二進位制日誌檔案的實用工具 要想從二進位制日誌恢復資料,你需要知道當前二進位制日誌檔案的路徑和檔名。一般...