J'ai MySQL (5.5) dans la configuration maître-esclave et j'ai créé un autre serveur esclave.
J'ai arrêté l'esclave d'origine, vidé les données, copié et réimporté et cela a bien fonctionné. J'ai noté le master_log pos de l'esclave d'origine et utilisé ces commandes pour le définir sur le nouvel esclave
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;
Quand j'ai commencé le nouvel esclave, j'ai
Last_IO_Error: erreur fatale 1236 obtenue du maître lors de la lecture des données du journal binaire: 'l'entrée d'événement de journal a dépassé max_allowed_packet; Augmenter max_allowed_packet sur le maître '
Cependant, lorsque j'ai démarré l'esclave d'origine, il a très bien rattrapé et est maintenant synchronisé.
Donc les questions:
la valeur actuelle est de 16M, comment savoir quelle taille aller? (Je préfère éviter les essais et erreurs avec un serveur de production).
pourquoi dois-je augmenter la valeur sur le maître lorsque l'esclave d'origine a très bien fait face, le problème pourrait-il vraiment être avec le nouvel esclave?
mise à jour
J'ai augmenté le max_allowed_packet à 1073741824 comme Rolando l'a suggéré sur le maître, l'ancien esclave et le nouvel esclave, et les SET GLOBAL max_allowed_packet = 1073741824;
ai redémarrés ( pour une raison quelconque, cela ne semblait pas prendre)
maintenant la dernière erreur d'E / S est la même qu'avant, mais maintenant je vois
Last_SQL_Error: échec de lecture du journal de relais: impossible d'analyser l'entrée d'événement du journal de relais. Les raisons possibles sont: le journal binaire du maître est corrompu (vous pouvez le vérifier en exécutant 'mysqlbinlog' sur le journal binaire), le journal de relais de l'esclave est corrompu (vous pouvez le vérifier en exécutant 'mysqlbinlog' sur le journal de relais), un problème de réseau ou bogue dans le code MySQL du maître ou de l'esclave. Si vous souhaitez vérifier le journal binaire du maître ou le journal des relais de l'esclave, vous pourrez connaître leurs noms en émettant 'SHOW SLAVE STATUS' sur cet esclave.
Si je fais un mysqlbinlog sur le fichier du maître, il défile avec bonheur avec des commandes depuis des lustres - le fichier est 722M - si je le fais pour le journal du relais esclave que j'obtiens
ERREUR: erreur dans Log_event :: read_log_event (): 'Échec de la vérification de l'intégrité', data_len: 38916267, event_type: 69
ERREUR: impossible de lire l'entrée à l'offset 253: erreur au format du journal ou erreur de lecture.
J'ai vérifié les variables et les changements ont fonctionné cependant
mysql> afficher les variables LIKE '% max_allowed_packet%';
sur le nouvel esclave a montré max_allowed_packet
ET slave_max_allowed_packet
où, comme sur le maître, il n'a quemax_allowed_packet
j'ai donc fait une vérification de version sur le maître:
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 |
+-------------------------+--------------------------------------+
et sur le nouvel esclave
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 |
+-------------------------+--------------------------------------+
Ces 2 versions sont-elles trop éloignées?