{"id":4524,"date":"2026-06-14T19:31:10","date_gmt":"2026-06-14T19:31:10","guid":{"rendered":"https:\/\/cloudsave.app\/?p=4524"},"modified":"2026-06-15T14:22:25","modified_gmt":"2026-06-15T14:22:25","slug":"postgresql-wal-gagnageymsla-algengar-gildrur-og-h%c3%a6tta-%c3%a1-gagnatapi","status":"publish","type":"post","link":"https:\/\/cloudsave.app\/is\/knowledge-base\/postgresql-wal-gagnageymsla-algengar-gildrur-og-h%c3%a6tta-%c3%a1-gagnatapi\/","title":{"rendered":"PostgreSQL WAL-gagnageymsla: Algengar gildrur og h\u00e6tta \u00e1 gagnatapi"},"content":{"rendered":"<p>Fyrir gagnagrunnsstj\u00f3ra (DBA) og DevOps-verkfr\u00e6\u00f0inga sem st\u00fdra PostgreSQL \u00ed framlei\u00f0sluumhverfi er \u00fea\u00f0 forgangsverkefni a\u00f0 n\u00e1 Recovery Point Objective (RPO) sem er n\u00e1l\u00e6gt n\u00falli. Kjarninn \u00ed getu PostgreSQL til hamfarabata og endurheimtar \u00e1 t\u00edmapunkti (Point-in-Time Recovery &#8211; PITR) er Write-Ahead Logging (WAL). \u00de\u00f3 a\u00f0 WAL tryggi ACID-samr\u00e6mi me\u00f0 \u00fev\u00ed a\u00f0 skr\u00e1 f\u00e6rslur \u00e1\u00f0ur en \u00fe\u00e6r eru skrifa\u00f0ar \u00ed gagnaskr\u00e1rnar, \u00fe\u00e1 er WAL-<em>vistun<\/em> (archiving) s\u00fa a\u00f0fer\u00f0 sem var\u00f0veitir \u00feessar skr\u00e1r fyrir langt\u00edmaafritun og afritun (replication).<\/p>\n<p>Hins vegar er uppsetning \u00e1 WAL-vistun ekki eitthva\u00f0 sem ma\u00f0ur \u201estillir og gleymir\u201c. R\u00f6ng uppsetning, hlj\u00f3\u00f0l\u00e1tar bilanir og misskilningur \u00e1 arkitekt\u00far geta leitt til skelfilegs gagnataps, \u201esplit-brain\u201c a\u00f0st\u00e6\u00f0na e\u00f0a algj\u00f6rs gagnagrunnsrofs.<\/p>\n<p>\u00cd \u00feessari \u00edtarlegu handb\u00f3k munum vi\u00f0 kanna arkitekt\u00far PostgreSQL WAL-vistunar, bera kennsl \u00e1 algengustu gildrurnar sem lei\u00f0a til gagnataps og draga fram bestu starfsvenjur fyrir framlei\u00f0sluumhverfi til a\u00f0 tryggja a\u00f0 gagnagrunnurinn haldist \u00f6ruggur.<\/p>\n<h2>Skilningur \u00e1 PostgreSQL WAL-arkitekt\u00far<\/h2>\n<p>\u00c1\u00f0ur en vi\u00f0 kafum ofan \u00ed gildrurnar er mikilv\u00e6gt a\u00f0 skilja hvernig PostgreSQL me\u00f0h\u00f6ndlar f\u00e6rsluskr\u00e1r.<\/p>\n<p>PostgreSQL skrifar allar breytingar \u00ed WAL-hluta (sem eru sj\u00e1lfgefi\u00f0 16MB skr\u00e1r) sem sta\u00f0settir eru \u00ed <code>pg_wal<\/code> m\u00f6ppunni (\u00e1\u00f0ur <code>pg_xlog<\/code> \u00ed \u00fatg\u00e1fum fyrir 10). S\u00e9rhver f\u00e6rsla er skr\u00e1\u00f0 \u00ed r\u00f6\u00f0 og merkt me\u00f0 Log Sequence Number (LSN).<\/p>\n<p>\u00deegar WAL-hluti fyllist skiptir PostgreSQL yfir \u00ed n\u00fdjan. Til a\u00f0 koma \u00ed veg fyrir a\u00f0 <code>pg_wal<\/code> mappan st\u00e6kki endalaust, endurn\u00fdtir e\u00f0a ey\u00f0ir PostgreSQL g\u00f6mlum WAL-hlutum \u00feegar \u00feeirra er ekki lengur \u00fe\u00f6rf fyrir hrunbata e\u00f0a afritun.<\/p>\n<p><strong>WAL-vistun<\/strong> gr\u00edpur inn \u00ed \u00feetta endurn\u00fdtingarferli. \u00deegar <code>archive_mode<\/code> er virkt, keyrir PostgreSQL notendaskilgreinda <code>archive_command<\/code> skipun (e\u00f0a notar <code>archive_library<\/code> \u00ed PostgreSQL 15+) til a\u00f0 afrita fullger\u00f0an WAL-hluta \u00e1 \u00f6ruggan, aukalegan sta\u00f0 \u00e1\u00f0ur en honum er eytt e\u00f0a hann yfirskrifa\u00f0ur.<\/p>\n<p>Til a\u00f0 framkv\u00e6ma endurheimt \u00e1 t\u00edmapunkti (PITR) \u00fearftu tvo hluti:<br \/>\n1. Gilt grunnafrit (base backup).<br \/>\n2. \u00d3rofa ke\u00f0ju af vistu\u00f0um WAL-skr\u00e1m fr\u00e1 \u00feeim t\u00edma sem grunnafriti\u00f0 var teki\u00f0 og fram a\u00f0 \u00feeim t\u00edma sem \u00fe\u00fa vilt endurheimta.<\/p>\n<p>Ef s\u00fa WAL-ke\u00f0ja rofnar, mistekst PITR-ferli\u00f0.<\/p>\n<h2>Uppsetning \u00e1 WAL-vistun fyrir framlei\u00f0sluumhverfi<\/h2>\n<p>Til a\u00f0 virkja WAL-vistun ver\u00f0ur \u00fe\u00fa a\u00f0 breyta <code>postgresql.conf<\/code> skr\u00e1nni \u00feinni. Grunnstilling krefst \u00feess a\u00f0 stilla <code>wal_level<\/code>, virkja <code>archive_mode<\/code> og skilgreina <code>archive_command<\/code>.<\/p>\n<pre><code class=\"language-ini\"># postgresql.conf\nwal_level = replica             # 'replica' e\u00f0a 'logical' er krafist fyrir vistun\narchive_mode = on               # Virkjar vistunarferli\u00f0\narchive_command = 'test ! -f \/mnt\/nfs\/archive\/%f &amp;&amp; cp %p \/mnt\/nfs\/archive\/%f'\narchive_timeout = 600           # \u00devinga WAL-skipti \u00e1 10 m\u00edn\u00fatna fresti\n<\/code><\/pre>\n<p>\u00cd <code>archive_command<\/code>:<br \/>\n* <code>%p<\/code> t\u00e1knar fulla sl\u00f3\u00f0 a\u00f0 WAL-skr\u00e1nni sem \u00e1 a\u00f0 vista.<br \/>\n* <code>%f<\/code> t\u00e1knar skr\u00e1arheiti WAL-skr\u00e1rinnar.<\/p>\n<p>\u00de\u00f3 a\u00f0 uppsetningin h\u00e9r a\u00f0 ofan vir\u00f0ist einf\u00f6ld, \u00fe\u00e1 felur \u00fea\u00f0 \u00ed s\u00e9r verulega \u00e1h\u00e6ttu a\u00f0 treysta \u00e1 einfaldar skeljaskipanir (shell commands) \u00ed fyrirt\u00e6kjaumhverfi.<\/p>\n<h2>Algengar gildrur \u00ed WAL-vistun<\/h2>\n<h3>Gildra 1: \u201eHlj\u00f3\u00f0l\u00e1tur \u00e1rangur\u201c <code>archive_command<\/code><\/h3>\n<p>PostgreSQL treystir algj\u00f6rlega \u00e1 \u00fatg\u00f6nguk\u00f3\u00f0a <code>archive_command<\/code>. Ef skipunin skilar <code>0<\/code>, gerir PostgreSQL r\u00e1\u00f0 fyrir a\u00f0 WAL-skr\u00e1in s\u00e9 \u00f6rugglega vistu\u00f0 og heldur \u00e1fram me\u00f0 a\u00f0 endurn\u00fdta upprunalegu skr\u00e1na.<\/p>\n<p>Algeng mist\u00f6k eru a\u00f0 nota skipun sem skilar <code>0<\/code> jafnvel \u00fe\u00f3tt g\u00f6gnin s\u00e9u ekki \u00f6rugglega skrifu\u00f0 \u00e1 varanlegan geymslumi\u00f0il. Til d\u00e6mis g\u00e6ti einf\u00f6ld <code>cp<\/code> skipun skila\u00f0 \u00e1rangri um lei\u00f0 og g\u00f6gnin lenda \u00ed skyndiminni st\u00fdrikerfisins (page cache) \u00e1 \u00e1fangasta\u00f0num. Ef \u00e1fangasta\u00f0s\u00fej\u00f3nninn missir straum \u00e1\u00f0ur en skyndiminni\u00f0 er skrifa\u00f0 \u00e1 disk, tapast WAL-skr\u00e1in, en PostgreSQL hefur \u00feegar eytt sta\u00f0bundnu afriti s\u00ednu.<\/p>\n<p><strong>\u00c1h\u00e6ttan:<\/strong> Rofin WAL-ke\u00f0ja og vanh\u00e6fni til a\u00f0 framkv\u00e6ma PITR, sem uppg\u00f6tvast a\u00f0eins \u00feegar hamfarabati er reyndur.<\/p>\n<p><strong>M\u00f3tv\u00e6gisa\u00f0ger\u00f0:<\/strong> Gakktu \u00far skugga um a\u00f0 vistunarhandriti\u00f0 \u00feitt krefjist samstilltra skrifa (synchronous writes). Ef \u00fe\u00fa notar sta\u00f0la\u00f0ar skeljaskipanir, nota\u00f0u verkf\u00e6ri sem tryggja a\u00f0 g\u00f6gn s\u00e9u skrifu\u00f0 \u00e1 disk, e\u00f0a skrifa\u00f0u handrit sem sta\u00f0festir skr\u00e1arst\u00e6r\u00f0 og t\u00e9kksummu eftir flutning.<\/p>\n<h3>Gildra 2: <code>pg_wal<\/code> diskpl\u00e1ss\u00ferot (WAL-\u00feensla)<\/h3>\n<p>Ef <code>archive_command<\/code> mistekst (skilar \u00f6\u00f0ru en 0)\u2014vegna netbilana, rangra heimilda e\u00f0a fulls disks \u00e1 \u00e1fangasta\u00f0\u2014mun PostgreSQL halda WAL-skr\u00e1nni \u00ed <code>pg_wal<\/code> m\u00f6ppunni og reyna aftur endalaust.<\/p>\n<p>\u00de\u00f3 a\u00f0 \u00feetta komi \u00ed veg fyrir gagnatap me\u00f0 \u00fev\u00ed a\u00f0 ey\u00f0a ekki \u00f3vistu\u00f0um WAL-skr\u00e1m, \u00fe\u00e1 skapar \u00fea\u00f0 alvarlega \u00e1h\u00e6ttu fyrir frambo\u00f0 (availability). Ef <code>pg_wal<\/code> mappan er \u00e1 diskpartisj\u00f3n sem fyllist upp \u00ed 100%, mun PostgreSQL gefa \u00fat <code>PANIC<\/code> og hrynja. Gagnagrunnurinn mun ekki r\u00e6sast aftur fyrr en pl\u00e1ss hefur veri\u00f0 losa\u00f0.<\/p>\n<p><strong>\u00c1h\u00e6ttan:<\/strong> Algj\u00f6rt hl\u00e9 \u00e1 gagnagrunni vegna fullrar <code>pg_wal<\/code> partisj\u00f3nar.<\/p>\n<p><strong>M\u00f3tv\u00e6gisa\u00f0ger\u00f0:<\/strong><br \/>\n1. Settu <code>pg_wal<\/code> alltaf \u00e1 s\u00e9rstaka diskpartisj\u00f3n.<br \/>\n2. Innleiddu \u00f6flugt eftirlit me\u00f0 st\u00e6r\u00f0 <code>pg_wal<\/code> m\u00f6ppunnar.<br \/>\n3. Fylgstu me\u00f0 <code>pg_stat_archiver<\/code> s\u00fdninni til a\u00f0 greina bilandi vistunarskipanir strax.<\/p>\n<h3>Gildra 3: \u00d3fullkomin grunnafrit<\/h3>\n<p>Grunnafrit er gagnslaust \u00e1n WAL-skr\u00e1a sem myndast <em>me\u00f0an<\/em> \u00e1 afritunarferlinu stendur. Ef \u00fe\u00fa tekur skyndimynd (snapshot) \u00e1 skr\u00e1arkerfisstigi e\u00f0a notar <code>pg_basebackup<\/code> \u00e1n \u00feess a\u00f0 streyma WAL-skr\u00e1m (<code>-X stream<\/code>), ver\u00f0ur \u00fe\u00fa a\u00f0 tryggja a\u00f0 WAL-skr\u00e1rnar sem myndast \u00e1 milli upphafs og enda afritunar s\u00e9u vista\u00f0ar me\u00f0 g\u00f3\u00f0um \u00e1rangri.<\/p>\n<p>Ef vistunarferli\u00f0 er seint \u00e1 fer\u00f0inni e\u00f0a bilar, og \u00feessar tilteknu WAL-skr\u00e1r tapast, er ekki h\u00e6gt a\u00f0 koma grunnafritinu \u00ed samr\u00e6mt \u00e1stand.<\/p>\n<p><strong>\u00c1h\u00e6ttan:<\/strong> Skemmd e\u00f0a \u00f3endurheimtanleg grunnafrit.<\/p>\n<p><strong>M\u00f3tv\u00e6gisa\u00f0ger\u00f0:<\/strong> Nota\u00f0u <code>pg_basebackup -X stream<\/code> til a\u00f0 l\u00e1ta nau\u00f0synlegar WAL-skr\u00e1r fylgja me\u00f0 \u00ed sj\u00e1lfu afritinu, e\u00f0a nota\u00f0u afritunarlausnir fyrir fyrirt\u00e6ki sem stj\u00f3rna sj\u00e1lfkrafa tengslunum \u00e1 milli grunnafrita og WAL-hluta.<\/p>\n<h3>Gildra 4: Ruglingur \u00e1 t\u00edmal\u00ednum og \u201eSplit-Brain\u201c a\u00f0st\u00e6\u00f0ur<\/h3>\n<p>\u00deegar bi\u00f0\u00fej\u00f3nn (standby) er ger\u00f0ur a\u00f0 a\u00f0al\u00fej\u00f3ni (primary), h\u00e6kkar PostgreSQL \u201eTimeline ID\u201c (fyrri hlutinn \u00ed WAL-skr\u00e1arheitinu, t.d. <code>0000000200000001000000A4<\/code>). \u00deetta kemur \u00ed veg fyrir a\u00f0 n\u00fdi a\u00f0al\u00fej\u00f3nninn yfirskrifi WAL-s\u00f6gu gamla a\u00f0al\u00fej\u00f3nsins.<\/p>\n<p>Hins vegar, ef gamli a\u00f0al\u00fej\u00f3nninn er r\u00e6stur fyrir slysni \u00e1n \u00feess a\u00f0 vera r\u00e9tt einangra\u00f0ur (split-brain a\u00f0st\u00e6\u00f0ur), g\u00e6ti hann reynt a\u00f0 senda WAL-skr\u00e1r \u00e1 sama vistunarsta\u00f0 me\u00f0 g\u00f6mlu t\u00edmal\u00ednunni. Ef <code>archive_command<\/code> skipunin \u00fe\u00edn yfirskrifar skr\u00e1r \u00ed blindni, g\u00e6tir\u00f0u skemmt vistunarsafni\u00f0 \u00feitt.<\/p>\n<p><strong>\u00c1h\u00e6ttan:<\/strong> Yfirskrifa\u00f0ar WAL-skr\u00e1r, skemmd afrit og \u00f3endurheimtanlegir gagnagrunnar.<\/p>\n<p><strong>M\u00f3tv\u00e6gisa\u00f0ger\u00f0:<\/strong> <code>archive_command<\/code> skipunin \u00fe\u00edn m\u00e1 <em>aldrei<\/em> yfirskrifa skr\u00e1 sem er fyrir. Taktu eftir \u00ed grunnstillingunni fyrr a\u00f0 vi\u00f0 notu\u00f0um <code>test ! -f \/mnt\/nfs\/archive\/%f<\/code> til a\u00f0 l\u00e1ta skipunina mistakast beinl\u00ednis ef skr\u00e1in er \u00feegar til.<\/p>\n<h2>A\u00f0 draga \u00far \u00e1h\u00e6ttu \u00e1 gagnatapi: Bestu starfsvenjur \u00ed framlei\u00f0slu<\/h2>\n<p>Til a\u00f0 her\u00f0a stefnu \u00fe\u00edna um PostgreSQL-vistun skaltu innlei\u00f0a eftirfarandi bestu starfsvenjur.<\/p>\n<h3>1. Fylgstu me\u00f0 vistunarferlinu innbyggt<\/h3>\n<p>PostgreSQL b\u00fd\u00f0ur upp \u00e1 innbygg\u00f0a s\u00fdn, <code>pg_stat_archiver<\/code>, sem rekur \u00e1rangur og bilanir \u00ed vistunarferlinu. \u00de\u00fa \u00e6ttir a\u00f0 sam\u00fe\u00e6tta \u00feessa s\u00fdn \u00ed eftirlitskerfi\u00f0 \u00feitt (t.d. Prometheus, Datadog e\u00f0a Zabbix).<\/p>\n<pre><code class=\"language-sql\">SELECT \n    archived_count,\n    last_archived_wal,\n    last_archived_time,\n    failed_count,\n    last_failed_wal,\n    last_failed_time,\n    stats_reset\nFROM pg_stat_archiver;\n<\/code><\/pre>\n<p><strong>Vi\u00f0v\u00f6runarm\u00f6rk sem \u00e1 a\u00f0 stilla:<\/strong><br \/>\n* Vi\u00f0v\u00f6run ef <code>failed_count<\/code> eykst.<br \/>\n* Vi\u00f0v\u00f6run ef t\u00edmamismunurinn \u00e1 milli <code>now()<\/code> og <code>last_archived_time<\/code> fer yfir RPO-m\u00f6rkin \u00fe\u00edn (t.d. 15 m\u00edn\u00fatur), me\u00f0 \u00fea\u00f0 \u00ed huga a\u00f0 gagnagrunnar me\u00f0 l\u00edtilli umfer\u00f0 g\u00e6tu e\u00f0lilega haft tafir nema <code>archive_timeout<\/code> s\u00e9 stillt.<\/p>\n<h3>2. N\u00fdttu <code>archive_timeout<\/code><\/h3>\n<p>\u00cd gagnagrunnum me\u00f0 litla skrifvirkni g\u00e6ti teki\u00f0 klukkustundir a\u00f0 fylla 16MB WAL-skr\u00e1. \u00dear til h\u00fan fyllist er h\u00fan ekki vistu\u00f0. Ef \u00fej\u00f3nninn hrynur og sta\u00f0bundinn diskur tapast, tapar\u00f0u klukkustundum af f\u00e6rslum.<\/p>\n<p>A\u00f0 stilla <code>archive_timeout = 600<\/code> (10 m\u00edn\u00fatur) \u00fevingar PostgreSQL til a\u00f0 skipta yfir \u00ed n\u00fdja WAL-skr\u00e1 og vista \u00fe\u00e1 n\u00faverandi, jafnvel \u00fe\u00f3tt h\u00fan s\u00e9 ekki full. \u00deetta tryggir a\u00f0 RPO \u00feitt fari ekki yfir 10 m\u00edn\u00fatur, \u00e1 kostna\u00f0 \u00f6rl\u00edti\u00f0 meiri geymslunotkunar vegna h\u00e1lffullra WAL-skr\u00e1a.<\/p>\n<h3>3. Skiptu yfir \u00ed <code>archive_library<\/code> (PostgreSQL 15+)<\/h3>\n<p>S\u00f6gulega s\u00e9\u00f0 r\u00e6sti <code>archive_command<\/code> n\u00fdtt skeljaskipanarferli fyrir hverja einustu WAL-skr\u00e1. \u00cd umhverfi me\u00f0 mikla afk\u00f6st sem myndar hundru\u00f0 WAL-skr\u00e1a \u00e1 m\u00edn\u00fatu, ver\u00f0ur yfirbyggingin vi\u00f0 a\u00f0 r\u00e6sa skeljaskipanir fl\u00f6skuh\u00e1ls.<\/p>\n<p>PostgreSQL 15 kynnti <code>archive_library<\/code> f\u00e6ribreytuna, sem gerir WAL-vistun kleift a\u00f0 vera me\u00f0h\u00f6ndlu\u00f0 af kraftmiklum C-einingum. \u00deetta \u00fatilokar yfirbygginguna vi\u00f0 skeljaskipanir og veitir mun \u00f6flugra og afkastameira vistunarkerfi. Ef \u00fe\u00fa ert \u00e1 PostgreSQL 15 e\u00f0a n\u00fdrri, leita\u00f0u a\u00f0 afritunarverkf\u00e6rum sem sty\u00f0ja s\u00e9rsni\u00f0nar vistunareiningar.<\/p>\n<h3>4. Pr\u00f3fa\u00f0u endurheimt \u00e1 t\u00edmapunkti reglulega<\/h3>\n<p>\u00d3pr\u00f3fa\u00f0 afrit er ekki afrit; \u00fea\u00f0 er \u00f3skhyggja. Eina lei\u00f0in til a\u00f0 sta\u00f0festa a\u00f0 WAL-vistunin \u00fe\u00edn virki r\u00e9tt, a\u00f0 WAL-ke\u00f0jan \u00fe\u00edn s\u00e9 \u00f3rofin og a\u00f0 grunnafritin \u00fe\u00edn s\u00e9u samr\u00e6md, er a\u00f0 framkv\u00e6ma reglulegar, sj\u00e1lfvirkar PITR-pr\u00f3fanir.<\/p>\n<p>R\u00e6stu t\u00edmabundi\u00f0 tilvik, endurheimtu grunnafriti\u00f0, stilltu <code>restore_command<\/code> til a\u00f0 s\u00e6kja \u00far vistunarsafninu \u00fe\u00ednu og endurheimtu \u00e1 tiltekinn t\u00edmapunkt. Sta\u00f0festu a\u00f0 gagnagrunnurinn n\u00e1i samr\u00e6mdu \u00e1standi og opnist fyrir tengingar.<\/p>\n<h2>Afritun og endurheimt fyrir fyrirt\u00e6ki me\u00f0 CloudSave<\/h2>\n<p>A\u00f0 st\u00fdra s\u00e9rsni\u00f0num skeljaskipanahandritum fyrir <code>archive_command<\/code>, sj\u00e1 um afafritun (deduplication) \u00e1 WAL-skr\u00e1m og tryggja \u00f6rugga geymslu \u00e1 f\u00e6rsluskr\u00e1m utan h\u00fass getur flj\u00f3tt or\u00f0i\u00f0 rekstrarbyr\u00f0i fyrir uppl\u00fdsingat\u00e6kniteymi.<\/p>\n<p>\u00deetta er \u00fear sem CloudSave veitir verulegt gildi fyrir PostgreSQL-umhverfi fyrirt\u00e6kja. CloudSave sam\u00fe\u00e6ttist beint vi\u00f0 innbygg\u00f0 afritunar- og WAL-vistunarvi\u00f0m\u00f3t PostgreSQL til a\u00f0 \u00fatr\u00fdma handvirku gildrunum sem r\u00e6tt var um h\u00e9r a\u00f0 ofan.<\/p>\n<p>\u00cd sta\u00f0 \u00feess a\u00f0 skrifa vi\u00f0kv\u00e6m bash-handrit, b\u00fd\u00f0ur CloudSave upp \u00e1 \u00f6fluga, umbo\u00f0smi\u00f0a\u00f0a e\u00f0a umbo\u00f0slausa sam\u00fe\u00e6ttingu sem:<br \/>\n* <strong>Tryggir afhendingu:<\/strong> Kemur \u00ed sta\u00f0 sta\u00f0la\u00f0ra skeljaskipana me\u00f0 sta\u00f0festum, t\u00e9kksummu-pr\u00f3fu\u00f0um flutningum yfir \u00e1 \u00f6rugga geymslu utan h\u00fass e\u00f0a \u00ed sk\u00fdinu.<br \/>\n* <strong>Kemur \u00ed veg fyrir WAL-\u00feenslu:<\/strong> Fylgist virkt me\u00f0 <code>pg_wal<\/code> m\u00f6ppunni og l\u00e6tur stj\u00f3rnendur vita l\u00f6ngu \u00e1\u00f0ur en diskpl\u00e1ss\u00ferot \u00e1 s\u00e9r sta\u00f0.<br \/>\n* <strong>Sj\u00e1lfvirkniv\u00e6\u00f0ir PITR:<\/strong> Einfaldar endurheimt \u00e1 t\u00edmapunkti \u00ed gegnum lei\u00f0andi vi\u00f0m\u00f3t. \u00de\u00fa velur n\u00e1kv\u00e6mlega \u00fe\u00e1 m\u00edn\u00fatu sem \u00fe\u00fa vilt endurheimta \u00e1, og CloudSave s\u00e6kir sj\u00e1lfkrafa r\u00e9tta grunnafriti\u00f0 og streymir n\u00e1kv\u00e6mri r\u00f6\u00f0 WAL-skr\u00e1a sem \u00fearf til a\u00f0 n\u00e1 \u00fev\u00ed \u00e1standi.<br \/>\n* <strong>Stj\u00f3rnar t\u00edmal\u00ednum:<\/strong> Stj\u00f3rnar t\u00edmal\u00ednus\u00f6gu PostgreSQL \u00e1 skynsamlegan h\u00e1tt og tryggir a\u00f0 \u201efailover\u201c og \u201esplit-brain\u201c a\u00f0st\u00e6\u00f0ur skemmi ekki afritunarsafni\u00f0 \u00feitt.<\/p>\n<p>Me\u00f0 \u00fev\u00ed a\u00f0 l\u00e1ta CloudSave sj\u00e1 um erfi\u00f0u vinnuna vi\u00f0 WAL-stj\u00f3rnun geta gagnagrunnsstj\u00f3rar einbeitt s\u00e9r a\u00f0 hagr\u00e6\u00f0ingu fyrirspurna og afk\u00f6stum gagnagrunna, vitandi a\u00f0 RPO og RTO \u00fej\u00f3nustusamningar \u00feeirra eru var\u00f0ir af vettvangi \u00ed fyrirt\u00e6kjaflokki.<\/p>\n<h2>Ni\u00f0ursta\u00f0a<\/h2>\n<p>PostgreSQL WAL-vistun er bur\u00f0ar\u00e1sinn \u00ed hamfarabata gagnagrunna. \u00de\u00f3 a\u00f0 hugmyndin um a\u00f0 afrita skr\u00e1 \u00far einni m\u00f6ppu \u00ed a\u00f0ra vir\u00f0ist einf\u00f6ld, \u00fe\u00e1 skapa ja\u00f0artilvikin\u2014hlj\u00f3\u00f0l\u00e1tar bilanir, diskpl\u00e1ss\u00ferot og t\u00edmal\u00ednufr\u00e1vik\u2014alvarlega \u00e1h\u00e6ttu fyrir heilleika gagna.<\/p>\n<p>Me\u00f0 \u00fev\u00ed a\u00f0 skilja arkitekt\u00far <code>pg_wal<\/code>, for\u00f0ast stranglega ey\u00f0ileggjandi <code>archive_command<\/code> uppsetningar, fylgjast me\u00f0 <code>pg_stat_archiver<\/code> og n\u00fdta afritunarvettvanga fyrir fyrirt\u00e6ki eins og CloudSave, getur\u00f0u byggt upp \u00f6flugt PostgreSQL-innvi\u00f0i sem getur lifa\u00f0 af v\u00e9lb\u00fana\u00f0arbilanir, mannleg mist\u00f6k og skelfileg kerfisrof \u00e1n \u00feess a\u00f0 tapa einni einustu sta\u00f0festri f\u00e6rslu.<\/p>\n<blockquote>\n<p>Uppg\u00f6tva\u00f0u algengar gildrur \u00ed PostgreSQL WAL-vistun sem lei\u00f0a til gagnataps. L\u00e6r\u00f0u bestu starfsvenjur s\u00e9rfr\u00e6\u00f0inga \u00ed gagnagrunnsstj\u00f3rnun, r\u00e1\u00f0 um uppsetningu og hvernig \u00e1 a\u00f0 tryggja \u00e1rei\u00f0anlega endurheimt \u00e1 t\u00edmapunkti (PITR) fyrir gagnagrunna fyrirt\u00e6kja.<\/p>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>**<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_title":"PostgreSQL WAL Archiving: Pitfalls & Data Loss Risks","rank_math_description":"**","rank_math_focus_keyword":"postgresql wal archiving","footnotes":""},"categories":[479],"tags":[480,976,483,484,485,486,3230],"class_list":["post-4524","post","type-post","status-publish","format-standard","hentry","category-database-backup","tag-data-loss-prevention","tag-database-administration","tag-pitr","tag-point-in-time-recovery","tag-postgresql","tag-rpo","tag-wal-archiving"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.7 (Yoast SEO v27.7) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>PostgreSQL WAL Archiving: Pitfalls &amp; Data Loss Risks<\/title>\n<meta name=\"description\" content=\"**\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cloudsave.app\/is\/knowledge-base\/postgresql-wal-gagnageymsla-algengar-gildrur-og-h%c3%a6tta-%c3%a1-gagnatapi\/\" \/>\n<meta property=\"og:locale\" content=\"is_IS\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PostgreSQL WAL-gagnageymsla: Algengar gildrur og h\u00e6tta \u00e1 gagnatapi\" \/>\n<meta property=\"og:description\" content=\"**\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudsave.app\/is\/knowledge-base\/postgresql-wal-gagnageymsla-algengar-gildrur-og-h%c3%a6tta-%c3%a1-gagnatapi\/\" \/>\n<meta property=\"og:site_name\" content=\"CloudSave\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-14T19:31:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-15T14:22:25+00:00\" \/>\n<meta name=\"author\" content=\"shervinrv\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"shervinrv\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/cloudsave.app\\\/is\\\/knowledge-base\\\/postgresql-wal-gagnageymsla-algengar-gildrur-og-h%c3%a6tta-%c3%a1-gagnatapi\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/cloudsave.app\\\/is\\\/knowledge-base\\\/postgresql-wal-gagnageymsla-algengar-gildrur-og-h%c3%a6tta-%c3%a1-gagnatapi\\\/\"},\"author\":{\"name\":\"shervinrv\",\"@id\":\"https:\\\/\\\/cloudsave.app\\\/is\\\/#\\\/schema\\\/person\\\/286beefe68281d868e87f46603a7ae4d\"},\"headline\":\"PostgreSQL WAL-gagnageymsla: Algengar gildrur og h\u00e6tta \u00e1 gagnatapi\",\"datePublished\":\"2026-06-14T19:31:10+00:00\",\"dateModified\":\"2026-06-15T14:22:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/cloudsave.app\\\/is\\\/knowledge-base\\\/postgresql-wal-gagnageymsla-algengar-gildrur-og-h%c3%a6tta-%c3%a1-gagnatapi\\\/\"},\"wordCount\":1768,\"publisher\":{\"@id\":\"https:\\\/\\\/cloudsave.app\\\/is\\\/#\\\/schema\\\/person\\\/286beefe68281d868e87f46603a7ae4d\"},\"keywords\":[\"data loss prevention\",\"Database Administration\",\"pitr\",\"point-in-time recovery\",\"postgresql\",\"rpo\",\"wal archiving\"],\"articleSection\":[\"Database Backup\"],\"inLanguage\":\"is\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/cloudsave.app\\\/is\\\/knowledge-base\\\/postgresql-wal-gagnageymsla-algengar-gildrur-og-h%c3%a6tta-%c3%a1-gagnatapi\\\/\",\"url\":\"https:\\\/\\\/cloudsave.app\\\/is\\\/knowledge-base\\\/postgresql-wal-gagnageymsla-algengar-gildrur-og-h%c3%a6tta-%c3%a1-gagnatapi\\\/\",\"name\":\"PostgreSQL WAL Archiving: Pitfalls & Data Loss Risks\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/cloudsave.app\\\/is\\\/#website\"},\"datePublished\":\"2026-06-14T19:31:10+00:00\",\"dateModified\":\"2026-06-15T14:22:25+00:00\",\"description\":\"**\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/cloudsave.app\\\/is\\\/knowledge-base\\\/postgresql-wal-gagnageymsla-algengar-gildrur-og-h%c3%a6tta-%c3%a1-gagnatapi\\\/#breadcrumb\"},\"inLanguage\":\"is\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/cloudsave.app\\\/is\\\/knowledge-base\\\/postgresql-wal-gagnageymsla-algengar-gildrur-og-h%c3%a6tta-%c3%a1-gagnatapi\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/cloudsave.app\\\/is\\\/knowledge-base\\\/postgresql-wal-gagnageymsla-algengar-gildrur-og-h%c3%a6tta-%c3%a1-gagnatapi\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/cloudsave.app\\\/is\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PostgreSQL WAL-gagnageymsla: Algengar gildrur og h\u00e6tta \u00e1 gagnatapi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/cloudsave.app\\\/is\\\/#website\",\"url\":\"https:\\\/\\\/cloudsave.app\\\/is\\\/\",\"name\":\"CloudSave\",\"description\":\"CloudSave\",\"publisher\":{\"@id\":\"https:\\\/\\\/cloudsave.app\\\/is\\\/#\\\/schema\\\/person\\\/286beefe68281d868e87f46603a7ae4d\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/cloudsave.app\\\/is\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"is\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/cloudsave.app\\\/is\\\/#\\\/schema\\\/person\\\/286beefe68281d868e87f46603a7ae4d\",\"name\":\"shervinrv\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"is\",\"@id\":\"https:\\\/\\\/cloudsave.app\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/Logo_Name-2.png\",\"url\":\"https:\\\/\\\/cloudsave.app\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/Logo_Name-2.png\",\"contentUrl\":\"https:\\\/\\\/cloudsave.app\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/Logo_Name-2.png\",\"width\":859,\"height\":150,\"caption\":\"shervinrv\"},\"logo\":{\"@id\":\"https:\\\/\\\/cloudsave.app\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/Logo_Name-2.png\"},\"sameAs\":[\"http:\\\/\\\/cloudsave.app\"],\"url\":\"https:\\\/\\\/cloudsave.app\\\/is\\\/knowledge-base\\\/author\\\/shervinrv\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"PostgreSQL WAL Archiving: Pitfalls & Data Loss Risks","description":"**","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cloudsave.app\/is\/knowledge-base\/postgresql-wal-gagnageymsla-algengar-gildrur-og-h%c3%a6tta-%c3%a1-gagnatapi\/","og_locale":"is_IS","og_type":"article","og_title":"PostgreSQL WAL-gagnageymsla: Algengar gildrur og h\u00e6tta \u00e1 gagnatapi","og_description":"**","og_url":"https:\/\/cloudsave.app\/is\/knowledge-base\/postgresql-wal-gagnageymsla-algengar-gildrur-og-h%c3%a6tta-%c3%a1-gagnatapi\/","og_site_name":"CloudSave","article_published_time":"2026-06-14T19:31:10+00:00","article_modified_time":"2026-06-15T14:22:25+00:00","author":"shervinrv","twitter_card":"summary_large_image","twitter_misc":{"Written by":"shervinrv","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/cloudsave.app\/is\/knowledge-base\/postgresql-wal-gagnageymsla-algengar-gildrur-og-h%c3%a6tta-%c3%a1-gagnatapi\/#article","isPartOf":{"@id":"https:\/\/cloudsave.app\/is\/knowledge-base\/postgresql-wal-gagnageymsla-algengar-gildrur-og-h%c3%a6tta-%c3%a1-gagnatapi\/"},"author":{"name":"shervinrv","@id":"https:\/\/cloudsave.app\/is\/#\/schema\/person\/286beefe68281d868e87f46603a7ae4d"},"headline":"PostgreSQL WAL-gagnageymsla: Algengar gildrur og h\u00e6tta \u00e1 gagnatapi","datePublished":"2026-06-14T19:31:10+00:00","dateModified":"2026-06-15T14:22:25+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudsave.app\/is\/knowledge-base\/postgresql-wal-gagnageymsla-algengar-gildrur-og-h%c3%a6tta-%c3%a1-gagnatapi\/"},"wordCount":1768,"publisher":{"@id":"https:\/\/cloudsave.app\/is\/#\/schema\/person\/286beefe68281d868e87f46603a7ae4d"},"keywords":["data loss prevention","Database Administration","pitr","point-in-time recovery","postgresql","rpo","wal archiving"],"articleSection":["Database Backup"],"inLanguage":"is"},{"@type":"WebPage","@id":"https:\/\/cloudsave.app\/is\/knowledge-base\/postgresql-wal-gagnageymsla-algengar-gildrur-og-h%c3%a6tta-%c3%a1-gagnatapi\/","url":"https:\/\/cloudsave.app\/is\/knowledge-base\/postgresql-wal-gagnageymsla-algengar-gildrur-og-h%c3%a6tta-%c3%a1-gagnatapi\/","name":"PostgreSQL WAL Archiving: Pitfalls & Data Loss Risks","isPartOf":{"@id":"https:\/\/cloudsave.app\/is\/#website"},"datePublished":"2026-06-14T19:31:10+00:00","dateModified":"2026-06-15T14:22:25+00:00","description":"**","breadcrumb":{"@id":"https:\/\/cloudsave.app\/is\/knowledge-base\/postgresql-wal-gagnageymsla-algengar-gildrur-og-h%c3%a6tta-%c3%a1-gagnatapi\/#breadcrumb"},"inLanguage":"is","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudsave.app\/is\/knowledge-base\/postgresql-wal-gagnageymsla-algengar-gildrur-og-h%c3%a6tta-%c3%a1-gagnatapi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/cloudsave.app\/is\/knowledge-base\/postgresql-wal-gagnageymsla-algengar-gildrur-og-h%c3%a6tta-%c3%a1-gagnatapi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudsave.app\/is\/"},{"@type":"ListItem","position":2,"name":"PostgreSQL WAL-gagnageymsla: Algengar gildrur og h\u00e6tta \u00e1 gagnatapi"}]},{"@type":"WebSite","@id":"https:\/\/cloudsave.app\/is\/#website","url":"https:\/\/cloudsave.app\/is\/","name":"CloudSave","description":"CloudSave","publisher":{"@id":"https:\/\/cloudsave.app\/is\/#\/schema\/person\/286beefe68281d868e87f46603a7ae4d"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cloudsave.app\/is\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"is"},{"@type":["Person","Organization"],"@id":"https:\/\/cloudsave.app\/is\/#\/schema\/person\/286beefe68281d868e87f46603a7ae4d","name":"shervinrv","image":{"@type":"ImageObject","inLanguage":"is","@id":"https:\/\/cloudsave.app\/wp-content\/uploads\/2026\/02\/Logo_Name-2.png","url":"https:\/\/cloudsave.app\/wp-content\/uploads\/2026\/02\/Logo_Name-2.png","contentUrl":"https:\/\/cloudsave.app\/wp-content\/uploads\/2026\/02\/Logo_Name-2.png","width":859,"height":150,"caption":"shervinrv"},"logo":{"@id":"https:\/\/cloudsave.app\/wp-content\/uploads\/2026\/02\/Logo_Name-2.png"},"sameAs":["http:\/\/cloudsave.app"],"url":"https:\/\/cloudsave.app\/is\/knowledge-base\/author\/shervinrv\/"}]}},"_links":{"self":[{"href":"https:\/\/cloudsave.app\/is\/wp-json\/wp\/v2\/posts\/4524","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudsave.app\/is\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudsave.app\/is\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudsave.app\/is\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudsave.app\/is\/wp-json\/wp\/v2\/comments?post=4524"}],"version-history":[{"count":3,"href":"https:\/\/cloudsave.app\/is\/wp-json\/wp\/v2\/posts\/4524\/revisions"}],"predecessor-version":[{"id":5652,"href":"https:\/\/cloudsave.app\/is\/wp-json\/wp\/v2\/posts\/4524\/revisions\/5652"}],"wp:attachment":[{"href":"https:\/\/cloudsave.app\/is\/wp-json\/wp\/v2\/media?parent=4524"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudsave.app\/is\/wp-json\/wp\/v2\/categories?post=4524"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudsave.app\/is\/wp-json\/wp\/v2\/tags?post=4524"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}