最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL的binlog日志獲取

 更新時間:2026年03月13日 09:33:39   作者:lxq124lxq  
mysqlbinlog是MySQL的核心工具,用于解析和提取 binlog 日志,本文主要介紹了MySQL的binlog日志獲取,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

mysqlbinlog 是 MySQL 解析和提取 binlog 日志的核心工具,下面整理了日常開發(fā) / 運(yùn)維中最常用的命令,按使用場景分類,適配你的實(shí)際環(huán)境(基于 /var/lib/mysql 下的 binlog 文件)。

一、基礎(chǔ)查看類(最常用)

1. 查看單個 binlog 文件的完整內(nèi)容

# 查看本地 binlog 文件(基礎(chǔ)格式)
mysqlbinlog /var/lib/mysql/mysql-bin.000067

# 帶行級詳情(ROW 格式下看具體數(shù)據(jù)變更,-vv 更詳細(xì))
mysqlbinlog -v /var/lib/mysql/mysql-bin.000067
mysqlbinlog -vv /var/lib/mysql/mysql-bin.000067

2. 查看 binlog 文件的基礎(chǔ)信息(起始 / 結(jié)束時間、位置)

# 只看前 50 行(快速獲取文件頭信息)
mysqlbinlog /var/lib/mysql/mysql-bin.000067 | head -50

# 查看文件的起始/結(jié)束位置和時間(過濾關(guān)鍵字)
mysqlbinlog /var/lib/mysql/mysql-bin.000067 | grep -E "Start|End|TIMESTAMP"

3. 按數(shù)據(jù)庫過濾查看

只提取 purchasingent 數(shù)據(jù)庫的 binlog(你的核心場景):

mysqlbinlog --database=purchasingent /var/lib/mysql/mysql-bin.000067

二、時間 / 位置篩選類(核心高頻)

1. 按時間范圍篩選

# 基礎(chǔ)用法(指定起始+結(jié)束時間)
mysqlbinlog --start-datetime="2026-03-06 00:00:00" --stop-datetime="2026-03-06 23:59:59" /var/lib/mysql/mysql-bin.000067

# 只取起始時間之后的內(nèi)容
mysqlbinlog --start-datetime="2026-03-06 10:00:00" /var/lib/mysql/mysql-bin.000067

# 只取結(jié)束時間之前的內(nèi)容
mysqlbinlog --stop-datetime="2026-03-06 18:00:00" /var/lib/mysql/mysql-bin.000067

# 組合數(shù)據(jù)庫過濾+時間篩選(你的常用場景)
mysqlbinlog --database=purchasingent --start-datetime="2026-03-06 00:00:00" --stop-datetime="2026-03-06 23:59:59" /var/lib/mysql/mysql-bin.000067

2. 按日志位置(Position)篩選

binlog 中每個事件都有唯一位置值,適合精準(zhǔn)篩選:

# 指定起始位置 + 結(jié)束位置
mysqlbinlog --start-position=107 --stop-position=1000 /var/lib/mysql/mysql-bin.000067

# 只取起始位置之后的內(nèi)容
mysqlbinlog --start-position=107 /var/lib/mysql/mysql-bin.000067

三、輸出 / 導(dǎo)出類(實(shí)用)

1. 導(dǎo)出到文件(便于后續(xù)分析 / 恢復(fù))

# 導(dǎo)出時間范圍的 binlog 到 sql 文件
mysqlbinlog --start-datetime="2026-03-06 00:00:00" --stop-datetime="2026-03-06 23:59:59" /var/lib/mysql/mysql-bin.000067 > /tmp/purchasingent_binlog_20260306.sql

# 導(dǎo)出多個 binlog 文件到一個文件
mysqlbinlog /var/lib/mysql/mysql-bin.000066 /var/lib/mysql/mysql-bin.000067 > /tmp/all_binlog.sql

2. 導(dǎo)出為可執(zhí)行的 SQL(去除注釋 / 無關(guān)信息)

mysqlbinlog --skip-gtids --base64-output=DECODE-ROWS -v /var/lib/mysql/mysql-bin.000067 > /tmp/executable_binlog.sql

# 導(dǎo)出時間范圍的 binlog 可執(zhí)行的sql到 sql 文件
mysqlbinlog --database=purchasingent --start-datetime="2026-03-06 10:20:00" --stop-datetime="2026-03-06 10:29:59" --skip-gtids --base64-output=DECODE-ROWS -v /var/lib/mysql/mysql-bin.000067 > /var/lib/mysql/tmp/
/purchasingent_binlog_2026030601.sql

四、遠(yuǎn)程操作類(跨服務(wù)器)

1. 遠(yuǎn)程查看 binlog

mysqlbinlog -h 192.168.1.100 -u root -p123456 -P 3306 --database=purchasingent mysql-bin.000067

2. 遠(yuǎn)程導(dǎo)出 binlog 到本地文件

mysqlbinlog -h 192.168.1.100 -u root -p123456 -P 3306 --start-datetime="2026-03-06 00:00:00" --stop-datetime="2026-03-06 23:59:59" mysql-bin.000067 > /tmp/remote_binlog.sql

五、特殊格式 / 功能類

1. 按字符集解析(避免亂碼)

mysqlbinlog --default-character-set=utf8mb4 /var/lib/mysql/mysql-bin.000067

2. 跳過 GTID(避免重復(fù)執(zhí)行)

適用于有 GTID 開啟的環(huán)境,導(dǎo)出的 SQL 可直接執(zhí)行:

mysqlbinlog --skip-gtids /var/lib/mysql/mysql-bin.000067 > /tmp/no_gtid_binlog.sql

3. 只顯示 DML 語句(INSERT/UPDATE/DELETE)

mysqlbinlog /var/lib/mysql/mysql-bin.000067 | grep -E "INSERT|UPDATE|DELETE"

六、常用參數(shù)速查表

參數(shù)作用
-v/-vv顯示行級詳情(ROW 格式下必備)
--database=db_name只提取指定數(shù)據(jù)庫的 binlog
--start-datetime起始時間(格式:YYYY-MM-DD HH:MM:SS)
--stop-datetime結(jié)束時間(同上)
--start-position起始日志位置
--stop-position結(jié)束日志位置
--skip-gtids跳過 GTID 信息(便于執(zhí)行導(dǎo)出的 SQL)
-h/-u/-p/-P遠(yuǎn)程連接參數(shù)(主機(jī) / 用戶名 / 密碼 / 端口)
--default-character-set指定字符集(避免亂碼)
--base64-output=DECODE-ROWS解碼 ROW 格式的 binlog 為可讀 SQL

總結(jié)

  1. 基礎(chǔ)用法:mysqlbinlog [參數(shù)] binlog文件 是核心,最常用參數(shù)為 --database、--start/stop-datetime、-v;
  2. 高頻場景:按時間 / 數(shù)據(jù)庫篩選 + 導(dǎo)出到文件(適配你的 purchasingent 數(shù)據(jù)庫);
  3. 關(guān)鍵注意:時間格式必須嚴(yán)格為 YYYY-MM-DD HH:MM:SS,ROW 格式需加 -vv 才能看到具體數(shù)據(jù)變更。

常用

示例1

# 獲取purchasingent庫中,時間范圍2026-03-06 10:20:00到2026-03-06 10:21:59 的可執(zhí)行的sql,包含Delete內(nèi)容的后50行
# grep -i	忽略大小寫(binlog 中 DELETE 可能是大寫,加 -i 避免漏查)
# grep -C 50	顯示匹配行的前 50 行 + 后 50 行(也可以用 -A 50 -B 50,效果相同)
# grep -A 50	僅顯示匹配行的后 50 行(After)
# grep -B 50	僅顯示匹配行的前 50 行(Before)
mysqlbinlog --database=purchasingent --start-datetime="2026-03-06 10:20:00" --stop-datetime="2026-03-06 10:21:59" --skip-gtids --base64-output=DECODE-ROWS -v /var/lib/mysql/mysql-bin.000067  |grep -i -A 50 "delete"

# 獲取purchasingent庫中,時間范圍2026-03-06 10:20:00到2026-03-06 10:29:59 的可執(zhí)行的sql導(dǎo)出到purchasingent_binlog_2026030601.sql中
mysqlbinlog --database=purchasingent --start-datetime="2026-03-06 10:20:00" --stop-datetime="2026-03-06 10:29:59" --skip-gtids --base64-output=DECODE-ROWS -v /var/lib/mysql/mysql-bin.000067 > /var/lib/mysql/tmp/
/purchasingent_binlog_2026030601.sql

示例2

獲取purchasingent庫中d_cp_purchasingrequisition開頭的表,時間范圍2026-03-06 10:20:00到2026-03-06 10:21:59 的可執(zhí)行的sql

 #簡潔日志
 mysqlbinlog --database=purchasingent --start-datetime="2026-03-06 10:20:00" --stop-datetime="2026-03-06 10:21:59" --skip-gtids --base64-output=DECODE-ROWS -v /var/lib/mysql/mysql-bin.000067  |grep  -i -E  "Table_map: \`purchasingent\`.\`d_cp_purchasingrequisition" -A 3
 # 范圍內(nèi)的所有日志
 mysqlbinlog --database=purchasingent --start-datetime="2026-03-06 10:20:00" --stop-datetime="2026-03-06 10:21:59" --skip-gtids --base64-output=DECODE-ROWS -v /var/lib/mysql/mysql-bin.000067 

簡潔日志結(jié)果

root@680a7c552dab:/tmp#  mysqlbinlog --database=purchasingent --start-datetime="2026-03-06 10:20:00" --stop-datetime="2026-03-06 10:21:59" --skip-gtids --base64-output=DECODE-ROWS -v /var/lib/mysql/mysql-bin.000067  |grep  -i -E  "Table_map: \`purchasingent\`.\`d_cp_purchasingrequisition" -A 3
#260306 10:21:20 server id 3306  end_log_pos 784198349 CRC32 0xb20d9141         Table_map: `purchasingent`.`d_cp_purchasingrequisition` mapped to number 833
# at 784198349
#260306 10:21:20 server id 3306  end_log_pos 784198796 CRC32 0x53891233         Write_rows: table id 833 flags: STMT_END_F
### INSERT INTO `purchasingent`.`d_cp_purchasingrequisition`
--
#260306 10:21:20 server id 3306  end_log_pos 784201543 CRC32 0x8f63ffb9         Table_map: `purchasingent`.`d_cp_purchasingrequisitiondtl` mapped to number 1204
# at 784201543
#260306 10:21:20 server id 3306  end_log_pos 784202455 CRC32 0x7b7b2c71         Write_rows: table id 1204 flags: STMT_END_F
### INSERT INTO `purchasingent`.`d_cp_purchasingrequisitiondtl`
--
#260306 10:21:20 server id 3306  end_log_pos 784204702 CRC32 0x48ec57fe         Table_map: `purchasingent`.`d_cp_purchasingrequisitiondtl` mapped to number 1204
# at 784204702
#260306 10:21:20 server id 3306  end_log_pos 784205112 CRC32 0x626f1884         Write_rows: table id 1204 flags: STMT_END_F
### INSERT INTO `purchasingent`.`d_cp_purchasingrequisitiondtl`
--
#260306 10:21:20 server id 3306  end_log_pos 784207099 CRC32 0xcde54035         Table_map: `purchasingent`.`d_cp_purchasingrequisition` mapped to number 833
# at 784207099
#260306 10:21:20 server id 3306  end_log_pos 784207959 CRC32 0x181420b5         Update_rows: table id 833 flags: STMT_END_F
### UPDATE `purchasingent`.`d_cp_purchasingrequisition`
--
#260306 10:21:24 server id 3306  end_log_pos 784287873 CRC32 0x4601c581         Table_map: `purchasingent`.`d_cp_purchasingrequisition` mapped to number 833
# at 784287873
#260306 10:21:24 server id 3306  end_log_pos 784288733 CRC32 0x961207ea         Update_rows: table id 833 flags: STMT_END_F
### UPDATE `purchasingent`.`d_cp_purchasingrequisition`
--
#260306 10:21:26 server id 3306  end_log_pos 784312864 CRC32 0x0a5223c0         Table_map: `purchasingent`.`d_cp_purchasingrequisitiondtl` mapped to number 1204
# at 784312864
#260306 10:21:26 server id 3306  end_log_pos 784313776 CRC32 0xb78b9ba1         Delete_rows: table id 1204 flags: STMT_END_F
### DELETE FROM `purchasingent`.`d_cp_purchasingrequisitiondtl`
--
#260306 10:21:26 server id 3306  end_log_pos 784314192 CRC32 0xcf4c1bd8         Table_map: `purchasingent`.`d_cp_purchasingrequisitiondtl` mapped to number 1204
# at 784314192
#260306 10:21:26 server id 3306  end_log_pos 784314602 CRC32 0x7ec98c91         Delete_rows: table id 1204 flags: STMT_END_F
### DELETE FROM `purchasingent`.`d_cp_purchasingrequisitiondtl`
--
#260306 10:21:26 server id 3306  end_log_pos 784314985 CRC32 0x79267223         Table_map: `purchasingent`.`d_cp_purchasingrequisition` mapped to number 833
# at 784314985
#260306 10:21:26 server id 3306  end_log_pos 784315432 CRC32 0x1e3f52d9         Delete_rows: table id 833 flags: STMT_END_F
### DELETE FROM `purchasingent`.`d_cp_purchasingrequisition`

到此這篇關(guān)于MySQL的binlog日志獲取的文章就介紹到這了,更多相關(guān)MySQL binlog日志獲取內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

涞源县| 刚察县| 贵南县| 盐亭县| 西青区| 棋牌| 资兴市| 清流县| 志丹县| 新竹县| 平潭县| 长海县| 宜阳县| 绵竹市| 弥勒县| 丹棱县| 留坝县| 靖州| 沂南县| 玛曲县| 长沙县| 洞头县| 合川市| 荣成市| 得荣县| 东安县| 磐石市| 白河县| 临沭县| 静海县| 西峡县| 中方县| 宾川县| 木兰县| 永川市| 怀柔区| 宁海县| 许昌市| 彭州市| 余庆县| 嵩明县|