none
Backup e ridondanza RRS feed

  • Domanda

  • Ciao, avevo in mente questo:
    la mia applicazione asp.net utilizza un DB SqlServer 2005 express (per il momento).

    Ho pensato a questa soluzione per il backup, potete tradurmela in fattibilità e materiale da studiare?

    Server SQL1
    Server SQL2

    i 2 server sono identici (mirror?)
    Se dovesse accadere qualcosa al primo, il secondo interviene, quando il primo torna a star bene, il secondo server lo aggiorna e si mettono in pari.
    Se accade qualcosa al secondo server il primo continua a lavorare regolarmente e quando il secondo torna a star bene il primo lo aggiorna.

    Mi sembrerebbe un buon sistema di backup. Le domande sono:

    1) è possibile?
    2) è il miglior sistema di mantenimento del servizio (nell'ottica di dare minor disservizio possibile)
    3) Quali versioni di SQL servono per fare quello che vorrei fare?
    4) come fanno i database a stare sincronizzati?
    5) la connection string deve puntare ad un indirizzo IP del server, come si districano il carico?
    6) è possibile aggiungere altri server che fanno da ulteriore backup? Magari in un'altra sede geografica?

    Vi ringrazio!!! :-)

    martedì 6 aprile 2010 08:37

Risposte

  • Ciao!

     http://msdn.microsoft.com/it-it/library/ms143323.aspx

    http://msdn.microsoft.com/it-it/library/ms143241.aspx

     

    1) è possibile?
    si, guarda i link

    2) è il miglior sistema di mantenimento del servizio (nell'ottica di dare minor disservizio possibile)
    NO! meglio un bel cluster, secondo me. (vuoi indicazioni?)

    3) Quali versioni di SQL servono per fare quello che vorrei fare?
    Puoi scegliere quelle che vuoi, tra 2000-2005-2008, la replica può avvenire in un ambiente "misto", con alcune limitazioni, vedi link iniziali

    4) come fanno i database a stare sincronizzati?
    Impostando un ambiente di replica, vedi link iniziali

    5) la connection string deve puntare ad un indirizzo IP del server, come si districano il carico?
    No, qui entra in gioco ANCHE il load balancing che si fa completamente in un altro modo + devi avere un ambiente di replica che accetti gli aggiornamenti da tutti i server che ne fanno parte in qualsiasi momento (leggiti le varie topologie descritte e vedrai che ne trovi una che fa al caso tuo) Ma è proprio necessario il load balancing?
    ANCHE nel caso del cluster il problema non si pone, perchè il "server virtuale" di SQL ha un unico IP.

    6) è possibile aggiungere altri server che fanno da ulteriore backup? Magari in un'altra sede geografica?
    Si, ed è anche possibile determinare delle time-windows in cui effettuare le repliche.

     

    In GENERALE:

    il cluster di FAILOVER è la soluzione più semplice da installare e ti da' anche un downtime minimo. Banalmente si setuppa il cluster (tra due OS della famiglia enterprise oppure datacenter) e si usa UNA SOLA LICENZA DI SQL (attenzione: 2 licenze sistema operativo e 1 di SQL). POI si fa il setup di SQL e questo si "accorge" che si sta installando su un cluster e prende le azioni necessarie (ti propone le scelte giuste per installare in cluster).

    BASTA. unico neo la necessità di uno storage condiviso tra i "nodi" (cioè i server che fanno parte del cluster).

    Se invece scegli la strada delle repliche ti servono N licenze SQL e un bel po' di setup se vuoi anche metterli in Load balancing.

     

    spero di essere stato esaustivo :-)

     

    Ciao!


    Diego Castelli
    • Contrassegnato come risposta Samantah giovedì 8 aprile 2010 06:47
    martedì 6 aprile 2010 12:39
  • la mia applicazione asp.net utilizza un DB SqlServer 2005 express (per il momento).

    Ho pensato a questa soluzione per il backup, potete tradurmela in fattibilità e materiale da studiare?

    Server SQL1
    Server SQL2

    i 2 server sono identici (mirror?)
    Se dovesse accadere qualcosa al primo, il secondo interviene, quando il primo torna a star bene, il secondo server lo aggiorna e si mettono in pari.
    Se accade qualcosa al secondo server il primo continua a lavorare regolarmente e quando il secondo torna a star bene il primo lo aggiorna.

    Mi sembrerebbe un buon sistema di backup. 

    Ciao Samantah,

    Iniziamo col dire che alta disponibilità e backup sono due concetti alquanto differenti:

    - Il backup serve per avere sempre a disposizione una copia consistente del db da poter ripristinare a fronte di un disastro a livello fisico (server o sala dati distrutti) oppure per recuperare informazioni modificate/eliminate successivamente al backup stesso;

    - Un sistema in alta disponibilità serve per minimizzare i disservizi a fronte di un guasto fisico del server e NON SOSTITUISCE IN ALCUN MODO una policy di backup.

    Purtroppo SQL server Express non offre sistemi per garantire l'alta disponibilità (clustering, database mirroring, log shipping, replica) ma bisogna ricorrere almeno alla Standard Edition.

    Ti segnalo questo articolo di Luca che spiega dettagliatamente il Database Mirroring, soluzione che mi sembra di capire possa essere indicata alla tua situazione.

    Vi ringrazio!!! :-)


    Prego.

    Ciao!


    Lorenzo Benaglia
    Microsoft MVP - SQL Server
    http://blogs.dotnethell.it/lorenzo
    http://social.microsoft.com/Forums/it-IT/sqlserverit
    • Contrassegnato come risposta Samantah giovedì 8 aprile 2010 06:47
    martedì 6 aprile 2010 13:32
    Moderatore
  • Approfitto per studiare il sistema da te consigliato, ossia il clustering.
    Quindi se ho capito bene:
    installo 2 server (non ho capito bene se 2 licenze di Windows 2008 standard edt va bene).

    Ciao Samantah,

    Sono richieste 2 licenze di Windows Server® 2008 Enterprise oppure Windows Server® 2008 Datacenter edition.

    Quindi il cluster è a livello di sistema operativo non tanto di SQL...
    Si, i Failover Cluster Services sono a livello di sistema operativo. Una volta definito un cluster di failover andrai a "clusterizzare" le applicazioni che sfruttano tali servizi.
    Installo 2 sql server con una sola licenza (giustamente tanto non lavorano insieme).
    Solo nel caso in cui il nodo passivo abbia un numero di processori (socket) <= a quello del nodo attivo. Inoltre una volta effettuato il failover hai 30gg per effettuare il failback sul nodo primario, superati i quali dovrai procedere ad acquistare le licenze necessarie (in base al modello di licensing implementato).
    Il downtime mi hai spiegato che è minimo, si parla di secondi? minuti? ore? :-)
    15 - 30 secondi.
    Per quanto riguarda lo spazio disco, cosa intendi per storage condiviso?
    Un terzo server che fà tipo da nas?
    No, ti serve una SAN in fibre channel oppure iSCSI e tutto l'hardware deve essere certificato da Microsoft.
    Non si hanno rallentamenti di scrittura lettura sui dati?

    No.

    Ti segnalo alcuni links che potrebbero esserti utili:

    Grazie di cuore!

    Prego.

    Ciao!


    Lorenzo Benaglia
    Microsoft MVP - SQL Server
    http://blogs.dotnethell.it/lorenzo
    http://social.microsoft.com/Forums/it-IT/sqlserverit
    • Contrassegnato come risposta Samantah giovedì 8 aprile 2010 06:47
    martedì 6 aprile 2010 19:09
    Moderatore
  • Cosa consigliate per avere una buona ridondanza con 2 server e 2 versioni standard di windows 2008? Come sql server, la versione che avremo sarà la 2008 std.

    Cioè in poche parole quello che vorrei pensare è: Server A e Server B. Se muore il server A parte il B, se muore il B amen, se torna up il server A mi và bene qualunque di questi casi:

    - Switch manuale dal B al A.

    - Il B diventa il master (A) e il vecchio A aspetta che al nuovo A succeda qualcosa per tornare A.

    - Switch automatico del B che torna a dormire e A torna capitano.

    Quello che ti ho suggerito ieri, ovvero il Database Mirroring.

    Ciao!


    Lorenzo Benaglia
    Microsoft MVP - SQL Server
    http://blogs.dotnethell.it/lorenzo
    http://social.microsoft.com/Forums/it-IT/sqlserverit
    • Contrassegnato come risposta Samantah giovedì 8 aprile 2010 06:47
    mercoledì 7 aprile 2010 14:15
    Moderatore

Tutte le risposte

  • Ciao!

     http://msdn.microsoft.com/it-it/library/ms143323.aspx

    http://msdn.microsoft.com/it-it/library/ms143241.aspx

     

    1) è possibile?
    si, guarda i link

    2) è il miglior sistema di mantenimento del servizio (nell'ottica di dare minor disservizio possibile)
    NO! meglio un bel cluster, secondo me. (vuoi indicazioni?)

    3) Quali versioni di SQL servono per fare quello che vorrei fare?
    Puoi scegliere quelle che vuoi, tra 2000-2005-2008, la replica può avvenire in un ambiente "misto", con alcune limitazioni, vedi link iniziali

    4) come fanno i database a stare sincronizzati?
    Impostando un ambiente di replica, vedi link iniziali

    5) la connection string deve puntare ad un indirizzo IP del server, come si districano il carico?
    No, qui entra in gioco ANCHE il load balancing che si fa completamente in un altro modo + devi avere un ambiente di replica che accetti gli aggiornamenti da tutti i server che ne fanno parte in qualsiasi momento (leggiti le varie topologie descritte e vedrai che ne trovi una che fa al caso tuo) Ma è proprio necessario il load balancing?
    ANCHE nel caso del cluster il problema non si pone, perchè il "server virtuale" di SQL ha un unico IP.

    6) è possibile aggiungere altri server che fanno da ulteriore backup? Magari in un'altra sede geografica?
    Si, ed è anche possibile determinare delle time-windows in cui effettuare le repliche.

     

    In GENERALE:

    il cluster di FAILOVER è la soluzione più semplice da installare e ti da' anche un downtime minimo. Banalmente si setuppa il cluster (tra due OS della famiglia enterprise oppure datacenter) e si usa UNA SOLA LICENZA DI SQL (attenzione: 2 licenze sistema operativo e 1 di SQL). POI si fa il setup di SQL e questo si "accorge" che si sta installando su un cluster e prende le azioni necessarie (ti propone le scelte giuste per installare in cluster).

    BASTA. unico neo la necessità di uno storage condiviso tra i "nodi" (cioè i server che fanno parte del cluster).

    Se invece scegli la strada delle repliche ti servono N licenze SQL e un bel po' di setup se vuoi anche metterli in Load balancing.

     

    spero di essere stato esaustivo :-)

     

    Ciao!


    Diego Castelli
    • Contrassegnato come risposta Samantah giovedì 8 aprile 2010 06:47
    martedì 6 aprile 2010 12:39
  • Ciao Diego, complimenti per la spiegazione.

    Approfitto per studiare il sistema da te consigliato, ossia il clustering.

    Quindi se ho capito bene:

    installo 2 server (non ho capito bene se 2 licenze di Windows 2008 standard edt va bene).

    Quindi il cluster è a livello di sistema operativo non tanto di SQL...

    Installo 2 sql server con una sola licenza (giustamente tanto non lavorano insieme).

    Il downtime mi hai spiegato che è minimo, si parla di secondi? minuti? ore? :-)

    Per quanto riguarda lo spazio disco, cosa intendi per storage condiviso?

    Un terzo server che fà tipo da nas?

    Non si hanno rallentamenti di scrittura lettura sui dati?

    Grazie di cuore!

     

    martedì 6 aprile 2010 13:25
  • Ciao Diego, complimenti per la spiegazione.

    Approfitto per studiare il sistema da te consigliato, ossia il clustering.

    Quindi se ho capito bene:

    installo 2 server (non ho capito bene se 2 licenze di Windows 2008 standard edt va bene).

    Quindi il cluster è a livello di sistema operativo non tanto di SQL...

    Installo 2 sql server con una sola licenza (giustamente tanto non lavorano insieme).

    Il downtime mi hai spiegato che è minimo, si parla di secondi? minuti? ore? :-)

    Per quanto riguarda lo spazio disco, cosa intendi per storage condiviso?

    Un terzo server che fà tipo da nas?

    Non si hanno rallentamenti di scrittura lettura sui dati?

    Grazie di cuore!

     

    martedì 6 aprile 2010 13:25
  • la mia applicazione asp.net utilizza un DB SqlServer 2005 express (per il momento).

    Ho pensato a questa soluzione per il backup, potete tradurmela in fattibilità e materiale da studiare?

    Server SQL1
    Server SQL2

    i 2 server sono identici (mirror?)
    Se dovesse accadere qualcosa al primo, il secondo interviene, quando il primo torna a star bene, il secondo server lo aggiorna e si mettono in pari.
    Se accade qualcosa al secondo server il primo continua a lavorare regolarmente e quando il secondo torna a star bene il primo lo aggiorna.

    Mi sembrerebbe un buon sistema di backup. 

    Ciao Samantah,

    Iniziamo col dire che alta disponibilità e backup sono due concetti alquanto differenti:

    - Il backup serve per avere sempre a disposizione una copia consistente del db da poter ripristinare a fronte di un disastro a livello fisico (server o sala dati distrutti) oppure per recuperare informazioni modificate/eliminate successivamente al backup stesso;

    - Un sistema in alta disponibilità serve per minimizzare i disservizi a fronte di un guasto fisico del server e NON SOSTITUISCE IN ALCUN MODO una policy di backup.

    Purtroppo SQL server Express non offre sistemi per garantire l'alta disponibilità (clustering, database mirroring, log shipping, replica) ma bisogna ricorrere almeno alla Standard Edition.

    Ti segnalo questo articolo di Luca che spiega dettagliatamente il Database Mirroring, soluzione che mi sembra di capire possa essere indicata alla tua situazione.

    Vi ringrazio!!! :-)


    Prego.

    Ciao!


    Lorenzo Benaglia
    Microsoft MVP - SQL Server
    http://blogs.dotnethell.it/lorenzo
    http://social.microsoft.com/Forums/it-IT/sqlserverit
    • Contrassegnato come risposta Samantah giovedì 8 aprile 2010 06:47
    martedì 6 aprile 2010 13:32
    Moderatore
  • Approfitto per studiare il sistema da te consigliato, ossia il clustering.
    Quindi se ho capito bene:
    installo 2 server (non ho capito bene se 2 licenze di Windows 2008 standard edt va bene).

    Ciao Samantah,

    Sono richieste 2 licenze di Windows Server® 2008 Enterprise oppure Windows Server® 2008 Datacenter edition.

    Quindi il cluster è a livello di sistema operativo non tanto di SQL...
    Si, i Failover Cluster Services sono a livello di sistema operativo. Una volta definito un cluster di failover andrai a "clusterizzare" le applicazioni che sfruttano tali servizi.
    Installo 2 sql server con una sola licenza (giustamente tanto non lavorano insieme).
    Solo nel caso in cui il nodo passivo abbia un numero di processori (socket) <= a quello del nodo attivo. Inoltre una volta effettuato il failover hai 30gg per effettuare il failback sul nodo primario, superati i quali dovrai procedere ad acquistare le licenze necessarie (in base al modello di licensing implementato).
    Il downtime mi hai spiegato che è minimo, si parla di secondi? minuti? ore? :-)
    15 - 30 secondi.
    Per quanto riguarda lo spazio disco, cosa intendi per storage condiviso?
    Un terzo server che fà tipo da nas?
    No, ti serve una SAN in fibre channel oppure iSCSI e tutto l'hardware deve essere certificato da Microsoft.
    Non si hanno rallentamenti di scrittura lettura sui dati?

    No.

    Ti segnalo alcuni links che potrebbero esserti utili:

    Grazie di cuore!

    Prego.

    Ciao!


    Lorenzo Benaglia
    Microsoft MVP - SQL Server
    http://blogs.dotnethell.it/lorenzo
    http://social.microsoft.com/Forums/it-IT/sqlserverit
    • Contrassegnato come risposta Samantah giovedì 8 aprile 2010 06:47
    martedì 6 aprile 2010 19:09
    Moderatore
  • Quindi questa soluzione, sicuramente buona il failover cluster ma un po costosa.

    Cosa consigliate per avere una buona ridondanza con 2 server e 2 versioni standard di windows 2008? Come sql server, la versione che avremo sarà la 2008 std.

    Cioè in poche parole quello che vorrei pensare è: Server A e Server B. Se muore il server A parte il B, se muore il B amen, se torna up il server A mi và bene qualunque di questi casi:

    - Switch manuale dal B al A.

    - Il B diventa il master (A) e il vecchio A aspetta che al nuovo A succeda qualcosa per tornare A.

    - Switch automatico del B che torna a dormire e A torna capitano.

    mercoledì 7 aprile 2010 12:54
  • Cosa consigliate per avere una buona ridondanza con 2 server e 2 versioni standard di windows 2008? Come sql server, la versione che avremo sarà la 2008 std.

    Cioè in poche parole quello che vorrei pensare è: Server A e Server B. Se muore il server A parte il B, se muore il B amen, se torna up il server A mi và bene qualunque di questi casi:

    - Switch manuale dal B al A.

    - Il B diventa il master (A) e il vecchio A aspetta che al nuovo A succeda qualcosa per tornare A.

    - Switch automatico del B che torna a dormire e A torna capitano.

    Quello che ti ho suggerito ieri, ovvero il Database Mirroring.

    Ciao!


    Lorenzo Benaglia
    Microsoft MVP - SQL Server
    http://blogs.dotnethell.it/lorenzo
    http://social.microsoft.com/Forums/it-IT/sqlserverit
    • Contrassegnato come risposta Samantah giovedì 8 aprile 2010 06:47
    mercoledì 7 aprile 2010 14:15
    Moderatore
  • Grazie Lorenzo e grazie a tutti.

    Mi leggo bene il documento stamani in treno e in caso mi rifaccio viva :-)

    giovedì 8 aprile 2010 06:47