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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

cmd mysql log_如何使用mysqlbinlog工具?

發(fā)布時(shí)間:2023/12/19 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cmd mysql log_如何使用mysqlbinlog工具? 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1 基礎(chǔ)知識(shí)

1.1 MySQL BingLog的概念

MySQL BingLog是一種記錄MySQL運(yùn)行“事件”的二進(jìn)制日志文件

MySQL BingLog文件需要使用mysqlbinlog專(zhuān)用工具讀取

1.2 mysqlbinlog工具的作用

能顯示復(fù)制關(guān)系的從屬服務(wù)器的寫(xiě)入中繼日志文件內(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)容有,

記錄基本語(yǔ)句的日志記錄

記錄事件信息的SQL語(yǔ)句

記錄執(zhí)行SQL語(yǔ)句的ID

記錄執(zhí)行SQL語(yǔ)句的時(shí)間戳

記錄執(zhí)行SQL語(yǔ)句的耗時(shí)

另外,對(duì)于日志記錄的格式,請(qǐng)參閱官方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”為日期和時(shí)間

“server id”是事件起源服務(wù)器的標(biāo)識(shí)

“end_log_pos”指示下一事件的起始位置(即當(dāng)前時(shí)間結(jié)束位置加一)

“thread_id”指示事件由那個(gè)線(xiàn)程負(fù)責(zé)執(zhí)行

“exec_time”指示事件執(zhí)行所耗費(fèi)的時(shí)間(主節(jié)點(diǎn)執(zhí)行的開(kāi)始時(shí)間至從節(jié)點(diǎn)執(zhí)行的結(jié)束時(shí)間)

“error_code”指示時(shí)間執(zhí)行的結(jié)果(零表示沒(méi)有錯(cuò)誤)

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ī)名稱(chēng)

“–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ù)器的用戶(hù)名

“–password”指示遠(yuǎn)程二進(jìn)制日志服務(wù)為的用戶(hù)密碼

2.2 命令的使用范例

2.2.1 通過(guò)管道傳遞給MySQL客戶(hù)端

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

當(dāng)需要引入多個(gè)binlog文件時(shí),可使用如下命令,

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

注:以上通過(guò)命令將binlog導(dǎo)出到臨時(shí)文件,編輯(刪除某些原因不想執(zhí)行的語(yǔ)句)后再導(dǎo)入MySQL客戶(hù)端

2.2.3 安全的單線(xiàn)程執(zhí)行

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

以上使用單個(gè)線(xiàn)程依次導(dǎo)入兩個(gè)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"

另外以下方法是我們不建議的,請(qǐng)謹(jǐn)慎使用(有可能第一個(gè)binlog后執(zhí)行會(huì)覆蓋第二個(gè)binlog的執(zhí)行結(jié)果),

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

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

2.2.4 通過(guò)管道的流輸入

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

以上范例通過(guò)提取壓縮包的內(nèi)容后通過(guò)管道將二進(jìn)制日志文件以流的形式直接作為mysqlbinlog的標(biāo)準(zhǔn)輸入流,然后同樣以流的形式傳遞給mysql客戶(hù)端,如果需要指定多個(gè)壓縮包,可使用如下命令,

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

另外需要注意的是,

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

mysqlbinlog無(wú)法識(shí)別“–stop-position”選項(xiàng)

參閱文檔

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

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。