MySQL problema di replica semplice: "mostra lo stato principale" produce "Set vuoto"?


10

Ho impostato la replica master MySQL (su Debian 6.0.1) seguendo fedelmente queste istruzioni: http://www.neocodesoftware.com/replication/

Sono arrivato a:

mysql > show master status;

ma questo sfortunatamente sta producendo quanto segue, piuttosto che qualsiasi risultato utile:

Empty set (0.00 sec)

Il registro degli errori su /var/log/mysql.errè solo un file vuoto, quindi non mi dà alcun indizio.

Qualche idea?

Questo è ciò che ho inserito /etc/mysql/my.cnfsu un server (modificato in modo appropriato per l'altro server):

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

E ho impostato gli utenti e posso connettermi da MySQL sul server A al database sul server B usando il nome utente / password / indirizzo ip sopra.


Ho anche provato a seguire le istruzioni più semplici su: howtoforge.com/mysql_database_replication (su un solo server) e di nuovo, quando arrivo a show master statusvedere Empty set. Sconcertato!

Riavvia il servizio e controlla. Se vengono registrati registri errori dopo il riavvio, incollare anche quello.

Risposte:


7

È interessante notare che MySQL è in esecuzione sul mio PC con i log binari non abilitati. Ho fatto quanto segue:

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>

Come mostrato, dato che MySQL mostra "Set vuoto" per SHOW MASTER STATUS; perché la registrazione binaria non era abilitata. Questo è ovvio data la configurazione che ho.

La prima cosa da fare è assicurarsi che il registro degli errori abbia una cartella specifica

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

Quindi eseguire quanto segue:

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

Quindi nel client mysql esegui questi comandi SQL

SHOW MASTER STATUS;
SHOW BINARY LOGS;

Se ottieni lo stesso output che avevo prima, MySQL non può scrivere registri binari nella cartella designata. Il tuo dilemma diventa perché MySQL non può scrivere in / var / log.

Questa non è una risposta completa, ma spero che questo aiuti.


L'impostazione di / var / log in modo ricorsivo e con un gruppo di mysql romperà un sistema Linux abbastanza male. Consiglio vivamente alle persone di non farlo. Invece, eseguilo in modo specifico sul file di registro in cui mysql sta tentando di scrivere e, se non è lì, toccalo prima.
John Hunt,

Sai qualcosa, @JohnHunt? Hai ragione. Cambierò la cartella.
RolandoMySQLDBA


0

L'impostazione per log-binnon è corretta, quindi MySQL non può scrivere registri binari. Non è un nome file, è un modello di nome file parziale , a cui MySQL antepone una directory e aggiunge un numero di sequenza e un'estensione. L'impostazione normale è qualcosa di simile

log-bin=log-bin

Controlla il manuale.


--log-bin=file_name( dev.mysql.com/doc/refman/5.7/en/… ). Quale manuale afferma che non è un nome file?
Stephan Vierkant,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.