程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> MySQL Replication 遇到 error 1236錯誤的修復方法

MySQL Replication 遇到 error 1236錯誤的修復方法

編輯:關於MYSQL數據庫

       MySQL Replication 遇到 error 1236 就有點麻煩了~ 通常都是 binlog 出問題造成的~ (Master 或 Slave 的 binlog 壞掉都有可能造成此錯誤)

      通常遇到這個狀況, 都是 Slave 的 binlog 壞掉, 就 Slave DB 的資料重倒來解決, 但是此次遇到是 Master 的 binlog 壞掉, 就有點苦了~

      錯誤訊息如下:

      Last_IO_Errno: 1236

      Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 1Client requested master to start replication from impossible position2 the first event 1mysql-bin.0035831 at 45997491, the last event read from 1./mysql-bin.0035831 at 4, the last byte read from 1./mysql-bin.0035831 at 4.1

      MySQL Replication 遇到 Got fatal error 1236 from master 修復

      mysql> SHOW SLAVE STATUSG

      錯誤訊息如下: (已經把不必要得刪除)

      Master_Log_File: mysql-bin.003583

      Read_Master_Log_Pos: 45997491

      Relay_Log_File: mysqld-relay-bin.006789

      Relay_Log_Pos: 103569723

      Relay_Master_Log_File: mysql-bin.003361

      Slave_IO_Running: No

      Slave_SQL_Running: Yes

      Last_Errno: 0

      Skip_Counter: 0

      Last_IO_Errno: 1236 Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 1Client requested master to start replication from impossible position2 the first event 1mysql-bin.0035831 at 45997491, the last event read from 1./mysql-bin.0035831 at 4, the last byte read from 1./mysql-bin.0035831 at 4.1

      註: Debian / Ubuntu Linux 預設 MySQL data path: /var/lib/mysql, 所以下述 binlog 可於此路徑尋找.

      Slave binlog 壞掉的解法

      一般常見是 Slave binlog 壞掉, 所以都會先去 Slave 找 mysql-bin.003583 檔案.

      再把 mysql-bin.003583 的資料用 mysqlbinlog dump 出來, 指到下一個 position 即可.

      Slave: ls /var/lib/mysql/mysql-bin.003583 # not found.

      Slave 不存在檔案, 才發現到壞的是 Master.

      Master binlog 壞掉的解法

      Master: # mysqlbinlog /var/lib/mysql/mysql-bin.003583 > ~/3583

      ERROR: Error in Log_event::read_log_event(): 1read error1, data_len: 27, event_type: 16

      最苦的狀況是 Master 的 binlog 壞掉了, 所以所有 Slave 都死光光. XD

      此時可以考慮幾種作法:

      全部 Slave 重倒 (最保險, no data lost)

      先讓 Replication 可以啟動, 再來 重倒 / sync 一定需要同步的資料即可. (Cache … 那種就可以不用理他)

      下面是採用第二種作法:

      mysql> STOP SLAVE2

      mysql> CHANGE MASTER TO master_log_file = 1mysql-bin.0035841, master_log_pos = 02 # 先指到下一個 binlog 檔, pos 指 0 或 4, 都是一樣意思.

      mysql> START SLAVE2

      mysql> SHOW SLAVE STATUS G # 於此應該就恢復了.

      然後在對重要的 Table 用 pt-table-sync 來補一補即可. (apt-get install percona-toolkit)

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved