cmd mysql log_如何使用mysqlbinlog工具?
1 基礎(chǔ)知識
1.1 MySQL BingLog的概念
MySQL BingLog是一種記錄MySQL運(yùn)行“事件”的二進(jìn)制日志文件
MySQL BingLog文件需要使用mysqlbinlog專用工具讀取
1.2 mysqlbinlog工具的作用
能顯示復(fù)制關(guān)系的從屬服務(wù)器的寫入中繼日志文件內(nèi)容
2 最佳實(shí)踐
2.1 命令選項(xiàng)的介紹
2.1.1 命令使用格式
shell> mysqlbinlog [options] log_file ...
2.1.2 命令的使用范例
shell> mysqlbinlog binglog.0000003
以上命令輸出的內(nèi)容有,
記錄基本語句的日志記錄
記錄事件信息的SQL語句
記錄執(zhí)行SQL語句的ID
記錄執(zhí)行SQL語句的時間戳
記錄執(zhí)行SQL語句的耗時
另外,對于日志記錄的格式,請參閱官方17.2.1章節(jié)
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”關(guān)鍵字后面的ID代表二進(jìn)制日志的事件偏移量或起始位置
第二行,
“100309 9:28:36”為日期和時間
“server id”是事件起源服務(wù)器的標(biāo)識
“end_log_pos”指示下一事件的起始位置(即當(dāng)前時間結(jié)束位置加一)
“thread_id”指示事件由那個線程負(fù)責(zé)執(zhí)行
“exec_time”指示事件執(zhí)行所耗費(fèi)的時間(主節(jié)點(diǎn)執(zhí)行的開始時間至從節(jié)點(diǎn)執(zhí)行的結(jié)束時間)
“error_code”指示時間執(zhí)行的結(jié)果(零表示沒有錯誤)
2.1.4 讀取遠(yuǎn)程服務(wù)器的二進(jìn)制日志
mysqlbinlog --read-from-remote-server
以上選項(xiàng)支持從遠(yuǎn)程服務(wù)器讀取二進(jìn)制日志(如果主服務(wù)加密從從服務(wù)器讀取),另外以下選項(xiàng)作為輔助可選項(xiàng),
“–host”指示遠(yuǎn)程二進(jìn)制日志服務(wù)器的IP或主機(jī)名稱
“–port”指示遠(yuǎn)程二進(jìn)制日志服務(wù)器的端口
“–protocol”指示遠(yuǎn)程二進(jìn)制日志服務(wù)器的協(xié)議
“–socket”指示遠(yuǎn)程二進(jìn)制日志服務(wù)器的socket路徑
“–user”指示遠(yuǎn)程二進(jìn)制日志服務(wù)器的用戶名
“–password”指示遠(yuǎn)程二進(jìn)制日志服務(wù)為的用戶密碼
2.2 命令的使用范例
2.2.1 通過管道傳遞給MySQL客戶端
shell> mysqlbinlog binlog.000001 | mysql -u root -p
當(dāng)需要引入多個binlog文件時,可使用如下命令,
shell> mysqlbinlog binlog.[0-9]* | mysql -u root -p
另外,為避免BLOB值的影響,可加上如下選項(xiàng)再使用,
shell> mysqlbinlog --binary-mode binlog.[0-9]* | mysql -u root -p
2.2.2 編輯后再還原數(shù)據(jù)
shell> mysqlbinlog binlog.000001 > tmpfile
shell> ... edit tmpfile ...
shell> mysql -u root -p < tmpfile
注:以上通過命令將binlog導(dǎo)出到臨時文件,編輯(刪除某些原因不想執(zhí)行的語句)后再導(dǎo)入MySQL客戶端
2.2.3 安全的單線程執(zhí)行
shell> mysqlbinlog binlog.000001 binlog.000002 | mysql -u root -p
以上使用單個線程依次導(dǎo)入兩個binglog并執(zhí)行,另外以下方法亦可作為替代,
shell> mysqlbinlog binlog.000001 > /tmp/statements.sql
shell> mysqlbinlog binlog.000002 >> /tmp/statements.sql
shell> mysql -u root -p -e "source /tmp/statements.sql"
另外以下方法是我們不建議的,請謹(jǐn)慎使用(有可能第一個binlog后執(zhí)行會覆蓋第二個binlog的執(zhí)行結(jié)果),
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
以上范例通過提取壓縮包的內(nèi)容后通過管道將二進(jìn)制日志文件以流的形式直接作為mysqlbinlog的標(biāo)準(zhǔn)輸入流,然后同樣以流的形式傳遞給mysql客戶端,如果需要指定多個壓縮包,可使用如下命令,
shell> gzip -cd binlog-files_1.gz binlog-files_2.gz | ./mysqlbinlog - | ./mysql -uroot -p
另外需要注意的是,
以上使用方法只有MySQL 8.0.12以上版本支持
mysqlbinlog無法識別“–stop-position”選項(xiàng)
參閱文檔
===================
總結(jié)
以上是生活随笔為你收集整理的cmd mysql log_如何使用mysqlbinlog工具?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《魔兽世界》神秘宝珠在哪买 神秘宝珠获得
- 下一篇: 酷狗音乐桌面动态壁纸在哪里设置