Mysql

從 mariadb master master 複製中的二進制日誌讀取數據時,從 master 獲取致命錯誤 1236

  • September 13, 2021

我面臨與此錯誤 1236 類似的情況 - “在二進制日誌索引文件中找不到第一個日誌文件名”

我已經嘗試了所有的答案,但我仍然無法擺脫 Server id = 1 上的這個錯誤:

        Last_IO_Errno: 1236
        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'

我有兩個執行 mariadb 10 的節點,主節點伺服器 id 1 和第二個主節點伺服器 id = 2

伺服器 ID 1:

MariaDB [(none)]> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
               Slave_IO_State: 
                  Master_Host: 192.168.1.10
                  Master_User: replicator
                  Master_Port: 6306
                Connect_Retry: 60
              Master_Log_File: mariadb-bin.000001
          Read_Master_Log_Pos: 313
               Relay_Log_File: mysqld-relay-bin.000001
                Relay_Log_Pos: 4
        Relay_Master_Log_File: mariadb-bin.000001
             Slave_IO_Running: No
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 313
              Relay_Log_Space: 256
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 1236
                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'
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 2
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
                   Using_Gtid: No
                  Gtid_IO_Pos: 
      Replicate_Do_Domain_Ids: 
  Replicate_Ignore_Domain_Ids: 
                Parallel_Mode: conservative
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
             Slave_DDL_Groups: 0
Slave_Non_Transactional_Groups: 0
   Slave_Transactional_Groups: 0
1 row in set (0.001 sec)

檢查二進制日誌:

MariaDB [(none)]> SHOW BINARY LOGS;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000001 |  11337613 |
| mysql-bin.000002 |    138563 |
| mysql-bin.000003 |   1100347 |
| mysql-bin.000004 |   7406418 |
| mysql-bin.000005 | 110683302 |
| mysql-bin.000006 |    144929 |
+------------------+-----------+
MariaDB [(none)]> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000006 |   173699 |              |                  |
+------------------+----------+--------------+------------------+

然後伺服器 id 2:

MariaDB [(none)]> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
              Slave_IO_State: Waiting for master to send event
                 Master_Host: 192.168.1.11
                 Master_User: replicator
                 Master_Port: 3306
               Connect_Retry: 60
             Master_Log_File: mysql-bin.000006
         Read_Master_Log_Pos: 125740
              Relay_Log_File: mysqld-relay-bin.000002
               Relay_Log_Pos: 10034
       Relay_Master_Log_File: mysql-bin.000006
            Slave_IO_Running: Yes
           Slave_SQL_Running: Yes
             Replicate_Do_DB: 
         Replicate_Ignore_DB: 
          Replicate_Do_Table: 
      Replicate_Ignore_Table: 
     Replicate_Wild_Do_Table: 
 Replicate_Wild_Ignore_Table: 
                  Last_Errno: 0
                  Last_Error: 
                Skip_Counter: 0
         Exec_Master_Log_Pos: 125740
             Relay_Log_Space: 10337
             Until_Condition: None
              Until_Log_File: 
               Until_Log_Pos: 0
          Master_SSL_Allowed: No
          Master_SSL_CA_File: 
          Master_SSL_CA_Path: 
             Master_SSL_Cert: 
           Master_SSL_Cipher: 
              Master_SSL_Key: 
       Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
               Last_IO_Errno: 0
               Last_IO_Error: 
              Last_SQL_Errno: 0
              Last_SQL_Error: 
 Replicate_Ignore_Server_Ids: 
            Master_Server_Id: 1
              Master_SSL_Crl: 
          Master_SSL_Crlpath: 
                  Using_Gtid: No
                 Gtid_IO_Pos: 
     Replicate_Do_Domain_Ids: 
 Replicate_Ignore_Domain_Ids: 
               Parallel_Mode: conservative
1 row in set (0.00 sec)

和二進制日誌:

MariaDB [(none)]> SHOW BINARY LOGS;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000001 |       313 |
+------------------+-----------+

MariaDB [(none)]> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      313 |              |                  |
+------------------+----------+--------------+------------------+

我確實有數據庫備份,但我仍然想了解並解決問題,而不是從頭開始。

如果你有sync_binlog = OFF,這可能會解決問題:

STOP SLAVE; START SLAVE;

我不是這方面的專家,但我注意到在伺服器 id 1 上,從屬狀態表示它正在尋找一個名為的主日誌文件mariadb-bin.{digits},而其主伺服器(伺服器 id 2)上的 bin 日誌名為mysql-bin.{digits}. 我認為您需要使這些名稱匹配。

引用自:https://dba.stackexchange.com/questions/299472