日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

cmd mysql log_如何使用mysqlbinlog工具?

發布時間:2023/12/19 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cmd mysql log_如何使用mysqlbinlog工具? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 基礎知識

1.1 MySQL BingLog的概念

MySQL BingLog是一種記錄MySQL運行“事件”的二進制日志文件

MySQL BingLog文件需要使用mysqlbinlog專用工具讀取

1.2 mysqlbinlog工具的作用

能顯示復制關系的從屬服務器的寫入中繼日志文件內容

2 最佳實踐

2.1 命令選項的介紹

2.1.1 命令使用格式

shell> mysqlbinlog [options] log_file ...

2.1.2 命令的使用范例

shell> mysqlbinlog binglog.0000003

以上命令輸出的內容有,

記錄基本語句的日志記錄

記錄事件信息的SQL語句

記錄執行SQL語句的ID

記錄執行SQL語句的時間戳

記錄執行SQL語句的耗時

另外,對于日志記錄的格式,請參閱官方17.2.1章節

2.1.3 日志的范例

# at 141

#100309 9:28:36 server id 123 end_log_pos 245

Query thread_id=3350 exec_time=11 error_code=0

第一行”at”關鍵字后面的ID代表二進制日志的事件偏移量或起始位置

第二行,

“100309 9:28:36”為日期和時間

“server id”是事件起源服務器的標識

“end_log_pos”指示下一事件的起始位置(即當前時間結束位置加一)

“thread_id”指示事件由那個線程負責執行

“exec_time”指示事件執行所耗費的時間(主節點執行的開始時間至從節點執行的結束時間)

“error_code”指示時間執行的結果(零表示沒有錯誤)

2.1.4 讀取遠程服務器的二進制日志

mysqlbinlog --read-from-remote-server

以上選項支持從遠程服務器讀取二進制日志(如果主服務加密從從服務器讀取),另外以下選項作為輔助可選項,

“–host”指示遠程二進制日志服務器的IP或主機名稱

“–port”指示遠程二進制日志服務器的端口

“–protocol”指示遠程二進制日志服務器的協議

“–socket”指示遠程二進制日志服務器的socket路徑

“–user”指示遠程二進制日志服務器的用戶名

“–password”指示遠程二進制日志服務為的用戶密碼

2.2 命令的使用范例

2.2.1 通過管道傳遞給MySQL客戶端

shell> mysqlbinlog binlog.000001 | mysql -u root -p

當需要引入多個binlog文件時,可使用如下命令,

shell> mysqlbinlog binlog.[0-9]* | mysql -u root -p

另外,為避免BLOB值的影響,可加上如下選項再使用,

shell> mysqlbinlog --binary-mode binlog.[0-9]* | mysql -u root -p

2.2.2 編輯后再還原數據

shell> mysqlbinlog binlog.000001 > tmpfile

shell> ... edit tmpfile ...

shell> mysql -u root -p < tmpfile

注:以上通過命令將binlog導出到臨時文件,編輯(刪除某些原因不想執行的語句)后再導入MySQL客戶端

2.2.3 安全的單線程執行

shell> mysqlbinlog binlog.000001 binlog.000002 | mysql -u root -p

以上使用單個線程依次導入兩個binglog并執行,另外以下方法亦可作為替代,

shell> mysqlbinlog binlog.000001 > /tmp/statements.sql

shell> mysqlbinlog binlog.000002 >> /tmp/statements.sql

shell> mysql -u root -p -e "source /tmp/statements.sql"

另外以下方法是我們不建議的,請謹慎使用(有可能第一個binlog后執行會覆蓋第二個binlog的執行結果),

shell> mysqlbinlog binlog.000001 | mysql -u root -p # DANGER!!

shell> mysqlbinlog binlog.000002 | mysql -u root -p # DANGER!!

2.2.4 通過管道的流輸入

shell> gzip -cd binlog-files_1.gz | ./mysqlbinlog - | ./mysql -uroot -p

以上范例通過提取壓縮包的內容后通過管道將二進制日志文件以流的形式直接作為mysqlbinlog的標準輸入流,然后同樣以流的形式傳遞給mysql客戶端,如果需要指定多個壓縮包,可使用如下命令,

shell> gzip -cd binlog-files_1.gz binlog-files_2.gz | ./mysqlbinlog - | ./mysql -uroot -p

另外需要注意的是,

以上使用方法只有MySQL 8.0.12以上版本支持

mysqlbinlog無法識別“–stop-position”選項

參閱文檔

===================

總結

以上是生活随笔為你收集整理的cmd mysql log_如何使用mysqlbinlog工具?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。