Question

Je l'ai mis en place la réplication pour le serveur MySQL. Je peux me connecter à partir de la machine esclave sur le serveur maître à l'aide à l'utilisateur de réplication / mot de passe. J'ai le fil SQL esclave qui fonctionne, mais l'esclave E / S fil n'est pas en cours d'exécution et le statut esclave E / S est livré aussi vide lors d'un contrôle en utilisant «statut d'esclave spectacle. Quel pourrait être le problème?

Comment puis-je résoudre ce problème? Redémarrage l'esclave ne permet pas.

Ce fut mon mauvais. Au lieu de donner un privilège « esclave réplication » à *.*, je ne donne pour my_db.*

Était-ce utile?

La solution

  

Au lieu de donner une « réplication   privilège « esclave., j'étais seulement   donnant pour my_db. *.

esclave de réplication est seulement un privilège global (à savoir seulement par l'utilisateur), cela signifie que une commande telle que

GRANT REPLICATION SLAVE on mydb.* TO 'someuser'@'%';

n'a pas d'effet que vous ne pouvez pas accorder par base de données / colonne / table.

La commande que vous devez exécuter est:

GRANT REPLICATION SLAVE on *.* TO 'someuser'@'%';

Ensuite, faites un START SLAVE. Vous trouverez peut-être aussi utile de regarder dans le journal des erreurs MySQL.

Je vous suggère une bonne lecture de la configuration de réplication documentation , car il explique tout cela en détail.

Autres conseils

J'ai fait face même question et fixe à l'aide des étapes suivantes. Complet lien fil est http://www.percona.com/forums/questions-discussions/percona-xtrabackup/11842-backup-stopped-working-slave-sql-running-no

Les étapes sont les mêmes que mentionné par @ Luxknight007 sauf son étape 2. Cependant, ce fil contient plus de détails qui est très utile. A la suite est la solution que j'ai utilisé et cela a fonctionné.

"Le premier problème est que vous avez changé la position de réplication au lieu de corriger l'erreur, et utilisé un format de nom de fichier binlog incorrect (vous avez probablement juste utilisé celui de ce poste que vous avez lié je suppose). Pour revenir à où vous avez commencé, vous devez trouver le fichier binlog et la position que la SQL_THREAD esclave est arrêté à. en fonction de votre sortie d'état esclave, il semble que l'esclave est en train de lire à partir d'un nouveau fichier binlog (vous pouvez voir que la valeur Read_Master_Log_Pos est plus petite que la valeur Exec_Master_Log_Pos, ce qui signifie qu'il doit être en train de lire un fichier plus récent binlog que celui où la SQL_THREAD esclave est arrêté à), alors vous devez trouver le fichier binlog que la SQL_THREAD esclave a échoué sur. alors regardez dans le journal d'erreur pour quelque chose comme ci-dessous:

Code:

2013-10-08 12:48:51 37545 [ERROR] Slave SQL: Error 'Table 'testdb.test2' doesn't exist' on query. Default database: 'testdb'. Query: 'insert into test1 select * from test2', Error_code: 1146
2013-10-08 12:48:51 37545 [Warning] Slave: Table 'testdb.test2' doesn't exist Error_code: 1146
2013-10-08 12:48:51 37545 [ERROR] Error running query, slave SQL thread aborted. Fix the problem, and restart the slave SQL thread with "SLAVE START". We stopped at log 'mysql-bin.000001' position 3427

Ceci est un exemple que je recréés, si le vôtre sera un peu différent. Notez l'erreur est similaire à ce que vous voyez dans votre statut d'esclave. Trouvez votre message d'erreur spécifique dans le fichier journal des erreurs, puis recherchez la partie terminale où est vous donne le nom du fichier et la position ( « Nous nous sommes arrêtés au journal « mysql-bin.000001 » la position 3427 » dans mon exemple). La position doit être 315.098.143 en fonction de votre statut d'esclave show, comme c'est quand il le SQL_THREAD esclave arrêté l'exécution d'événements (Exec_Master_Log_Pos) mais le IO_THREAD continué à lire dans de nouveaux (Read_Master_Log_Pos).

Une fois que vous trouvez le nom du fichier et la position binlog correcte, exécutez à nouveau votre déclaration de changement de maître sur votre esclave en utilisant les informations que vous trouvez dans le journal des erreurs. Notez que votre nom de fichier doit être quelque chose comme « newcrmdb1-bin.XXXXXX », pas mysql-bin.XXXXXX (vous pouvez voir cette convention de nommage de votre statut d'esclave émission ci-dessus).

Code:

mysql> change master to MASTER_LOG_FILE='newcrmdb1-bin.XXXXXX', Master_Log_Pos=315098143;

change master to MASTER_LOG_FILE='mysql-bin.000082' , Master_Log_Pos=47914844;

Une fois que vous êtes pointé à l'emplacement de réplication d'origine où le SQL_THREAD esclave a échoué, vous devez alors corriger l'erreur qu'il se plaignait sur le point de commencer.

L'erreur de réplication initiale semble être vous dire que la table asteriskcdr.bpleadcf n'existe pas sur l'esclave, de sorte que l'instruction d'insertion échoue lorsqu'il tente de sélectionner les données de ce tableau. Donc, le problème est que votre esclave semble être déjà synchronisé avec votre maître. Si la table en question sur le maître est statique ou la plupart du temps statique, vous pourriez probablement résoudre ce problème en exportant les données de cette table juste sur le maître à l'aide mysqldump et le chargement dans l'esclave. Si cela est impossible, ou vous ne se soucient pas de ces données, vous pouvez toujours simplement sauter la déclaration de réplication avec SQL_SLAVE_SKIP_COUNTER, mais l'esclave serait plus synchronisé avec le maître.

Et si tout le reste échoue, vous pouvez toujours reconstruire l'esclave du maître en dernier recours aussi bien. =) "

Je l'ai rencontré le même problème et j'essayer ces étapes

D'abord ajoutez le code ci-dessous quelque part [mysqld] dans my.cnf ou my.ini slave-skip-errors=1046 ce qui va sauter toute entrée en double puisque nous exécuterons le fichier entier journal binaire où l'arrêt de la réplication, vous pouvez commenter ce code après la réplication réussie.

SLAVE 1.Arrêter;

SLAVE 2.RESET;

MASTER 3.Changez À MASTER_LOG_FILE = 'mysql-bin.000049';

Note: MASTER_LOG_FILE must be the last file where it stop from replicating

MASTER 4.Changez À MASTER_LOG_POS = 98;

SLAVE 5.START;

vérifier si vous réussissez

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top