Che cos'è il clustering di database? Se si consente allo stesso database di trovarsi su 2 server diversi, come mantengono sincronizzati i dati. E in cosa differisce dal bilanciamento del carico dal punto di vista del server di database?
Che cos'è il clustering di database? Se si consente allo stesso database di trovarsi su 2 server diversi, come mantengono sincronizzati i dati. E in cosa differisce dal bilanciamento del carico dal punto di vista del server di database?
Risposte:
Il clustering del database è un termine un po 'ambiguo, alcuni fornitori considerano un cluster con due o più server che condividono lo stesso spazio di archiviazione, altri chiamano un cluster un set di server replicati.
La replica definisce il metodo con cui un set di server rimane sincronizzato senza dover condividere l'archiviazione per poter essere geograficamente disperso, ci sono due modi principali per farlo:
replica master-master (o multi-master): qualsiasi server può aggiornare il database. Di solito è gestito da un modulo diverso all'interno del database (o un software completamente diverso in esecuzione su di essi in alcuni casi).
L'aspetto negativo è che è molto difficile fare bene e alcuni sistemi perdono le proprietà ACID quando si trovano in questa modalità di replica.
Il lato positivo è che è flessibile e puoi supportare l'errore di qualsiasi server pur mantenendo il database aggiornato.
replica master-slave: esiste una sola copia di dati autorevoli, che viene inviata ai server slave.
L'aspetto negativo è che è meno tollerante ai guasti, se il master muore, non ci sono ulteriori cambiamenti negli slave.
Il lato positivo è che è più facile da fare rispetto al multi-master e di solito conserva le proprietà ACID.
Il bilanciamento del carico è un concetto diverso, consiste nella distribuzione delle query inviate a tali server in modo che il carico sia distribuito nel modo più uniforme possibile. Di solito viene eseguito a livello di applicazione (o con un pool di connessioni). L'unica relazione diretta tra replica e bilanciamento del carico è che è necessaria una replica per poter bilanciare il carico, altrimenti si avrebbe un singolo server.
Dal punto di vista di SQL Server:
Il clustering ti darà una configurazione attiva - passiva. Significato in un cluster a 2 nodi, uno di essi sarà attivo (in servizio) e l'altro sarà passivo (in attesa di subentrare in caso di errore del nodo attivo). È un'alta disponibilità dal punto di vista hardware.
È possibile avere un cluster attivo-attivo, ma richiederà più istanze di SQL Server in esecuzione su ciascun nodo. (ad es. l'istanza 1 sul nodo A che esegue il failover sull'istanza 2 sul nodo B e l'istanza 1 sul nodo B che esegue il failover sull'istanza 2 sul nodo A).
Il bilanciamento del carico (almeno dal punto di vista di SQL Server) non esiste (almeno nello stesso senso del bilanciamento del carico del server Web). Non è possibile bilanciare il carico in questo modo. Tuttavia, è possibile dividere l'applicazione per l'esecuzione su alcuni database sul server 1 e anche su alcuni database sul server 2, ecc. Questa è la media principale di "bilanciamento del carico" nel mondo SQL.
Il clustering utilizza un tipo di archiviazione condivisa (ad esempio una gabbia dell'unità o una SAN) e inserisce due front-end del database. I server front-end condividono un indirizzo IP e un nome di rete del cluster che i client utilizzano per connettersi e decidono tra loro chi è attualmente responsabile della gestione delle richieste dei client.
Se stai chiedendo di un determinato server di database, aggiungilo alla tua domanda e possiamo aggiungere dettagli sulla loro implementazione, ma alla base, ecco cos'è il clustering.
Il clustering di database è in realtà una modalità di replica sincrona tra due o forse più nodi con una funzionalità aggiuntiva di tolleranza agli errori aggiunta al sistema e anche quella in un'architettura nulla condivisa. Per nulla condiviso significa che i singoli nodi in realtà non condividono alcuna risorsa fisica come disco o memoria.
Per quanto riguarda la sincronizzazione dei dati, esiste un server di gestione a cui tutti i nodi di dati sono collegati insieme al nodo SQL per raggiungere questo obiettivo (parlando specificamente di MySQL).
Ora a proposito delle differenze: il bilanciamento del carico è solo uno dei risultati che potrebbero essere raggiunti attraverso il clustering, gli altri includono elevata disponibilità, scalabilità e tolleranza agli errori.