2015-03-03 21 views
7

Bir master/slave yapılandırmasıyla 2 MySql var ve çoğaltma başarısız oluyor. MySql Master çöktü ve mysql-bin.index'daki yeni bir kayıt oluşturuldu. Bu yeni kaydı sildim çünkü bu dosya dosya sisteminde mevcut değildi. Sonra MySql Master başarıyla yeniden başlatıldı.Mysql hatası 1236, ikili kayıttan veri okurken 1236 numaralı ana nedenden kaynaklanıyor

Şimdi, köle sonraki hata var:

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 

Ben görünümü için mysql bin log dosyası ve pozisyon "gösteri ustası statüsü" çalıştırırsak: Sonra

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

Ben köle yeni yapılandırma ayarlayın:

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; 

Ve tekrar köle durumunu kontrol eğer aynı hata var:

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 

ben mysql-bin.001050 mevcut ve boş olmadığından emin MySQL Master kontrol ettirin.

Bu, bir üretim ortamıdır ve her dakika yeni veriler eklenir. Pozisyon değeri dakika veya saniye olarak değişebilir. Bunun bir problem olup olmadığını bilmiyorum.

Maks_allowed_packet değişkeni iki MySql (16M) de aynı değere sahiptir.

Neden köle ikili günlük dosyasını bulamıyor?

cevap

13

Bu deneyebilirsiniz:

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

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

  5. Köle: start slave;