資料庫二進位制日誌

2021-10-03 08:27:46 字數 3240 閱讀 2676

二進位制日誌記錄三種格式

基於「語句」記錄: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 用於處理二進位制日誌檔案的實用工具 要想從二進位制日誌恢復資料,你需要知道當前二進位制日誌檔案的路徑和檔名。一般...