News zu Oracle

Make backup com­pres­si­on great again

Immer wieder steht der durch das Backup benötigte Spei­cher­platz im Fokus der Be­stre­bun­gen wertvolle Plat­ten­ka­pa­zi­tä­ten frei­zu­schau­feln. Ins­be­son­de­re für größere Oracle Da­ten­ban­ken kommt im nächsten Schritt das Thema Backup Kom­pri­mie­rung auf die Agenda. Aus diesem Grund wollen wir uns heute mit eben diesem Thema be­schäf­ti­gen und einmal be­leuch­ten, was die Vor- oder auch Nachteile eine Backup Kom­pri­mie­rung sind.

Unter der Über­schrift “make backup com­pres­si­on great again” be­leuch­tet dieser Artikel aus­schließ­lich RMAN-Backups, die auf ein NFS-Share ge­schrie­ben werden. Ein­ge­schränkt anwendbar wären die Schluss­fol­ge­run­gen noch auf RMAN-Backups, die in lokale File­sys­te­me des Back­up­ser­vers erfolgen.
RMAN-Backups via SBT_TAPE-Treiber sollten auf die Kom­pri­mie­rungs­me­cha­nis­men (Hard­ware­kom­pri­mie­rung etc.) der 3rd-Party-Si­che­rungs­lö­sung zu­rück­grei­fen. Sicherst du deine Da­ten­ban­ken via SBT_TAPE-Treiber, richtet sich der Artikel explizit nicht an dich.

RMAN-Kom­pri­mie­rung pros/cons

Die Kom­pri­mie­rung von RMAN Backups wird gern ein­ge­setzt bei großen Da­ten­men­gen oder einer Backup-Policy, die viele Back­up­da­ten generiert. Der in allen Editionen der Oracle Datenbank ver­füg­ba­re BASIC-Mode – hinter dem sich der BZIP2-Al­go­rith­mus verbirgt – bietet dabei ak­zep­ta­ble Kom­pri­mie­rungs­ra­ten, ist al­ler­dings sehr langsam und CPU-intensiv. Schnel­le­re oder besser kom­pri­mie­ren­de Al­go­rith­men dürfen hingegen nur bei li­zen­zier­ter Advanced Com­pres­si­on Option (ACO) in der Oracle En­ter­pri­se Edition (EE) benutzt werden oder bedingen die Li­zen­zie­rung von Oracle Secure Backup.

Nun ist al­ler­dings nicht davon aus­zu­ge­hen, dass sich viele Anwender nur wegen der Back­up­kom­pri­mie­rung eine EE mit ACO zulegen oder ihre exis­tie­ren­de Back­up­lö­sung auf Oracle Secure Backup umstellen. Auf der anderen Seite stehen einige nicht zu ver­nach­läs­si­gen­de Nachteile der BASIC-Com­pres­si­on zu Buche:

  • Der bzip2-Al­go­rith­mus ist sehr CPU-intensiv und belastet, der Natur der Sache ge­schul­det, die CPU des Da­ten­bank­ser­vers, denn die Kom­pri­mie­rung findet auf dem Da­ten­bank­ser­ver statt.

  • Das Hin­zu­fü­gen von CPU-Leistung ist praktisch meist unmöglich, weil Li­mi­tie­run­gen der SE2 oder Li­zenz­kos­ten der EE dem entgegen stehen.

  • Die Kom­pri­mie­rungs­last kann, abgesehen von der EE, nicht über mehrere CPUs verteilt werden, da keine par­al­le­len RMAN Backups möglich sind.

  • Der mit Abstand wich­tigs­te Nachteil ist jedoch, dass der Restore von BASIC-kom­pri­mier­ten Backups aus­ge­spro­chen langsam ist. Er dauert in jedem Fall länger als das Backup dauerte. Man läuft damit zwangs­läu­fig in das Risiko, bei der Wie­der­her­stel­lung un­ter­neh­mens­re­le­van­ter Daten wertvolle Zeit zu verlieren. Die daraus re­sul­tie­ren­den Aus­fall­kos­ten sind um ein Viel­fa­ches höher als die ur­sprüng­li­che Ein­spa­rung durch die Kom­pri­mie­rung. Schon aus diesem Grund verbieten sich daher BASIC-kom­pri­mier­te Backups für Pro­duk­tiv­um­ge­bun­gen. Oracle begründet die hohe Res­to­re­zeit übrigens mit den Ei­gen­hei­ten des bzip2-Al­go­rith­mus. Ob das tat­säch­lich stimmt oder doch eher auf eine schlechte Im­ple­men­tie­rung zu­rück­zu­füh­ren ist, die viel­leicht gar künstlich Bedarf an ACO ge­ne­rie­ren soll, dazu kann man sich grob eine eigene Meinung bilden, wenn man einfach einmal ein un­kom­pri­mier­tes RMAN-Back­up­pie­ce auf OS-Ebene mit bzip2 kom­pri­miert und wieder dekomprimiert:

$ ls -lh 48ug2ac7_1_1
-rw-r----- 1 oracle oinstall 3.8G Nov  4 21:52 48ug2ac7_1_1
$ time bzip2 -z 48ug2ac7_1_1 # compress

real    7m54.258s
user    7m43.413s
sys     0m7.063s

$ time bzip2 -d 48ug2ac7_1_1.bz2 # uncompress

real    2m19.838s
user    2m5.495s
sys     0m10.851s

Al­ter­na­ti­ve

In den meisten Fällen scheint es also keine gute Lösung zu sein, mit RMAN kom­pri­mier­te Backups zu erstellen. Muss man nun ver­nünf­ti­ger­wei­se komplett auf die Kom­pri­mie­rung der RMAN-Backups ver­zich­ten? Nein. Denn die Kom­pri­mie­rung muss ja nicht zwingend von RMAN durch­ge­führt werden und sie muss auch nicht auf dem Da­ten­bank­ser­ver statt­fin­den. Bei Backups über SBT_TAPE-Libraries wird ja in der Regel auch die Kom­pri­mie­rung der Back­up­soft­ware oder ‑hardware genutzt. Das lässt sich genau so einfach bei RMAN-Backups auf Shares be­werk­stel­li­gen. Man sorgt einfach dafür, dass das Back­up­sha­re auf einem kom­pri­mier­ten File­sys­tem angelegt wird. Das ist für Shares auf Win­dows­ser­vern (NTFS com­pres­si­on), auf Solaris ZFS und auch auf Linux mit dem btrfs-File­sys­tem möglich.

Greifen wir nochmal die Nachteile der RMAN-Kom­pri­mie­rung auf und be­trach­ten sie im Lichte einer back­up­ser­ver­sei­ti­gen Komprimierung:

  • Die Back­up­kom­pri­mie­rung belastet die CPUs des Back­up­ser­vers, nicht des Da­ten­bank­ser­vers. Check!

  • Das Hin­zu­fü­gen von CPU-Leistung verletzt keine Oracle-Lizenz-Li­mi­tie­run­gen und zwingt auch nicht zum Nachkauf von Oracle-Lizenzen. Wenn der Back­up­ser­ver vir­tua­li­siert ist, ist das ggf nicht einmal mit einer Hard­ware­nach­rüs­tung verbunden. Check!

  • Die Kom­pri­mie­rungs­last wird von der File­sys­tem­kom­pri­mie­rung meist schon selb­stän­dig über mehrere CPUs verteilt. Zumindest war das bei der btrfs-Kom­pri­mie­rung der Fall. Check!

  • Der Restore selbst hoch kom­pri­mier­ter Backups dauert nicht mehr länger als das Backup und ist in jedem Fall um Grö­ßen­ord­nun­gen schneller als das Restore eines RMAN-BASIC-kom­pri­mier­ten Backups. Check!

  • Zu­sätz­lich stehen, je nach File­sys­tem, auch noch ver­schie­de­ne Al­go­rith­men kos­ten­frei und un­ab­hän­gig von der ver­wen­de­ten Datenbank Edition zur Auswahl. Je nach Bedarf kann somit ein gutes Maß zwischen Back­up­zeit und Kom­pri­mie­rungs­ra­te gewählt werden. Check!

Zur Ver­an­schau­li­chung der Un­ter­schie­de werden nach­fol­gend ver­schie­de­ne Testläufe dar­ge­stellt, die sowohl mit den in RMAN ver­füg­ba­ren Al­go­rith­men als auch mit einem ZLIB- und LZO-kom­pri­mier­ten btrfs-File­sys­tem durch­ge­führt wurden. Gesichert und restored wurde jeweils die selbe Datenbank von ca. 40GB Größe auf ein per NFS an­ge­bun­de­nes Share. Dabei sollte das Augenmerk weder auf die absoluten Backup- und Res­to­re­zei­ten noch auf die absoluten Kom­pri­mie­rungs­ra­ten gelegt werden. Die Tests fanden in einer vir­tua­li­sier­ten Test­um­ge­bung statt und die absoluten Er­geb­nis­se sind daher eher mäßig. Der we­sent­li­che Punkt sind die relativen Performanceunterschiede.

LegendeKom­pres­si­onsze­na­rio (Backup auf ein NFS-Share, das ein ext4- oder btrfs-for­ma­tier­tes File­sys­tem präsentiert)Backup in minRestore in minGröße des Backups in GB
RMAN uncompRMAN un­kom­pri­miert auf un­kom­pri­mier­tes ext400:4500:353.99
RMAN basicRMAN BASIC-Com­pres­si­on auf un­kom­pri­mier­tes ext402:0602:360.64
RMAN basic LORMAN BASIC-Com­pres­si­on auf un­kom­pri­mier­tes ext4 (load optimized)02:0502:350.78
RMAN lowRMAN LOW-Com­pres­si­on auf un­kom­pri­mier­tes ext400:1500:250.90
RMAN low LORMAN LOW-Com­pres­si­on auf un­kom­pri­mier­tes ext4 (load optimized)00:3500:261.13
RMAN mediumRMAN MEDIUM-Com­pres­si­on auf un­kom­pri­mier­tes ext400:2500:250.75
RMAN medium LORMAN MEDIUM-Com­pres­si­on auf un­kom­pri­mier­tes ext4 (load optimized)01:1500:350.92
RMAN highRMAN HIGH-Com­pres­si­on auf un­kom­pri­mier­tes ext406:0501:560.53
RMAN high LORMAN HIGH-Com­pres­si­on auf un­kom­pri­mier­tes ext4 (load optimized)08:1702:260.66
btfrs ZLIBRMAN un­kom­pri­miert auf btrfs mit compress-force1=ZLIB gemountet00:3500:260.94
btrfs LZORMAN un­kom­pri­miert auf btrfs mit compress-force=LZO gemountet00:2500:251.43

compress-force ist ob­li­ga­to­risch, da btrfs aufgrund der ersten Bytes des Back­up­pie­ces recht zu­ver­läs­sig zu dem Trug­schluss kommt, dass sich eine Kom­pri­mie­rung des gesamten Files nicht lohnt. Ohne „force“ werden die Backups dann sehr wahr­schein­lich un­kom­pri­miert abgelegt.

csm_dba_tipp_backup_komprimierung_2019-11_f000234292.png
Abbildung: Backup Kom­pri­mie­rung in der Übersicht

Spä­tes­tens in der gra­fi­schen Dar­stel­lung ist zu erkennen, dass es au­gen­schein­lich kaum Argumente für RMAN-Kom­pri­mie­rung gibt. Selbst die kos­ten­pflich­ti­gen Al­go­rith­men der Oracle En­ter­pri­se Edition (EE) schneiden nicht si­gni­fi­kant besser ab als die kos­ten­frei­en auf dem Back­up­ser­ver ver­wen­de­ten Al­go­rith­men, die zudem noch für alle Editionen ver­wend­bar sind.

Für Nutzer der Oracle Standard Edition (SE) ist zu­sätz­lich be­ach­tens­wert, dass mit BASIC-kom­pri­mier­ten Backups der relative Zeit­auf­wand für den Restore ggü dem Backup noch deutlich höher sein wird als oben dar­ge­stellt. Die hier do­ku­men­tier­ten Tests wurden auf einer EE durch­ge­führt. RMAN führt bei EE im Gegensatz zur SE zu­sätz­lich ein s.g. unused block com­pres­si­on durch. Das heißt, die EE sichert grund­sätz­lich keine leeren Blöcke. Die SE hingegen lässt bei der Sicherung nur Blöcke aus, die noch nie belegt waren (s.g. null com­pres­si­on). Frag­men­tie­rung in Extents schlägt also in der SE bei RMAN-Si­che­run­gen zu­sätz­lich si­gni­fi­kant zu Buche, während sie in der EE in dem Fall irrelvant ist. Details hierzu findet man in der MOS Note Doc ID 563427.1

Fazit

Wenn die Kom­pri­mie­rung von RMAN-Backups gewünscht ist und der Back­up­ser­ver ein kom­pri­mie­ren­des File­sys­tem über NFS prä­sen­tie­ren kann, wird es die mit gehörigem Abstand bessere Lösung sein, die Kom­pri­mie­rung vom Back­up­ser­ver erledigen zu lassen, nicht vom RMAN. Bietet das Back­up­sha­re dieses Feature nicht an, sollte man auf Back­up­kom­pri­mie­rung besser ganz ver­zich­ten. Auch wenn die Kosten für den Back­up­space dann höher sind. Spä­tes­tens wenn ein Restore nötig wird, werden sich die Kosten durch den zum Teil enormen Zeit­ge­winn schnell amortisieren.

Hier findest du weitere News, Updates und Insights rund um das Thema “Backup und Recovery” von Datenbanken 
icon-arrow_right_medium-violet-blue.svg

Share this article

Facebook 
Twitter 
LinkedIn 
XING 
WhatsApp 
Email