Il DataBase di Exchange Server 2003: fondamenti, storage design, amministrazione 25 novembre 2005 - 10:30 Alessandro Appiani MCT MCSE (2000 NT 4.0 NT 3.5) Agenda Exchange database technology Exchange Database concepts Storage Groups / Database Come conservare e recuperare i dati The Jet database primer item mailbox Backup & Restore Recovery Storage Group come ripristinare singoli item o mailbox miglioramenti SP1 Exchange Server 2003 Data store Exchange Server 2003: DB storage e mailing di classe enterprise! In the beginning…. ...there was JET Exchange (4.0) nasce con un’architettura ed un motore di database proprietario Oggi la stessa tecnologia di database è utilizzata, oltre che da Exchange, anche per altri componenti infrastrutturali (WINS, DHCP, ...) Il più importante di questi è Active Directory I vantaggi di un DBMS Strutturazione delle informazioni per una loro migliore gestione Ottimizzazione dello spazio (es: attach link) Ottimizzazione delle prestazioni Transazionalità dell’I/O (logging) query, search, indexing, ... commit, rollback Capacità di recovery delle attività fino al momento precedente al “crash” non solo fino al backup precedente da configurare opportunamente Cenni alla struttura interna del DB Tabelle memorizzate con la tecnica dei Btree Strutture di Indici per velocizzare gli accessi Una tabella è una collection di b-trees Data tree Long-value tree (per grandi blocchi di dati) Index trees B-trees Consentono di ottimizzare i tempi di accesso ai dati I dati sono ordinati secondo delle chiavi definite dall’applicazione Ogni B-tree è costituito da piccole pagine tutte uguali di 4K/8K minimizzando il numero di I/O richieste per leggere un record 4K per Exchange 8K per Active Directory Le pagine vengono messe in cache per migliorare le prestazioni Un esempio di b-tree Root Page Page Page Pointer Internal Record Leaf Dati memorizzati solo nelle foglie (leaf) dell’albero (records) Exchange database Globals table Mailboxes table Folders table Message table Attachments table MessageFolder tables Search tables ... eseutil /ms Transazioni Transaction è una unit of work atomica sul DB Tutte le operazioni che la compongono vengono svolte o non svolte completamente (commit/rollback) Es: spostare un messaggio tra cartelle Delete from source folder Insert into new folder Update folder sizes Anche in caso di crash la situazione deve essere consistente (o è nella vecchia o è nella nuova) E’ necessario “loggare” le transazioni (journaling) I guasti succedono Power failures Disk crashes System errors E’ necessario mantenere comunque la consistenza del DB Non devono esserci operazioni in sospeso (no partially committed transactions) Logfiles Il log è suddiviso in tanti piccoli files chiamati ‘generations’ Generations sono denominate ENNXXXXX.LOG NN è lo storage group XXXXX è la generation (hexadecimal) ENN.LOG è la generation più recente ENNTMP.LOG è in fase di creazione di un nuovo logfile RESN.LOG servono a riservare spazio disco Sequenza dei Log Files Il log corrente viene ridenominato quando si riempie (5MB) Previous Logs Current Log 53 MB New E00.log (5 MB) Renamed E0000001.LOG E0000002.LOG E0000003.LOG . . . Transaction Logging (*.LOG) “Write-ahead” logging le pagine modificate del DB database non vengono scritte immediatamente sul disco (cached version) appendere dati ai logfile è veloce (più delle scritture sul DB) il DB viene aggiornato ogni tanto (blocco di scritture contemporanee/batch) I Checkpoint file (*.chk) tengono traccia della posizione dell’ultima transazione scritta sul database Un database è consistente quando tutte le sue transazioni sono state completate e scritte Circular logging – cancellazione automatica dei logfiles più vecchi del checkpoint Checkpoint Files Transaction Log Entries Written to the Database E00.chk Transaction Log Entries Not Yet Written to the Database E0000001.log Exchange Store & files Store .stm .edb Public Folder Store Mailbox Store First Storage Group Mailbox Store Sales Storage Group Storage Group Insieme di database che condividono gli stessi log files E’ una istanza separata del motore Jet (gestito sempre dall’Information Store) 4 Storage groups per Server 5 Databases per Storage Group 1 Storage Group di riserva specifico per i restore (1 per server) Exchange Databases *.EDB Files *.STM Files Properties Database MAPI Messages and Attachments Headers for STM pages Raw ‘streaming’ data (MIME, documents, multimedia, etc) Current database = EDB + STM + Unflushed Log entries Il flusso dei dati nello store SMTP/NNTP/ HTTP MAPI Store Submit Submit Private or Public MDB Property Store (EDB) Data Data Streaming Store (STM) Data Property On-demand PromotionConversion On-demand Conversion MAPI Retrieve View/Search Retrieve Retrieve Retrieve POP3/IMAP4/ NNTP/HTTP File Location (un esempio) C:\ System Partition and Boot Partition Page File D:\ Mirror Set G:\ E:\ Storage Group 1 Transaction Logs Mirror Set F:\ Storage Group 2 Transaction Logs Mirror Set All Database Files For Both Storage Groups Stripe Set with Parity Putting it all together STORE Storage Group 1 Storage Group 2 ESE Instance ESE Instance LOG LOG LOG EDB STM LOG LOG LOG EDB STM EDB STM EDB STM EDB STM Quindi, dove è la mia mail? sicuramente nei log! le transazioni più recenti possono non essere ancora state scritte nel db il database viene chiuso correttamente (shutdown cleanly) se tutte le transazioni sono completate tutte le modifiche sono state applicate al database ESEUTIL /MH riporta lo stato del db db & files location move Backup E’ fondamentale farlo! Si fa online, nessun fermo dei servizi Archivia ed elimina i log Deve essere effettuato in accordo con ESE (DB Engine) exchange backup agent Streaming Backup Types Type Copies DB Copy Logs Truncates Logs Full(Normal) X X Copy/Daily X X Incremental X Differential X Offline X X X X Avoid if at all possible Streaming Backup Process flow Backup APIs Called • Backup tells store backup will begin • Type of backup Backup Complete ESE Backup Mode Begin Backup • Store informs ESE • Agent requests DB pages and backup mode entered sequentially • Pages are check-summed as read ESE Normal Mode End Backup • Page read completed • Logs copied to tape • Logs Deleted • Backup set closed Streaming Restore Process Flow Dismount Database • Backup application or Administrator dismounts database Restore Complete ESE Restore Mode • Store informs ESE and restore mode entered • Restore SG created ESE Normal Mode • DB is mounted by SG • Data deleted from temporary directory Begin Restore • Agent copies EDB/STM from Tape to DB path • Log files from backup set are copied To temp restore location End Restore • Logs are processed By ESE restore instance • Current logs processed By ESE restore instance • Cleanup/Restore SG killed streaming backup streaming restore Restore Può essere un’attività “pesante” (soprattutto per le versioni precedenti di exchange) Il restore “classico” sovrascrive il database inlinea con il backup (i dati attuali potrebbero vengono sovrascritti!) Come evitarlo se possibile? Exchange ha un insieme di funzionalità per cercare di minimizzare la necessità del restore di tutto il database Proteggere i dati sul server Item & Mailbox retention Garantirsi di avere almeno un Backup Come ricoverare dati cancellati item mailbox Le funzionalità client di Outlook & Outlook Web Access Retention policy Item recovery (+ Dumpster) Mailbox Recovery Center Ma se non basta? Ci sono situazioni in cui devo comunque riprendere i backup l’utente si accorge tardi dei problemi l’amministratore vuole riprendere una mailbox ... come fare un restore del database? Un problema “storico” … Perdita di tutto il database In place recovery del/dei database Può richiedere molto tempo (nastri) Gli utenti non lavorano (db offline/unmounted)! Perdita di un Item o Mailbox Single Item/mailbox Restore Richiede una forest separata ed un server indipendente per il restore offline altrimenti si sovrascrivono anche i contenuti più aggiornati (es: altre mailbox, item recenti, ...) La soluzione di Exchange 2003: Recovery Storage Group Storage group “di riserva” disponibile e specifico per il restore Pensato per ottenere gli stessi benefici del server di recovery...senza dover dedicare il server di recovery! Può consentire di rendere operativi gli utenti da subito minimizzando i tempi di fermo per il restore (dialtone operation) Recovery Storage Group Come funziona Non è usabile per le attività di produzione (hosting mailbox & c.) I client non si possono connettere Le mailboxes non sono collegate agli user object in AD System & mailbox management policies non si applicano Online maintenance non viene eseguita I database non vengono montati automaticamente Come si usa… Si crea il RSG e si associa un DB da restorare Via Exchange Admin Consente di associare solo un db valido (mbx) Si avvia il backup e si ripristina “normalmente” il database Finchè il RSG esiste, Exchange ridirige il restore nel RSG, il database online NON VIENE TOCCATO (lo conferma il mantenimento del flag “don’t override”) si rimette online la singola mailbox senza accedere al contenuto direttamente integrato in ESM (sp1 e successivi) Recovery Storage Group Recover Mailbox Data Tool Best Practices Proteggere i database con RAID-5 o RAID0+1 o RAID 10 Proteggere i log con mirroring e volumi separati dai dati Attivare le funzionalità di retention Tenere spazio libero sui dischi (almeno 50%) Mai! usare il circular logging per mailbox storage groups White Paper Using Exchange Server 2003 Recovery Storage Groups http://www.microsoft.com/technet/prodt echnol/exchange/2003/RMD.mspx Exchange Server 2003 SP1 Recover Mailbox Data Feature http://www.microsoft.com/technet/prodt echnol/exchange/2003/RMD.mspx Support KB How to Use Recovery Storage Groups in Exchange Server 2003 http://support.microsoft.com/default.aspx?scid=k b;EN-US;824126 HOW TO: Recover or Restore a Single Mailbox in Exchange Server 2003 http://support.microsoft.com/default.aspx?scid=k b;EN-US;823176 Deleted items are not available after you use "Recover Deleted Items" in Outlook 2003 http://support.microsoft.com/default.aspx?scid=k b;EN-US;886205 (Dumpster) Riferimenti e risorse (Exchange) Exchange Home http://www.microsoft.com/exchange Exchange Italy Home http://www.microsoft.com/italy/exchange Exchange Server TechCenter http://www.microsoft.com/technet/prodtechnol/exchange/default.mspx Exchange Server 2003 Technical Documentation Library http://www.microsoft.com/technet/prodtechnol/exchange/2003/library/default.mspx Exchange Developer Documentation on MSDN http://msdn.microsoft.com/exchange Exchange Server 2003 Errors and Events Web Site http://www.microsoft.com/technet/support/ee/search.aspx?LCID=1033&DisplayNam e=Exchange%20Server%202003&ProdName=Microsoft%20Exchange&MajorMinor= 6.5 Exchange Support Center http://support.microsoft.com/default.aspx?scid=fh;EN-US;exchange Exchange Downloads http://www.microsoft.com/exchange/downloads/ Exchange Server Community Center http://www.microsoft.com/Exchange/community/default.mspx Domande? Live Meeting Web Feedback https://mseventseu.microsoft.com/cui/WelcomePage.aspx?EventID =118764272&culture=it-IT Changes directly made to this slide will not be displayed in Live Meeting. Edit this slide by selecting Properties in the Live Meeting Presentation menu. © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.