Topic: Pubblico - Composto da 8 Posts di 2 Utenti.
| 28 Giugno, 2010 14:55 | #1 | ||
|---|---|---|---|
|
Ciao a tutti, mi sono appena registrato e 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
-> ;
Questo è quello che c’è su Slave: mysql> SHOW SLAVE STATUS\G;
ERROR: No query specified Qualche idea sul perchè? |
|||
| 28 Giugno, 2010 20:22 | #2 | ||
|---|---|---|---|
|
Ciao kismet Beh questo post comincia con un pò di scuse. Le prime relative al malfunzionamento dell’editor, ma stai tranquillo, sono in arrivo tantissime novità per MySQL Italia e tra queste anche un nuovo editor! :-) Non ti riesco a rispondere a volo, mi sono perso l’output del comando 1SHOW MASTER STATUS Se posso chiederti la gentilezza di, ripostare l’output del Master status, poi volevo capire se stai attivando una nuova replicazione o se la configurazione ha smesso di funzionare ? Grazie e scusa ancora, anche per il ritardo nella risposta ma questa è una settimana nera :-D Saluti algweb Un tempo ero algweb ora sono g2d |
|||
| 28 Giugno, 2010 20:47 | #3 | ||
|---|---|---|---|
|
Ciao e grazie intanto per aver risposto e condivido la tua settimana nera :) Ti riposto il master status: File: mysql-bin.000002 Position: 1169 Binlog_Do_DB: kismet_3 Binlog_Ignore_DB: 1 row in set (0.00 sec) Ti aggiungo anche le righe cho ho usato su /etc/my.cnf (sto su centos 5.4 e mysql 5.0.77) #Mie aggiunte log-bin=/var/lib/mysql/mysql-bin.log binlog-do-db=kismet_3 server-id=1 Quello impostate sullo slave sempre sentos 5.4 e mysql 5.0.77: server-id=2 master_host=xxx.xxx.xxx.xxx master-connect-retry=60 master-user=slave master-password=xxxxxxxx replicate-do-db=kismet_3 Vedi se riesci a darmi una mano La configurazione l’ho fatta partendo da zero seguendo alcune guide trovare in rete… Grazie intanto
Ultima modifica 11 Luglio, 2010 01:16 di kismet |
|||
| 29 Giugno, 2010 19:28 | #4 | ||
|---|---|---|---|
|
Ciao user:kismet, tranquillo che non ti abbandono, prima di tutto prova ad aggiungere al my.cnf del master sync_binlog = 1 poi mi servirebbe anche l’output di 1SHOW PROCESSLIST; Eseguilo sul master, scusami se non te l’ho chiesto nel post precedente. Fammi sapere scusa il ritardo saluti algweb Un tempo ero algweb ora sono g2d |
|||
| 29 Giugno, 2010 20:55 | #5 | ||
|---|---|---|---|
|
Questo è il processlist mysql> SHOW PROCESSLIST;
Comunque oggi ho provato a fare una cosa. Da phpmyadmin ho provato a cambiare un indice a mano (so che non si fa ma volte…) e stranamente/giustamente me l’ha cambiato annche sullo slave. Ora ti dico la mia situazione. Ho 2 server uno con 1 gb di ram (slave) e l’altro 2gb (master). Lo slave esegue tutto il giorno degli script in background, circa 10 ogni 2 secondi (non ti dico come sta messo poverino :)), i dati che deve elaborare li preleva dal master, li elabora e salva nuovamente i risultati ottenuti sul master (lo slave deve solo fare quello e non è accessibile dall’esterno, mentre il master è aperto al pubblico). Quindi a questo punto ho pensato che visto che gli script e quindi le query vengono inviate dallo slave il master non tenga conto dei cambiamenti che avvengono nel DB e quindi il log non venga scritto. Ti dico questo pechè ho provato ad aprire il file mysql-bin.00002 a mano e ho visto tra i caratteri cifrati anche la query fatta da phpmyadmin che ti accennavo all’inizio. Quindi se la mia “deduzione” (chiamala illuminazione :)) è giusta come posso replicare i dati anche sullo slave, evitanto a priori i dump. Voglio provare a fare così per allegerire il master effettuando le letture sullo slave e le scritture sul master ma tenendo una copia anche sullo slave del contenuto di un DB per evitare spiacevoli sorprese. E’ la prima volta che mi avventuro in un progetto così “vasto” e spero mi perdonerai se sto proponendo dei problemi per certi versi elementari. Ciao e grazie Ho modificato il post, solo per sostituire all’indirizzo IP del tuo server i valori XX.XX…. siamo sempre su WEB è meglio essere cauti
Ultima modifica 11 Luglio, 2010 01:16 di g2d |
|||
| 29 Giugno, 2010 22:13 | #6 | ||
|---|---|---|---|
|
Ciao kismet penso che sia opportuno fare un pò di ordine, allora…. se sei riuscito a propagare la modifica dal master allo slave direi che la replicazione funge! ... e questa è già una bella notizia. Se ho capito bene il tuo slave si occupa di ricevere le modifiche dal master ( e quindi implementa la replicazione in senso stretto) e poi? Non ho ben capito, poichè se sullo stesso DB replicato fai delle operazioni di scrittura, allora potresti corrompere la replicazione. Scusami ma quando dici: Quindi se la mia “deduzione” (chiamala illuminazione Smile) è giusta come posso replicare i dati anche sullo slave, evitanto a priori i dump. Voglio provare a fare così per allegerire il master effettuando le letture sullo slave e le scritture sul master ma tenendo una copia anche sullo slave del contenuto di un DB per evitare spiacevoli sorprese. Vuoi ottenere di fatto una sincronizzazione tra i due ? o vuoi ottenere una replica, per elaborare i dati e continuare ad aggiornare il master, con un applicazione che risiede sullo slave, creando così un loop tra i due ? saluti algweb Un tempo ero algweb ora sono g2d |
|||
| 29 Giugno, 2010 23:48 | #7 | ||
|---|---|---|---|
|
Ciao allora attualmente la lettura e scrittura avviene solamente sul master. Lo slave elabora solo i dati. Il mio intento finale era di far si che lo slave leggesse i dati dal db residente nello slave, i dati così elaborati salvati sul master e mantenere, a questo punto una sola tabella del master replicata anche sullo slave che alla fine sarebbe quella dove lo slave salva i dati elaborati, che per me sarebbe un problema perdere (parliamo di circa 30.000 record al giorno). Così facendo caricherei meno il master di lavoro (mediamente mysql mi occupa 30% nell’uso del processore). Secondo te si può fare una cosa del genere? Oppure dovrei invertire i ruoli dei server? Grazie (mo vado a nanna!)
Ultima modifica 11 Luglio, 2010 01:16 di kismet |
|||
| 30 Giugno, 2010 22:39 | #8 | ||
|---|---|---|---|
|
Ciao kismet ancora una volta scusa per il ritardo nella risposta ma credimi, non sono giorni veramente pesanti e non riesco a fare meglio Forse ho capito il tuo problema, tu vuoi in effetti alleggerire il carico sul master replicando su uno slave e, con una tua applicazione, vuoi rielaborare questi dati per poi rispedirli al master… Guarda penso che in generale possa funzionare ma vai a creare un loop che non mi piace molto… all’inizio può pure funzionare ma …. a lungo andare secondo me … rischi… Perchè non pensare ad un piccolo cluster ? che ne pensi ? Una curiosità…. 30mila query al giorno sono veramente tante… ma se posso chiedere … che tipo di applicazione hai ? le tue tabelle quanto sono grandi ? Grazie Scusa ancora per il ritardo Saluti algweb Un tempo ero algweb ora sono g2d |
|||
Condividi su:
Loggati o Registrati per replicare