Friday, 25 October 2013

MySQL e la Replica Master - Slave

Di seguito riporto gli errori riscontrati su un MySQL 5.0 in configurazione Master e Slave.

Primo Caso : la replica si blocca perchè sullo slave, cade SQL Thread.

Secondo Caso :  la replica si blocca perchè sullo slave, cade IO Thread.

Iniziamo dal secondo caso, a seguito di una LOAD sul Master di un file.csv, la replica è caduta con il seguente errore :

131011 12:56:56 [Note] Slave I/O thread: connected to master 'user@server:3306',  replication started 'server-bin.002981' at position 445451409
131011 12:56:56 [ERROR] Error reading packet from server: error reading log entry ( server_errno=1236)
131011 12:56:56 [ERROR] Got fatal error 1236: 'error reading log entry' from master when reading data from binary log
131011 12:56:56 [Note] Slave I/O thread exiting, read up to log 'server-bin.002981', position 445451409

Per confermare la causa sono andato a leggere il bin-log server-bin.002981 con l'utility mysqlbinlog ed esattamente alla posizione 445451409 è risultato il sequente statement :

# at 445451409

load data LOCAL INFILE '/tmp/SQL_LOAD_MB-3b0-a' INTO table xxxxxx terminated by ',' optionally  enclosed by '"' LINES TERMINATED BY '\n'/*!*/;

BEGIN/*!*/;
# at 449249522
#131011 12:14:32 server id 1  end_log_pos 449249874     Query   thread_id=68854328      exec_time=0     error_code=0 ... altro comando.....

Confermato : la replica è ferma, IO thread non riesce a leggere il bin-log server-bin.002981

nella posizione 445451409.

mysql> show slave status\G
*************************** 1. row ***************************
             Slave_IO_State:
                Master_Host: server
                Master_User: user
                Master_Port: 3306
              Connect_Retry: 60
            Master_Log_File: server-bin.002981
        Read_Master_Log_Pos: 445451409
             Relay_Log_File: server-relay-bin.009598
              Relay_Log_Pos: 234
      Relay_Master_Log_File: server-bin.002981
           Slave_IO_Running: No
          Slave_SQL_Running: Yes

SOLUZIONE: E' stato necessario eseguire un CHANGE MASTER per la riprendere la lettura del bin-log da parte dell' IO Thread a partire dalla posizione successiva al problema causato dal comando di LOAD (449249522 estratta dal bin-log).

Comando eseguito sullo slave :

mysql> stop slave;

mysql>change master to MASTER_LOG_FILE='server-bin.002981', MASTER_LOG_POS=449249452;

mysql> start slave;

 Allego il link con la descrizione del problema tra la LOAD e la replica MySQL.
 
http://dev.mysql.com/doc/refman/5.1/en/replication-features-load-data.htmlCiaoaoaoa

Alla Prossima.



Ciaoaooa

No comments:

Post a Comment