Linux MYSQL(十)日誌二進位制日誌

2021-09-11 06:53:18 字數 3554 閱讀 1985

事務日誌 transaction log

中繼日誌 reley log

錯誤日誌 error log

通用日誌 general log

慢查詢日誌 slow query log

二進位制日誌 binary log

vim /etc/my.cnf

[mysqld]

innodb_log_group_home_dir=/data/mysqllogs/

show variables like 『%datadir%』; 可檢視路徑,預設可知在

/var/lib/mysql/

小技巧:

optimize table testlog;  

testlog表刪除了大量資料,檔案大小不會縮減,執行此命令後可縮小資料庫檔案

show variables like '%slow%' 檢視是否開啟慢日誌

set global slow_query_log=on 開啟慢查詢

show variables like '%long_query%' 檢視閾值

set long_query_time=5 設定超過5秒的記錄日誌

生成檔案 例: centos7-slow.log
思路:記錄日誌後,可為記錄語句新增索引,優化速度

1.select * from testlog where age=90000;

先執行語句記錄日誌

2.explain select * from testlog where age=90000;

檢視此語句執行過程

3.create index idx_age on testlog(age);

建立索引

4.select * from testlog where age=99000;

測試新增索引後是否優化了速度

show variables like 'profiling' 查詢狀態

set profiling =on 開啟

select * from teachers; 執行乙個查詢語句

show profiles; 查詢剛剛執行的語句編號

show profile for query 1; 查詢1號的過程

記錄導致資料改變或潛在導致資料改變的sql語句

記錄已提交的日誌

不依賴於儲存引擎型別

功能:通過「重放」日誌檔案中的事件來生成資料副本

基於備份,資料丟失先備份還原,然後用二進位制日誌還原到最新的操作

注意:建議二進位制日誌和資料檔案分開存放

日誌檔案:mysql|mariadb-bin.檔名字尾,二進位制格式

如: mariadb-bin.000001

索引檔案:mysql|mariadb-bin.index,文字格式

binlog_format=statement|row|mixed:二進位制日誌記錄的格式,預設statement

max_binlog_size=1073741824:單個二進位制日誌檔案的最大體積,到達最大值會自動滾動,預設為1g

說明:檔案達到上限時的大小未必為指定的精確值

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

從6516開始看,其中的2,3條

mysqlbinlog [options] log_file…

選項:–start-position=# 指定開始位置

–stop-position=#

–start-datetime2018-01-30 20:30:10

–stop-datetime=

–base64-out=decode-rows 解碼64

-v-vvv

從位置查:

mysqlbinlog --start-position=6787 --stop-position=7527 /var/lib/mysql/mariadb-bin.000003 -v

從時間查:

mysqlbinlog --start-datetime="2018-01-30 20:30:10" --stop-datetime="2018-01-30 20:35:22" mariadb-bin.000003 -vvv

準備:

mysqlbinlog /data/mysqlbin/mysql-bin.000001 --start-position=48355715 > /data/test.sql

按位置匯出日誌

cat /data/test.sql

檢視檔案格式

二進位制日誌事件的格式:

# at 48355715   

#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

測試環境沒問題,準備上線才使用,從頭開始計數

reset master 全清除

flush logs;

mysql-bin.000001

mysql-bin.000002

生成乙個新乙個日誌檔案,原日誌檔案不會被刪。

作用:原日誌檔案已經備份了,可以存放新日誌檔案

封裝框架(十)日誌類

每個框架都有日誌類,日誌類非常的重要,接下來要在我們的框架中加入日誌類 首先我們要對日誌類有乙個規劃 1 確定日誌的儲存方式,例如 存到檔案中 存到資料庫中 2 寫日誌 我們這裡確定為把日誌存到檔案系統中 首先我們在lib目錄下建乙個log.php用來確定儲存方式 namespacecore lib...

Linux基礎(十) 日誌服務管理(一)

程序和作業系統核心需要能夠為發生的事件記錄日誌,這些日誌可用於系統審核和問題的故障排除,一般這些日誌永久的儲存 var log目錄中 系統檔案記錄資訊 日誌檔案 用途 var log message 大多數系統日誌資訊記錄在這裡 var log secure 安全和身份認證相關的訊息和錯誤的日誌檔案...

Kafka日誌儲存解析(二)日誌索引

每個日誌分段檔案對應了兩個索引檔案,主要用來提高查詢訊息的效率。如上圖 kafka中的索引檔案屬於稀疏索引,不是所有的訊息都有對應的索引項。每當寫入一定量 由broker端引數log.index.interval.bytes指定,預設是4kb 的訊息時,偏移量索引檔案和時間戳索引檔案分別增加乙個偏移...