2015-03-03 24 views
7

Mam 2 MySql z konfiguracją master/slave i replikacja się nie udaje. The MySql Master zawiesił się i został utworzony nowy rejestr w mysql-bin.index. Usunąłem ten nowy rejestr, ponieważ ten plik nie istniał w systemie plików. Następnie MySql Master wznowił się pomyślnie.Błąd Mysql 1236 od wzorca podczas odczytu danych z dziennika binarnego

Teraz mam kolejny błąd w slave:

mysql> show slave status \G 
*************************** 1. row *************************** 
      Slave_IO_State: 
       Master_Host: 10.64.253.99 
       Master_User: replication 
       Master_Port: 3306 
      Connect_Retry: 60 
      Master_Log_File: mysql-bin.001050 
     Read_Master_Log_Pos: 54868051 
      Relay_Log_File: mysqld-relay-bin.000001 
      Relay_Log_Pos: 4 
    Relay_Master_Log_File: mysql-bin.001050 
     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: 54868051 
      Relay_Log_Space: 107 
      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: 1 

Gdybym wykonania "show statusu master" do widzenia plik dziennika bin mysql i stanowisko:

mysql> show master status \G 
*************************** 1. row *************************** 
      File: mysql-bin.001050 
     Position: 55586895 
    Binlog_Do_DB: aaa 
Binlog_Ignore_DB: xxx,yyy,zzz,mysql 

Następnie ustawić nowy config do Slave:

STOP SLAVE; 
CHANGE MASTER TO 
    MASTER_HOST='10.64.253.99', 
    MASTER_USER='slaveUser', 
    MASTER_PASSWORD='12345', 
    MASTER_LOG_FILE='mysql-bin.001050', 
    MASTER_LOG_POS=55586895; 
START SLAVE; 

A gdybym ponownie sprawdzić stan niewolnikami mam ten sam błąd:

mysql> show slave status \G 
*************************** 1. row *************************** 
      Slave_IO_State: 
       Master_Host: 10.64.253.99 
       Master_User: replication 
       Master_Port: 3306 
      Connect_Retry: 60 
      Master_Log_File: mysql-bin.001050 
     Read_Master_Log_Pos: 55586895 
      Relay_Log_File: mysqld-relay-bin.000001 
      Relay_Log_Pos: 4 
    Relay_Master_Log_File: mysql-bin.001050 
     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: 55586895 
      Relay_Log_Space: 107 
      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: 1 

Sprawdziłem w MySql Master, że mysql-bin.001050 istnieje i nie jest pusty.

Jest to środowisko produkcyjne, a następnie wprowadzane są nowe dane co minutę. Wartość pozycji można zmienić w minutach lub sekundach. Nie wiem, czy to jest problem.

Zmienna max_allowed_packet ma taką samą wartość w dwóch MySql (16M).

Dlaczego slave nie może znaleźć pliku binarnego?

Odpowiedz

13

Można spróbować to:

  1. slave: stop slave;
  2. Master: flush logs
  3. Master: show master status; — take note of the master log file and master log position

  4. slave: CHANGE MASTER TO MASTER_LOG_FILE='log-bin.00000X', MASTER_LOG_POS=106;

  5. slave: start slave;