Mysql
使用 mysqlbinlog 讀取 MySQL 5.5 二進制日誌時出錯
我正在使用的複制設置遇到問題。它已經工作了好幾個月了,然後在周末,slave 停止從 master 的 binlog 讀取更新並出現錯誤
Got fatal error 1236 from master when reading data from binary log: 'bogus data in log event'
嘗試使用 mysqlbinlog 讀取相關的二進制日誌時,出現如下所示的錯誤;
[root@slglcd-01] # mysqlbinlog ibm-pr-slglcd-01.000075 > /dev/null ERROR: Error in Log_event::read_log_event(): 'Event too small', data_len: 0, event_type: 0 ERROR: Could not read entry at offset 1828: Error in log format or read error. [root@slglcd-01] #
令人沮喪!
--start-position
我曾嘗試使用和的各種組合--offset
來嘗試克服不良數據,但似乎沒有任何效果……我所追求的是一種從二進制日誌中跳過(或刪除)此錯誤的方法,創建一個沒有違規項目的新二進制日誌,以便我可以繼續我的複制。
我不擔心失去聲明,這是一個 syslog 收集數據庫,失去一行不會受到傷害。
我不能做的是從主人重新創建奴隸,因為主人使用
BLACKHOLE
引擎,因此沒有儲存真實數據……如果最壞的情況發生在最壞的情況下,我將不得不從序列中的下一個二進制日誌開始,並鬆散留在有問題的日誌中的數據。
在此先感謝,戴夫
由於 Master 上的二進制日誌已損壞,因此您無能為力。節哀順變。直接跳到下一個 binlog:
STOP SLAVE; CHANGE MASTER TO master_log_file='ibm-pr-slglcd-01.000076',master_log_pos=107; START SLAVE;
當然,107 是 MySQL 5.5 binlogs 的起始位置。如果 Master 是 5.1(或 5.0.95),使用 106。如果 Master 在 5.1 之前,使用 98。
如果 Master BinLog Corruption 頻繁,可能需要考慮在 Master 上使用更小的二進制日誌(可能是 128M 而不是預設的 1G):
[mysqld] max_binlog_size=128M
這不會阻止損壞,但降低它的大小會將數據失去從 1G 降至 128M。