Nous sommes enfin Mise à niveau de notre environnement MySQL 5.0.90 à Mariadb, et nous souhaitons activer la réplication de MySQL 5.0 à Mariadb 10.2.8, puis à la coupe offrant ainsi un temps d'arrêt minimal. J'ai essayé cela à l'origine avec Mariadb 10.1.18 et cela a bien fonctionné. Mariambb 10.2.8 est devenu GA Donc, nous avons donc déplacé notre processus de mise à niveau à cette version. Maintenant, lorsque j'essaie de commencer la réplication, j'obtiens l'erreur suivante dans le journal MySQLD.err suivant:
Unknown system variable 'binlog_checksum', Internal MariaDB error code: 1193
Quand j'exécute le statut d'esclave "Show Slave", je vois ce qui suit:
Slave_IO_Running: No
Slave_SQL_Running: Yes
Last_IO_Errno: 1595
Last_IO_Error: Relay log write failure: could not queue event from master
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
J'ai essayé de faire des recherches à ce sujet, mais j'ai été incapable de résoudre le problème.
Voici toute la section du journal où la réplication commence.
2017-11-20 8:26:43 140154253575936 [Note] Slave SQL thread initialized, starting replication in log 'mysql-bin.002735' at position 98, relay log './mysqld-relay-bin.000001' position: 4 2017-11-20 8:26:43 140154252973824 [Note] Slave I/O thread: connected to master '[email protected]:3306',replication started in log 'mysql-bin.002735' at position 98 2017-11-20 8:26:43 140154252973824 [Warning] Slave I/O: Notifying master by SET @master_binlog_checksum= @@global.binlog_checksum failed with error: Unknown system variable 'binlog_checksum', Internal MariaDB error code: 1193 2017-11-20 8:26:43 140154252973824 [ERROR] Slave I/O: Replication event checksum verification failed while reading from network, Internal MariaDB error code: 1743 2017-11-20 8:26:43 140154252973824 [ERROR] Slave I/O: Relay log write failure: could not queue event from master, Internal MariaDB error code: 1595 2017-11-20 8:26:43 140154252973824 [Note] Slave I/O thread exiting, read up to log 'mysql-bin.002735', position 98
J'ai trouvé la solution/la solution de contournement. J'ai besoin de définir la variable esclave_sql_verify_checksum = 0 sur l'esclave (Mariadb 10.2.8). J'essayais cela en définissant dynamiquement la variable globale sur l'esclave, mais cela ne fonctionnait pas. Ensuite, j'ai trouvé un bug # MDEV 8505 qui indique que la réinitialisation de la variable ne fonctionne pas de manière dynamique. Une fois que je l'ai défini dans My.cnf et redémarré l'instance, tout a commencé à travailler comme prévu. Heureusement, ce n'est qu'une solution intermédiaire jusqu'à ce que nous achetions la mise à niveau!
5.0 à 10.2 est d'environ 4 sauts majeurs. Donc, je ne suis pas surpris que vous avez rencontré un problème. Si vous aimez, déposez un bogue avec Mariadb à ce sujet. Normalement, un esclave plus récent répliquera avec succès d'un ancien maître. Mais je suppose que c'est trop loin.
Puis-je vous suggérer de partir avec 10,1 pour le moment. Ce sera une mise à niveau importante pour l'instant. Vous pouvez avoir des problèmes subtils encore à découvrir. Ensuite, planifiez le 10.1 à, dites, 10.3 l'année prochaine.
Le manuel indique également "Bug # 61096 ... Si la compatibilité en retard avec les esclaves plus anciennes est une préoccupation, vous voudrez peut-être définir la valeur explicitement sur aucune."
Et ------ 2016-07-04 MARIADB 10.2.1 - - MDEV-8429 : Changer Binlog_Checksum Par défaut pour correspondre à MySQL 5.6.6++