Ho MySQL (5.5) nella configurazione master-slave e ho creato un altro server slave.
Ho fermato lo slave originale, scaricato i dati, copiato e reimportato e ha funzionato bene. Ho notato la posizione master_log dello slave originale e ho usato questi comandi per impostarlo sul nuovo slave
CHANGE MASTER TO MASTER_HOST='<ipaddress>',
MASTER_USER='<username>', MASTER_PASSWORD='<password>',
MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000851',
MASTER_LOG_POS=15824150,
MASTER_CONNECT_RETRY=10;
Quando ho iniziato il nuovo schiavo ho avuto
Last_IO_Error: errore irreversibile 1236 dal master durante la lettura dei dati dal registro binario: 'la voce dell'evento registro ha superato max_allowed_packet; Aumenta max_allowed_packet sul master "
Tuttavia, quando ho avviato lo slave originale, ha raggiunto bene, ed è ora sincronizzato.
Quindi le domande:
il valore attuale è 16M, come faccio a sapere quanto grande andare? (Preferirei evitare tentativi ed errori con un server di produzione).
perché devo aumentare il valore sul master quando lo slave originale ha funzionato bene, il problema potrebbe davvero riguardare il nuovo slave?
aggiornare
Ho aumentato il max_allowed_packet a 1073741824 come suggerito da Rolando al master, al vecchio slave e al nuovo slave, e li SET GLOBAL max_allowed_packet = 1073741824;
ho riavviati ( per qualche motivo non sembra prendere)
ora l'ultimo errore IO è lo stesso di prima, ma ora vedo
Last_SQL_Error: errore lettura log di inoltro: impossibile analizzare la voce dell'evento del log di inoltro. I possibili motivi sono: il registro binario del master è danneggiato (è possibile verificarlo eseguendo "mysqlbinlog" sul registro binario), il registro di inoltro dello slave è danneggiato (è possibile verificarlo eseguendo "mysqlbinlog" nel registro di inoltro), un problema di rete o un bug nel codice MySQL del master o dello slave. Se si desidera controllare il registro binario del master o il registro di inoltro dello slave, sarà possibile conoscerne i nomi emettendo "SHOW SLAVE STATUS" su questo slave.
Se eseguo un mysqlbinlog sul file del master, scorre per anni con i comandi abbastanza felicemente - il file è 722M - se lo faccio per il registro di relè slave ottengo
ERRORE: errore in Log_event :: read_log_event (): 'Controllo di integrità non riuscito', data_len: 38916267, tipo_evento: 69
ERRORE: impossibile leggere la voce all'offset 253: errore nel formato registro o errore di lettura.
Ho controllato le variabili e le modifiche hanno funzionato comunque
mysql> mostra le variabili LIKE '% max_allowed_packet%';
sul nuovo schiavo mostrato max_allowed_packet
E slave_max_allowed_packet
dove solo come sul padronemax_allowed_packet
così ho fatto un controllo di versione sul master:
mysql> show variables LIKE '%version%';
+-------------------------+--------------------------------------+
| Variable_name | Value |
+-------------------------+--------------------------------------+
| innodb_version | 1.1.6 |
| protocol_version | 10 |
| slave_type_conversions | |
| version | 5.5.11-log |
| version_comment | MySQL Community Server (GPL) by Remi |
| version_compile_machine | x86_64 |
| version_compile_os | Linux |
+-------------------------+--------------------------------------+
e sul nuovo schiavo
mysql> show variables LIKE '%version%';
+-------------------------+--------------------------------------+
| Variable_name | Value |
+-------------------------+--------------------------------------+
| innodb_version | 5.5.32 |
| protocol_version | 10 |
| slave_type_conversions | |
| version | 5.5.32-log |
| version_comment | MySQL Community Server (GPL) by Remi |
| version_compile_machine | x86_64 |
| version_compile_os | Linux |
+-------------------------+--------------------------------------+
Queste 2 versioni sono troppo distanti?