go backarticles

Articles of SQLschool.gr Team

Mirror Backups, a feature that most of us ignore

Antonios Chatzipavlis

Το τελευταίους 3 μήνες σε καθημερινή βάση έχω μαθήματα. Κατά την διάρκεια αυτών δέχθηκα αρκετές ερωτήσεις από τους συμμετέχοντες σε αυτά. Κάποιες από αυτές ήταν αρκετά ενδιαφέρουσες και μου έδωσαν την αφορμή να συγκεντρώσω αρκετό υλικό για blog post.

Σήμερα θα σας απασχολήσω με ένα θέμα το οποίο αφορά το backup. Aν και είναι Enterprise edition feature διαπίστωσα ότι ακόμα και αυτοί που διαθέτουν την συγκεκριμένη έκδοση αγνοούν αυτό, τουλάχιστον η πλειοψηφία.

Αυτό δεν είναι άλλο από την δυνατότητα να έχω MIRROR Backup στα backups τα οποία εκτελώ στον SQL Server.

Είναι γνωστό ότι κάθε backup που παίρνω μπαίνει σε ένα backup device το οποίο είτε μπορεί να είναι disk based είτε tape based. Επίσης αυτό  μπορεί να είναι logical (permanent  όπως οι παλαιότεροι λέμε) ή physical (temporary όπως οι παλαιότεροι λέμε).

Επειδή κανείς δεν μπορεί να βάλει το χέρι του στο ευαγγέλιο και να διασφαλίσει ότι αυτά δεν θα πάθουν τίποτα, υπάρχει πάντα η ανάγκη να υπάρχει plan B.

Αρκετοί λοιπόν επιλέγουν να έχουν Plan B αλλά κάνουν ένα βασικό λάθος το οποίο θα σας εξηγήσω με ένα παράδειγμα.

Έστω ότι κάθε βράδυ κάποια ώρα έχω προγραμματίσει να εκτελώ ένα full backup στην Χ database. Είναι γνωστό φαντάζομαι ότι το full backup αποτελεί την βάση για τα επόμενα backups διαφορετικού τύπου όπως differential, transaction log backups κ.λπ.

Με βάση τις ανάγκες μου που βγαίνουν από την απάντηση που έχω δώσει στα RTO (Recovery Time Objective) & RPO (Recovery Point Objective) έχω διαμορφώσει ένα backup strategy για την συγκεκριμένη database. Έστω  λοιπόν ότι αυτό ορίζει ότι μετά από το full backup κάθε μια ώρα εκτελώ transaction log backup και κάθε 6 ώρες παίρνω differential backup.

Όλα αυτά σαν βάση έχουν το full backup που εκτέλεσα το βράδυ. Σε περίπτωση που το μέσο που έχω αποθηκεύσει κάποιο από τα συγκεκριμένα χαλάσει τότε σπάει η αλληλουχία και δεν μπορώ να φτάσω μέχρι το σημείο της πτώσης με ένα ομαλό τρόπο αλλά θα πρέπει να κάνω διάφορα δύσκολα πράγματα τα οποία δεν εγγυούνται 100% επιτυχία. Για αυτό λοιπόν θα πρέπει να είμαι προστατευμένος όσο το δυνατόν περισσότερο.

Αυτό στο παρελθόν δεν ήταν εύκολο να γίνει και περιείχε αρκετή ποσότητα συμβιβασμού που δεν υλοποιούσε το τι αποζητούσαμε στα RTO & RPO. Αρκετοί μετά το τέλος του νυκτερινού full backup εκτελούσαν αμέσως μετά ξανά την ίδια διαδικασία και έπαιρναν ένα ακόμα full backup. Αυτό είχε σαν συνέπεια όλα τα επόμενα backups (diff, tlog … ) σαν βάση είχαν τον τελευταίο. Αν αυτό δεν ήταν δυνατόν να γίνει restore τότε πηγαίνεις το προηγούμενο στο οποίο όμως δεν πατούν στο επόμενα, αποτέλεσμα να μπορείς να γυρίσεις στην στιγμή που αυτό είχε ολοκληρωθεί.

Εφόσον λοιπόν έχω ένα critical σύστημα το οποίο έχω σε Enterprise Edition του SQL Server  από 2008 και πάνω μπορώ να διεξάγω Mirror backups.
Κάθε εικόνα θα πρέπει για ευνόητους λόγους (αν χαλάσει το ένα να έχω το άλλο) να είναι σε διαφορετικό δίσκο αν  πχ παίρνω disk backup ή σε διαφορετικό tape να κάνω backup σε τέτοιο.

Επίσης θα πρέπει να επισημανθεί ότι όλα τα backup devices που εμπλέκονται σε μια τέτοια διαδικασία θα πρέπει να είναι του ίδιου τύπου. Δεν μπορώ να έχω πχ κάποια από αυτά να είναι disk και κάποια να είναι tape. Για να εκτελεστεί η συγκεκριμένη διαδικασία θα πρέπει να γράψω το backup statement καθώς από το SSMS UI αυτό δεν είναι μπορεί να γίνει.

Τέλος σε κάθε backup μπορώ πέρα από το βασικό device να έχω ακόμα τρία backup devices τα οποία στην ουσία παίζουν και το ρόλο των mirrors, στο σύνολο τους έχω τέσσερα που δεν είναι καθόλου κακό τι λέτε;

Κλείνοντας θα πρέπει να αναφέρω ότι η επιβάρυνση στην όλη διαδικασία είναι πάντα σχετική με το μέγεθος της database το είδος του backup και την ταχύτητα του μαγνητικού μέσου. Από την εμπειρία μου σε περιβάλλοντα παραγωγής αυτή είναι μεταξύ 8-14%.

Ένα παράδειγμα

 

-- CREATE SOME LOGIGAL (PERMANENT) DEVICES

exec sp_addumpdevice 'disk',dev1, 'F:\backup\dev1.bak'
exec sp_addumpdevice 'disk',dev2, 'G:\backup\dev2.bak'
exec sp_addumpdevice 'disk',dev3, 'H:\backup\dev3.bak'
exec sp_addumpdevice 'disk',dev4, 'I:\backup\dev4.bak'

-- FULL BACKUP 

BACKUP DATABASE [demo] 
TO dev1
MIRROR TO dev2 
MIRROR TO dev3
MIRROR TO dev4
GO

-- TRANSACTION LOG BACKUP

BACKUP LOG [demo] 
TO dev1
MIRROR TO dev2 
MIRROR TO dev3
MIRROR TO dev4
GO

-- DIFFERENTIAL BACKUP

BACKUP DATABASE [demo] 
TO dev1
MIRROR TO dev2 
MIRROR TO dev3
MIRROR TO dev4
WITH DIFFERENTIAL
GO

-- TAIL LOG TRANSACTION LOG BACKUP

BACKUP LOG [demo] 
TO dev1
MIRROR TO dev2 
MIRROR TO dev3
MIRROR TO dev4
WITH NO_TRUNCATE
GO

BACKUP LOG [demo] 
TO dev1
MIRROR TO dev2 
MIRROR TO dev3
MIRROR TO dev4
WITH NORECOVERY
GO


Keep Rocking with SQL Server

/*antonch*/


Antonios Chatzipavlis

Antonios Chatzipavlis

Antonios is a Data Solutions Consultant and Trainer. He has been working in IT since 1988. In his career, he has worked as senior developer, IT Manager, Solutions Architect and IT Consultant. Since 1995 he has been devoted on new technologies and software development tools, mainly by Microsoft, either by training company staff and colleagues or assisting them in design, development and implementation as a consultant or chief developer. He has focused in Databases and Data Science since 1995. He specialized in Microsoft SQL Server since version 6.0 in areas like SQL Server Internals, Database Design and Development, Business Intelligence and in 2010 he has started working with Azure Data Platform, NoSQL databases, Big Data Technologies and Machine Learning. He is an active member of many IT communities in Greece, answering colleagues' questions and writing articles in his web site. He is the owner of SQLschool.gr which is a community portal with a lot of information about Microsoft SQL Server. He has been a Microsoft Certified Trainer (MCT) since 2000. Microsoft honored him as MVP on Data Platform due to his activities in SQL Server since 2010. He holds a large number of Microsoft Certifications and Microsoft SQL Server Certifications since version 6.5.


Leave your comment

COMMENT

FULL NAME

EMAIL ADDRESS

We use Gravatar

WEB SITE



captcha


 

Newsletter

If you want to receive updates from us subscribe below with your email.
Follow us in
PASS chapter logo

The Official PASS Local Group for Greece

About us Contact us Terms of Use Privacy Sing in Register
sql school greece logo
© 2010-2020 All rights reserved

This site uses cookies for operational and analytics purposes only. By continuing to browse this site, you agree to their use.