alta affidabilità: replica di mysql

Sono il sogno di ogni sistemista: due o più database replicati quasi istantaneamente e che non soffrano accidentali disconnessioni. Vediamo cosa offre mysql in tal senso:
 
 

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.

Questo è quello che voglio ottenere:
 

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; )
 

Invia nuovo commento

Il contenuto di questo campo è privato e non verrà mostrato pubblicamente.
  • Indirizzi web o e-mail vengono trasformati in link automaticamente
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Linee e paragrafi vanno a capo automaticamente.

Maggiori informazioni sulle opzioni di formattazione.

CAPTCHA
Questa domanda serve per verificare che tu sia un visitatore umano (non un computer) e per prevenire lo spam
16 + 1 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.