Problema de replicación simple de MySQL: ¿'mostrar estado maestro' produce 'Conjunto vacío'?

10

He estado configurando la replicación maestra MySQL (en Debian 6.0.1) siguiendo fielmente estas instrucciones: http://www.neocodesoftware.com/replication/

Llegué hasta:

mysql > show master status;

pero desafortunadamente esto produce lo siguiente, en lugar de cualquier resultado útil:

Empty set (0.00 sec)

El registro de errores en /var/log/mysql.erres solo un archivo vacío, por lo que no me da ninguna pista.

¿Algunas ideas?

Esto es lo que he puesto en /etc/mysql/my.cnfun servidor (modificado apropiadamente para el otro servidor):

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

Y he configurado usuarios y puedo conectarme desde MySQL en el Servidor A a la base de datos en el Servidor B usando el nombre de usuario / contraseña / dirección IP anterior.


fuente
También intenté seguir las instrucciones más simples en: howtoforge.com/mysql_database_replication (solo en un servidor) y nuevamente, cuando llego a show master statusver Empty set. ¡Desconcertado!
Reinicie el servicio y verifique. Si se genera algún registro de error después del reinicio, péguelo también.

Respuestas:

7

Curiosamente, tengo mysql ejecutándose en mi PC con registros binarios no habilitados. Hice lo siguiente:

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>

Como se muestra, ya que MySQL muestra "Conjunto vacío" para SHOW MASTER STATUS; porque el registro binario no estaba habilitado. Eso es obvio dada la configuración que tengo.

Lo primero que debe hacer es asegurarse de que el registro de errores tenga una carpeta específica

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

Luego ejecute lo siguiente:

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

Luego, en el cliente mysql, ejecute estos comandos SQL

SHOW MASTER STATUS;
SHOW BINARY LOGS;

Si obtiene el mismo resultado que tenía antes, MySQL no puede escribir registros binarios en la carpeta designada. Su dilema se convierte en por qué MySQL no puede escribir en / var / log.

Esta no es una respuesta completa, pero espero que esto ayude.

RolandoMySQLDBA
fuente
Configurar / var / log para que sea de propiedad recursiva y con un grupo de mysql va a romper un sistema Linux bastante mal. Recomiendo encarecidamente a la gente que no haga esto. En su lugar, ejecútelo específicamente en el archivo de registro en el que mysql intenta escribir, y si no está allí, tóquelo primero.
John Hunt
¿Sabes algo, @ JohnHunt? Tienes razón. Cambiaré la carpeta.
RolandoMySQLDBA
0

Su configuración para log-bines incorrecta, por lo que MySQL no puede escribir registros binarios. No es un nombre de archivo, es un patrón de nombre de archivo parcial , al que MySQL antepondrá un directorio y agregará un número de secuencia y una extensión. La configuración habitual es algo así como

log-bin=log-bin

Consulta el manual.

usuario207421
fuente
--log-bin=file_name( dev.mysql.com/doc/refman/5.7/en/… ). ¿Qué manual dice que no es un nombre de archivo?
Stephan Vierkant