Πώς αυτοματοποιούμε τη διαδικασία backup των βάσεων δεδομένων σε SQL Server χωρίς την χρήση maintenance plan

Πώς αυτοματοποιούμε τη διαδικασία backup των βάσεων δεδομένων σε SQL Server χωρίς την χρήση maintenance plan
Πώς αυτοματοποιούμε τη διαδικασία backup των βάσεων δεδομένων σε SQL Server χωρίς την χρήση maintenance plan

Σε αυτό το άρθρο θα δούμε τον πιο εύκολο και αποδοτικό τρόπο ώστε να πάρουμε backup όλες τις βάσεις δεδομένων του instance. Αυτό θα το κάνουμε με τη χρήση της procedure DatabaseBackup που έχει φτιάξει ο Ola Hallengren.

Φυσικά αυτή η εργασία γίνεται και με την χρήση T-SQL (π.χ. backup database) ή maintance plans που έχει build-in ο SQL Server, αλλά τα παραπάνω έχουν κάποιους περιορισμούς.

Τι παραπάνω προσφέρει

Η procedure DatabaseBackup μπορεί να πραγματοποιεί ξεχωριστά backup σε user ή system databases, να σβήνει παλία αρχεία backup με το ίδιο job και πολλά άλλα με τις διάφορες παραμέτρους που δέχεται.

Η εγκατάσταση

Κατεβάσουμε από εδώ το πακέτο με τις procedure που θα χρειαστούμε:

ή απευθείας από το site του δημιουργού εδώ.

Αφού κατέβει εκτελούμε όλο το script στη βάση που θέλουμε να καλούντε από αυτήν π.χ σε μία custom βάση δεδομένων που έχουμε φτιάξει για monitoring ή στην συστημική master database.

Στη συνέχεια για να ξεκινήσει η διαδικασία, απλά εκτελούμε την procedure με τις παραμέτρους όπως παρακάτω:

EXECUTE dbo.DatabaseBackup
@Databases = 'ALL_DATABASES',
--@Directory = 'C:\backup',  --comment for default backup folder
@BackupType = 'FULL',
@Verify = 'Y',
@Compress = 'Y',
@CheckSum = 'Y',
@CleanupTime = 360

Τι ακριβώς ορίζει η κάθε παράμετρος:

  • @Databases ορίζουμε αν θα τρέξει η διαδικασία σε όλες τις βάσεις, στις συστημικές ή σε αυτές που έχουμε φτιάξει.
  • @Directory την συγκεκριμένη παράμετρο την ορίζουμε όταν δεν θέλουμε να πάρει το backup στο default directory αλλά σε κάποιο άλλο.
  • @BackupType ορίζουμε αν θα πάρει FULL / DIFFERENTIAL / LOG backup.
  • @Verify ορίζουμε αν θα κάνει verify το backup.
  • @Compress ορίζουμε αν θα κάνει compress το backup.
  • @CheckSum ορίζουμε αν θα ενεργοποιηθεί το CheckSum.
  • @CleanupTime ορίζουμε μετά από πόσες ώρες θα σβήνονται τα backup.

Υπάρχουν αναλυτικά οι οδηγίες για την κάθε παράμετρο στον ιστότοπο του δημιουργού εδώ.

Πώς αυτοματοποιούμαι τη διαδικασία

Μπορούμε να προσθέσουμε την εκτέλεση της procedure σε ένα SQL Server Agent Job.

Για να το κάνουμε αυτό πάμε στον Objects ExplorerSQL Server Agent, δεξί κλικ στο JobsNew Job

Στο παράθυρο που εμφανίζεται πάμε στην καρτέλα Steps και επιλέγουμε New.

Εκεί διαλέγουμε τη βάση master που είχαμε εγκαταστήσει την procedure και προσθέτουμε το script της procedure:

Πώς αυτοματοποιούμε τη διαδικασία backup των βάσεων δεδομένων σε SQL Server χωρίς την χρήση maintenance plan
01

Στην καρτέλα Schedules μπορούμε να ορίσουμε την συχνότητα που θα εκτελείτε η εργασία. Καλό θα είναι να διαλέξουμε μια χρονική στιγμή που δεν έχει μεγάλο φόρτο εργασίας με προσπέλαση στα δεδομένα στο instance:

Πώς αυτοματοποιούμε τη διαδικασία backup των βάσεων δεδομένων σε SQL Server χωρίς την χρήση maintenance plan
02

Για να δούμε αναλυτικά το κάθε action που έχει κάνει η procedure και πότε το έκανε

Απλά κάνουμε ένα select στον πίνακα commandlog:

select * from master..commandlog;

Bonus

Με το παρακάτω script που έχω φτιάξει, με μόνο ένα κλικ, κάνει εγκατάσταση το MaintenanceSolution του Ola Hallengren μαζί με έτοιμα παραμετροποιημένα jobs για Backup ,Database Integrity και Index Optimize με τις βέλτιστες παραμέτρους και χρονοδιάγραμμα.

Τα Backup jobs δημιουργούνται disabled καθώς μπορεί να έχουμε άλλη λύση για backup με 3rd party tool. Επίσης κάνει έλεγχο για Availability Group ώστε να τρέχουν μόνο αν είναι η Preffered Backup Replica (για backup / database integrity) και αν είναι Primary Replica (για Index Optimize).

Το μόνο που χρειάζεται να κάνουμε, είναι να εκτελέσουμε το παρακάτω script στο κάθε SQL Server Instance:

Πηγές:

Μοιράσου το

Αφήστε μία απάντηση