Problème de réplication simple MySQL: 'show master status' produit 'Empty set'?

10

J'ai mis en place la réplication maître MySQL (sur Debian 6.0.1) en suivant fidèlement ces instructions: http://www.neocodesoftware.com/replication/

J'ai autant que:

mysql > show master status;

mais cela produit malheureusement ce qui suit, plutôt que n'importe quelle sortie utile:

Empty set (0.00 sec)

Le journal des erreurs sur /var/log/mysql.errest juste un fichier vide, donc cela ne me donne aucun indice.

Des idées?

Voici ce que j'ai mis /etc/mysql/my.cnfsur un serveur (modifié de manière appropriée pour l'autre serveur):

server-id = 1
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 1
master-host = 10.0.0.3
master-user = <myusername>
master-password = <mypass>
master-connect-retry = 60
replicate-do-db = fruit
log-bin = /var/log/mysql-replication.log
binlog-do-db = fruit

Et j'ai configuré des utilisateurs et je peux me connecter de MySQL sur le serveur A à la base de données sur le serveur B en utilisant le nom d'utilisateur / mot de passe / adresse IP ci-dessus.


la source
J'ai également essayé de suivre les instructions plus simples sur: howtoforge.com/mysql_database_replication (sur un seul serveur) et encore une fois, quand j'y arrive, show master statusje vois Empty set. Déconcerté!
Redémarrez le service et vérifiez. Si des journaux d'erreurs sont générés après le redémarrage, collez-les également.

Réponses:

7

Fait intéressant, j'ai mysql en cours d'exécution sur mon PC avec les journaux binaires non activés. J'ai fait ce qui suit:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 19
Server version: 5.5.12 MySQL Community Server (GPL)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show master status;
Empty set (0.00 sec)

mysql> show binary logs;
ERROR 1381 (HY000): You are not using binary logging

mysql>

Comme indiqué, puisque MySQL affiche "Empty Set" pour SHOW MASTER STATUS; car la journalisation binaire n'était pas activée. C'est évident étant donné la configuration que j'ai.

La première chose à faire est de vous assurer que le journal des erreurs a un dossier spécifique

[mysqld]
log-error=/var/log/mysql/mysql.err
log-bin = /var/log/mysql/mysql-replication.log

Exécutez ensuite ce qui suit:

service mysql stop
mkdir /var/log/mysql
chown -R mysql:mysql /var/log/mysql
service mysql start

Ensuite, dans le client mysql, exécutez ces commandes SQL

SHOW MASTER STATUS;
SHOW BINARY LOGS;

Si vous obtenez la même sortie que j'avais auparavant, alors MySQL ne peut pas écrire de journaux binaires dans le dossier désigné. Votre dilemme devient pourquoi MySQL ne peut pas écrire dans / var / log.

Ce n'est pas une réponse complète mais j'espère que cela vous aidera.

RolandoMySQLDBA
la source
Définir / var / log pour être récursivement détenu et avec un groupe de mysql va assez mal casser un système linux. Je conseille fortement aux gens de ne pas faire ça. Au lieu de cela, exécutez cela spécifiquement sur le fichier journal que mysql essaie d'écrire, et s'il n'est pas là, touchez-le d'abord.
John Hunt
Vous savez quelque chose, @JohnHunt? Tu as raison. Je vais changer de dossier.
RolandoMySQLDBA
1

Si la version de Mysql est> 5.0, vos paramètres de réplication maître-hôte, maître-utilisateur, maître-mot de passe et quelques autres dans votre my.cnf seront ignorés. Utilisez CHANGE MASTER TO pour la configuration de réplication initiale.

Comparez http://dev.mysql.com/doc/refman/5.1/en/replication-howto-slaveinit.html

Alexander Janssen
la source
0

Votre paramètre pour log-binest incorrect, donc MySQL ne peut pas écrire de journaux binaires. Ce n'est pas un nom de fichier, c'est un modèle de nom de fichier partiel , auquel MySQL ajoutera un répertoire et ajoutera un numéro de séquence et une extension. Le réglage habituel est quelque chose comme

log-bin=log-bin

Consultez le manuel.

user207421
la source
--log-bin=file_name( dev.mysql.com/doc/refman/5.7/en/… ). Quel manuel indique qu'il ne s'agit pas d'un nom de fichier?
Stephan Vierkant