alta affidabilità: replica di mysql

Mysql supporta la replicazione nativa e il clustering. La replica ed il clustering di database sono soluzioni raffinate capaci di apportare un notevole valore aggiunto al valore del sistema informativo in cui operano.
Uso la replica quando:
- voglio fare un backup in tempo reale del database in uso
- voglio ottenere una soluzione ad alta affidabilita almeno dal punto di vista della lettura dei dati
- voglio aumentare le prestazioni in lettura dal database (caso di siti dinamici con grandi aflussi)
- voglio ottenere una replica (asincrona) dei dati anche tra server molto distanti tra loro e/o dotati di connessioni più o meno lente
Uso il clustering quando voglio ottenere:
- una soluzione distribuita ad altissima affidabilità
Mi sono concentrato sulla replica. Il clustering è troppo complesso ma spero di poterlo sperimentare in futuro.

Grande tributo a mysql perche era tanto tempo che non mi capitava di impazzire nell'implementare qualcosa di nuovo. Tutto quello che c'è da sapere è qui, sul sito di mysql. Quindi non c'è nulla da aggiungere unico dettaglio per cui valga la pena leggere questo post è il seguente:
dopo aver dato il comando START SLAVE ci sono due cose da tener presenti anche se sono abbastanza palesi:
il database del server primario e secondario devono essere raggiungibili. Quindi l'utente root (o quello designato per mantenere la sincronia) non puè avere accesso solo da localhost. Con phpmyadin si possono modificare in un istante i diritti di accesso di un utente (senza doversi ricordare tutta la stringa di GRANT)
se al riavvio del database sul / sui server secondario si vede il messaggio error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)', significa che l'utente debian-sys-maint sul sistema master e slave hanno password diverse. Il database è stato clonato, quindi su entrambi i sistemi i dati sono gli stessi anche a livello di utenti.
L'utente debian-sys-maint è un utente usato nelle distro debian-based per svolgere incarichi amministrativi sul database e alcune configurazioni vengono salvate in /etc/mysql/ e quindi sono discrepanti fra loro.
Ci sono due soluzioni:
a) quella spiccia:
dal server primario faccio:
scp /etc/mysql/debian.cnf root@serversecondario:/etc/mysql/debian.cnf
b) quella raffinata:
è spiegata sul forum di ubuntu ovvero:
mysql -uroot -ppassword mysql> GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'password_scritta_in_serversecondario:/etc/mysql/debian.cnf' WITH GRANT OPTION; )
- blog di dam
- 1545 letture

Invia nuovo commento