Newsgroup: it.comp.software.database
Titolo: MySQL Cluster

Ciao a tutti,
	sto cercando di installare MySQL Cluster per gestire un database   il 
cui dump occupa circa 1,4 gb, ma che è in continua crescita.
Ho letto che MySQL Cluster mantiene il DB in memoria e che quindi 
necessita di grandi quantità di memoria RAM. I server sui quali devo 
installare MySQL dispongono di 2Gb di RAM, ma devono mantenere anche 
altri servizi (tomcat, apache...). Il fatto che debba mantenere il DB in 
memoria mi sembra però moooolto strano, anche se in effetti non riesco 
ad importare il database sul cluster. L'errore che mi da' è il seguente:
"ERROR 1297 (HY000) at line 497: Got temporary error 4025 'Node failure 
caused abort of transaction' from ndbcluster"
inoltre entrambi i data node che ho definito sono morti.
A questo punto il mio dubbio è che non ci sia abbastanza memoria per 
caricare il database. Ma è possibile che non ci sia un modo per 
mantenere in memoria solo una parte del database e non tutto quanto (un 
po come credo funzioni una installazione normale di MySQL)?
Grazie in anticipo per qualsiasi informazione, suggerimento, opinione.


Per come e' strutturato il MySQL Cluster adesso, devi avere almeno
una quantita' di RAM pari al doppio della quantita' totale di dati e indici,
+ il 20%.
Pertanto, se i tuoi dati attuali sono 1.4 GB, ti serve avere 3,2 GB in totale
fra i vari nodi.
Questa e' la teoria. Nella pratica, se non hai due serve *dedicati* a questo
servizio, con un totale di 4 GB di RAM, ci fai ben poco.
L'errore che ti viene dato deriva dal fatto che il MySQL Cluster ha bisogno di
una configurazione minuziosa, che gli indichi quanto spazio deve essere pre-selezionato
per i record e per gli indici.
Per la mia esperienza, un database MySQL con la sua replicazione nativa e' sufficientemente
efficiente e affidabile da farci girare qualsiasi cosa senza grandi patemi d'animo.
L'unico problema e' che devi scrivere solo sul master e distribuire le letture da N slaves.
Non e' un peer-to-peer come il MySQL Cluster.
Peraltro nota che il MySQL Cluster, anche se ogni nodo e' contemporaneamente master
e slave, non ha un meccanismo di failover dal lato server (come il Linux-HA, per intenderci),
ma gestisce solo il failover dal lato client (es.: multi-connect via JDBC).
Ciao
gmax
-- 
   ____ ____  _____ _   _
  / _  |    \(____ ( \ / )
( (_| | | | / ___ |) X (
  \___ |_|_|_\_____(_/ \_)
(_____|
MySQL Certified Professional
Sapere, saper fare, fare, far sapere
http://gmax.oltrelinux.com

 letture da N slaves.
Ti ringrazio per la risposta. Purtroppo a questo database devono 
accedere 3 gruppi di applicazioni che non sono state implementate 
pensando a separare le connessioni che leggono i dati da DB da quelle 
che vanno a scrivere. Utilizzare la replicazione significa mettere mano 
a tali applicazioni e potrebbe essere non tanto semplice. In alternativa 
  ho studiato anche C-JDBC. Diciamo che si tratta di uno strato 
intermedio fra il driver JDBC e i database che si comporta come un 
controller RAID. E' cosě possibile ridondare il database. Purtroppo perň 
non supporta tutte le istruzioni SQL di MySQL come le "REPLACE" e mi č 
parso un po' complicato lato gestione (backup, restore ...).