Repliche DB MySQL

Kismet

Nuovo Utente
4 Apr 2010
9
0
0
Ciao a tutti, scrivo poco e me ne rammarico, ma spero che qualcuno mi aiuti a risolvere il problema.

Ho due DB MySQL Master->Slave

Fin quando modifico la struttura del DB master nessun problema esso viene replicato esattamente nel DB salve, ma i record sullo slave non vengono mai aggiornati restano immutati.

Questo è quello che c'è su Master:

mysql> SHOW MASTER STATUS
-> ;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 | 1169 | kismet_3 | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

Questo è quello che c'è su Slave:

mysql> SHOW SLAVE STATUS\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: XXX.XXX.XXX.XXX
Master_User: slave
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000002
Read_Master_Log_Pos: 1169
Relay_Log_File: slave-relay.000030
Relay_Log_Pos: 235
Relay_Master_Log_File: mysql-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: kismet_3
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 1169
Relay_Log_Space: 235
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
1 row in set (0.00 sec)

ERROR:
No query specified

Qualche idea sul perchè?
 

Trogo

Utente Attivo
11 Gen 2008
370
0
0
43
Sanremo
Così "a naso" ho un dubbio sulle query che vengono eseguite:
Usando questa configurazione Replicate_Do_DB: kismet_3 e avendo come formato del log STATEMENT, questa query non verrà loggata:

INSERT INTO kismet_3.<nometabella> ...

Verrà invece loggata questa:

USE kismet_3
INSERT INTO <nometabella> ...

In pratica, per controllare se la query deve essere loggata o meno, fa affidamento solo al default DB selezionato al momento dell'esecuzione della query, non considerando un eventuale riferimento all'interno della query di inserimento o aggiornamento.

NB: ovviamente il fatto che il formato del log sia STATEMENT è una mia supposizione...
 

Kismet

Nuovo Utente
4 Apr 2010
9
0
0
Intanto grazie per l'interesse.

Mi ha incuriosito quello che mi hai detto quindi mi sono aperto a mano il file mysql-bin.00002 e ho trovato in mezzo a caratteri "a caso" anche una query che avevo eseguito direttamente da phpmyadmin sul master ed è stata replicata anche sullo slave.

Quindi ora mi sorge un dubbio ascolta bene.

Il master remoto è "abbastanza potente" e qui risiede il DB principale. Lo slave lo uso per analisi ed è a pieno carico 7/24.

I dati lo slave li preleva dal master e ci riscrive i risultati dell'analisi quindi a sto punto mi sorge un dubbio. Visto che le query le effettua lo slave sul master quindi il master non scrive mai nulla sul log delle operazioni dei cambiamenti che vengono effettuati sul proprio DB.

Potrebbe essere giusto?

Di conseguenza in questa maniera la replica non è possibile.
 

Trogo

Utente Attivo
11 Gen 2008
370
0
0
43
Sanremo
I dati lo slave li preleva dal master e ci riscrive i risultati dell'analisi quindi a sto punto mi sorge un dubbio. Visto che le query le effettua lo slave sul master quindi il master non scrive mai nulla sul log delle operazioni dei cambiamenti che vengono effettuati sul proprio DB.

Bhe, il prelievo e l'analisi dei dati, anche se eseguita su server dove gira lo slave di MySQL, saranno fatti da un software esterno, non certo da MySQL... Quindi è questo software a eseguire le query di aggiornamento, ed il fatto che risieda sullo stesso server dello slave, non può incidere sul funzionamento della replica.

Questo software di analisi lo conosci, nel senso sai esattamente quali query esegue?
In alternativa, potresti abilitare sul master il log delle query (o magari farlo in ogni caso), e poi postare una delle query che non viene loggata per la replica?
 

Kismet

Nuovo Utente
4 Apr 2010
9
0
0
Beh stiamo parlando di circa 60/70000 query al giorno e mi sembra strano che mi logghi solamente quella fatta a mano.

La cosa strana è che su mysql-bin la query non era nel formato update db.table ma solo update table.

Il codice è mio quindi so esattamete cosa fa.

Quindi ti chiedo solo come abilitare il file di log di mysql e quanto grandi mi diventano i log e quante risorse si porta via per scriverci dentro (scusa i tanti quanti :confused:).

ciao
 

Trogo

Utente Attivo
11 Gen 2008
370
0
0
43
Sanremo
Bhe, ma se il codice è tuo allora non c'è neanche bisogno di abilitare il log delle query (in ogni caso in my.cnf "log = /path/to/file.log"). Basta che guardi nel codice se le query sono eseguite selezionando un DB di default (es. in PHP mysql_select_db) oppure direttamente, con il riferimento a
<nomedb>.<nometabella>.

La cosa strana è che su mysql-bin la query non era nel formato update db.table ma solo update table

E' esattamente quello che ci deve essere, selezionando il db di default. Se la query l'hai eseguita con phpMyAdmin, molto probabilmente sarai andato sul DB interessato (se non proprio sulla tabella) e poi su "SQL" per eseguire la query. Questa operazione fa sì che il DB venga selezionato come default e che la query venga loggata. Prova invece ad andare, subito dopo il login in phpMyAdmin, su "SQL" senza selezionare alcun DB ed esegui la query (qui dovrai specificare <nomedb>.<nometabella>). Se è come penso in questo caso la query non dovrebbe essere loggata.

Ciao

PS. per quanto riguarda il log delle query è un'opzione decisamente pesante (soprattutto per l'I/O), dato che logga proprio tutte le query, SELECT comprese...
 
Ultima modifica:
Discussioni simili
Autore Titolo Forum Risposte Data
O [MySQL] Repliche database e MariaDB MySQL 0
K form Inserimento record mysql PHP 2
P Mysql lento a cancellare MySQL 1
P Codifica caratteri speciali mysql php PHP 0
N MAX() + ADD_DATE - per update su Mysql MySQL 0
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
W MySQL ciclo in SELECT MySQL 0
L Mysql gestionale multipiattaforma MySQL 0
W MySQL SELECT list dinamica MySQL 0
M utilizzo mysql in nodejs - crea createdAt e updateAt MySQL 1
T colonne di tabelle mysql ordinate MySQL 0
M Sintassi "personalizzata" per mysql workbench? MySQL 0
A Mysql MySQL 0
F Ricreare struttura php+mysql su Xampp Apache 0
M Array associativi php su 2 campi mysql PHP 10
Z Controllo giorni MYSQL PHP 0
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
L Mysql: Nascondere le pagine dopo una ricerca PHP 1
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
S problema con recupero dati tabella mysql PHP 2
E Progressbar estrazione dati da tabella mySQL Ajax 9
Z MySql injection PHP PHP 1
D controllare valore in tabella mysql PHP 0
A pulsante di update campo mysql con javascript Javascript 2
R Tutto su utf-8 ma ancora problemi con i caratteri speciali in mysql MySQL 1
T differenza fra mysql xampp e un mysql server Database 0
R Importazione csv su mysql tramite array PHP 2
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
D problema php mysql PHP 1
D problema php mysql PHP 1
N Server mysql non raggiungibile da connessione esterna MySQL 1
B Crea pdf da tabella mysql "ultima riga modificata" MySQL 4
D evitare di inserirre duplicati in mysql PHP 4
L salvare codice html in mysql PHP 3
L Google chart php mysql PHP 2
S Gestire scelta dropdown con dati da Mysql PHP 2
K cron job mysql PHP 3
elpirata Query per leggere dati da una tabella mysql e mostrarli a video in base a parametri passati tramite GET PHP 5
R Errore UPDATE tabella mysql PHP 1
R Caricamento immagine su cartella remota + mysql PHP 3
D Emoji in mysql Database 0
L Aiuto per programma web php/mySQL PHP 2
S Problema esportazione tabelle Mysql in Excel PHP 0
S Cancellare una riga MYSQL PHP 1
L Ricerca valore mysql e incremento PHP 73
G database mysql contengono informazioni ? MySQL 0

Discussioni simili