Last_IO_Error: Got fatal error 1236 from master when reading data from binary log:
'Could not find first log file name in binary log index file'
常見原因:Master 清理了 Binlog(手動 PURGE BINARY LOGS、expire_logs_days 過期、或磁碟空間不足導致檔案遺失),Slave 還在舊位置尋找已刪除的 Binlog。
mysql> STOP SLAVE;
mysql> FLUSH LOGS;
此操作會關閉當前 Binlog,開啟新編號檔案(如 mysql-bin.000004),並更新 mysql-bin.index 索引檔。
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 | 106 | | |
+------------------+----------+--------------+------------------+
記下 File 與 Position。
mysql> CHANGE MASTER TO
MASTER_LOG_FILE='mysql-bin.000004',
MASTER_LOG_POS=106;
mysql> START SLAVE;
mysql> SHOW SLAVE STATUS\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0
[mysqld]
server-id=111
log-bin=mysql-bin
binlog-do-db=a111cnnet
binlog-ignore-db=mysql
GRANT FILE, REPLICATION SLAVE, REPLICATION CLIENT, SUPER
ON *.* TO 'backup2'@'192.168.0.119' IDENTIFIED BY 'backup2';
[mysqld]
server-id=112
master-host=192.168.0.17
master-user=backup2
master-password=backup2
master-connect-retry=60
replicate-do-db=a111cnnet
replicate-ignore-db=mysql
mysql> SHOW SLAVE STATUS\G
Slave_IO_State: Waiting for master to send event
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
mysql-bin.index 是否存在且可讀expire_logs_days 設定合理(建議 ≥ 7 天)FLUSH TABLES WITH READ LOCK → mysqldump --master-data=2 → Slave 匯入 → CHANGE MASTER TO ... → START SLAVECHANGE MASTER TO MASTER_AUTO_POSITION=1Seconds_Behind_Master 與磁碟空間expire_logs_days=7 並定期備份 Binlogsync_binlog=1 確保 Binlog 持久化