{"id":1498,"date":"2026-11-14T18:00:00","date_gmt":"2026-11-14T18:00:00","guid":{"rendered":"https:\/\/wade.one\/blog\/?p=1498"},"modified":"2026-11-12T23:15:00","modified_gmt":"2026-11-12T23:15:00","slug":"a-backup-is-more-convincing-after-you-have-restored-it","status":"publish","type":"post","link":"https:\/\/wade.one\/blog\/2026\/11\/14\/a-backup-is-more-convincing-after-you-have-restored-it\/","title":{"rendered":"A Backup Is More Convincing After You Have Restored It"},"content":{"rendered":"<p>A green backup job is reassuring, but I want to know what happens when somebody actually needs the data back. Can we restore it somewhere clean? Can the application use it? How long does that take? Those are much more useful questions than whether a file arrived in a bucket last night.<\/p>\n<p>For PostgreSQL, the <a href=\"https:\/\/www.postgresql.org\/docs\/18\/backup-dump.html\">SQL dump documentation<\/a> makes an easily missed distinction: a dump of one database does not include cluster-wide roles and tablespaces. Those need separate handling. A database can be backed up successfully while the instructions for recreating its surroundings are still incomplete.<\/p>\n<p>I would start a restore exercise with an isolated destination and the access somebody would actually have during recovery. Restoring into a long-running development environment can hide missing setup because the required role, extension or configuration is already there. Keep the restored application away from real email, payment and background-job integrations as well. Recovery practice should not send yesterday&#8217;s notifications again.<\/p>\n<p>Then check behaviour. Pick a few important records and relationships, run the relevant application reads and try a representative write in that isolated environment. A server accepting connections is a useful first check, but it does not tell you whether an attachment still exists in object storage or whether the application can decrypt a value it needs. The recovery scope has to include those dependencies.<\/p>\n<p>Measure the whole process, including finding the backup, getting access, transferring it, restoring it and checking the result. If the business expects an hour and the transfer alone takes three, that is a planning problem worth discovering on a quiet afternoon. Check the age of the recovered data too. Getting the service running again and recovering recent work are separate requirements.<\/p>\n<p>The useful output is a short recovery procedure somebody else can follow, with a recorded restore time and any gaps made explicit. Repeat the exercise when the storage, encryption or deployment setup changes enough to affect it. I would rather find one missing permission during practice than discover it while everyone is waiting for the service to come back.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A successful backup job tells you something useful. Restoring it and running the application tells you considerably more.<\/p>\n","protected":false},"author":0,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_hide_featured_image":false,"_jetpack_featured_image_duplicate_dismissed":0,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[13],"tags":[322,323,253],"class_list":["post-1498","post","type-post","status-publish","format-standard","hentry","category-programming","tag-backups","tag-disaster-recovery","tag-postgresql"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>A Backup Is More Convincing After You Have Restored It - wade.one<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wade.one\/blog\/2026\/11\/14\/a-backup-is-more-convincing-after-you-have-restored-it\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A Backup Is More Convincing After You Have Restored It - wade.one\" \/>\n<meta property=\"og:description\" content=\"A successful backup job tells you something useful. Restoring it and running the application tells you considerably more.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wade.one\/blog\/2026\/11\/14\/a-backup-is-more-convincing-after-you-have-restored-it\/\" \/>\n<meta property=\"og:site_name\" content=\"wade.one\" \/>\n<meta property=\"article:published_time\" content=\"2026-11-14T18:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/wade.one\/blog\/wp-content\/uploads\/2015\/02\/Wade-Logo-cropped.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1518\" \/>\n\t<meta property=\"og:image:height\" content=\"1506\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@wadewomersley\" \/>\n<meta name=\"twitter:site\" content=\"@wadewomersley\" \/>\n<meta name=\"twitter:label1\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/2026\\\/11\\\/14\\\/a-backup-is-more-convincing-after-you-have-restored-it\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/2026\\\/11\\\/14\\\/a-backup-is-more-convincing-after-you-have-restored-it\\\/\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"A Backup Is More Convincing After You Have Restored It\",\"datePublished\":\"2026-11-14T18:00:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/2026\\\/11\\\/14\\\/a-backup-is-more-convincing-after-you-have-restored-it\\\/\"},\"wordCount\":353,\"publisher\":{\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/#\\\/schema\\\/person\\\/8b4739f8f8bb2cff5d792d4b8779fcc3\"},\"keywords\":[\"backups\",\"disaster-recovery\",\"postgresql\"],\"articleSection\":[\"Programming\"],\"inLanguage\":\"en-GB\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/2026\\\/11\\\/14\\\/a-backup-is-more-convincing-after-you-have-restored-it\\\/\",\"url\":\"https:\\\/\\\/wade.one\\\/blog\\\/2026\\\/11\\\/14\\\/a-backup-is-more-convincing-after-you-have-restored-it\\\/\",\"name\":\"A Backup Is More Convincing After You Have Restored It - wade.one\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/#website\"},\"datePublished\":\"2026-11-14T18:00:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/2026\\\/11\\\/14\\\/a-backup-is-more-convincing-after-you-have-restored-it\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/wade.one\\\/blog\\\/2026\\\/11\\\/14\\\/a-backup-is-more-convincing-after-you-have-restored-it\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/2026\\\/11\\\/14\\\/a-backup-is-more-convincing-after-you-have-restored-it\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/wade.one\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A Backup Is More Convincing After You Have Restored It\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/wade.one\\\/blog\\\/\",\"name\":\"wade.one\",\"description\":\"wade womersley - york based software engineer\",\"publisher\":{\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/#\\\/schema\\\/person\\\/8b4739f8f8bb2cff5d792d4b8779fcc3\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/wade.one\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/#\\\/schema\\\/person\\\/8b4739f8f8bb2cff5d792d4b8779fcc3\",\"name\":\"Wade Womersley\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/02\\\/200px.png\",\"url\":\"https:\\\/\\\/wade.one\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/02\\\/200px.png\",\"contentUrl\":\"https:\\\/\\\/wade.one\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/02\\\/200px.png\",\"width\":202,\"height\":200,\"caption\":\"Wade Womersley\"},\"logo\":{\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/02\\\/200px.png\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"A Backup Is More Convincing After You Have Restored It - wade.one","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:\/\/wade.one\/blog\/2026\/11\/14\/a-backup-is-more-convincing-after-you-have-restored-it\/","og_locale":"en_GB","og_type":"article","og_title":"A Backup Is More Convincing After You Have Restored It - wade.one","og_description":"A successful backup job tells you something useful. Restoring it and running the application tells you considerably more.","og_url":"https:\/\/wade.one\/blog\/2026\/11\/14\/a-backup-is-more-convincing-after-you-have-restored-it\/","og_site_name":"wade.one","article_published_time":"2026-11-14T18:00:00+00:00","og_image":[{"width":1518,"height":1506,"url":"https:\/\/wade.one\/blog\/wp-content\/uploads\/2015\/02\/Wade-Logo-cropped.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_creator":"@wadewomersley","twitter_site":"@wadewomersley","twitter_misc":{"Estimated reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/wade.one\/blog\/2026\/11\/14\/a-backup-is-more-convincing-after-you-have-restored-it\/#article","isPartOf":{"@id":"https:\/\/wade.one\/blog\/2026\/11\/14\/a-backup-is-more-convincing-after-you-have-restored-it\/"},"author":{"name":"","@id":""},"headline":"A Backup Is More Convincing After You Have Restored It","datePublished":"2026-11-14T18:00:00+00:00","mainEntityOfPage":{"@id":"https:\/\/wade.one\/blog\/2026\/11\/14\/a-backup-is-more-convincing-after-you-have-restored-it\/"},"wordCount":353,"publisher":{"@id":"https:\/\/wade.one\/blog\/#\/schema\/person\/8b4739f8f8bb2cff5d792d4b8779fcc3"},"keywords":["backups","disaster-recovery","postgresql"],"articleSection":["Programming"],"inLanguage":"en-GB"},{"@type":"WebPage","@id":"https:\/\/wade.one\/blog\/2026\/11\/14\/a-backup-is-more-convincing-after-you-have-restored-it\/","url":"https:\/\/wade.one\/blog\/2026\/11\/14\/a-backup-is-more-convincing-after-you-have-restored-it\/","name":"A Backup Is More Convincing After You Have Restored It - wade.one","isPartOf":{"@id":"https:\/\/wade.one\/blog\/#website"},"datePublished":"2026-11-14T18:00:00+00:00","breadcrumb":{"@id":"https:\/\/wade.one\/blog\/2026\/11\/14\/a-backup-is-more-convincing-after-you-have-restored-it\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wade.one\/blog\/2026\/11\/14\/a-backup-is-more-convincing-after-you-have-restored-it\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/wade.one\/blog\/2026\/11\/14\/a-backup-is-more-convincing-after-you-have-restored-it\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/wade.one\/blog\/"},{"@type":"ListItem","position":2,"name":"A Backup Is More Convincing After You Have Restored It"}]},{"@type":"WebSite","@id":"https:\/\/wade.one\/blog\/#website","url":"https:\/\/wade.one\/blog\/","name":"wade.one","description":"wade womersley - york based software engineer","publisher":{"@id":"https:\/\/wade.one\/blog\/#\/schema\/person\/8b4739f8f8bb2cff5d792d4b8779fcc3"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wade.one\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":["Person","Organization"],"@id":"https:\/\/wade.one\/blog\/#\/schema\/person\/8b4739f8f8bb2cff5d792d4b8779fcc3","name":"Wade Womersley","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/wade.one\/blog\/wp-content\/uploads\/2015\/02\/200px.png","url":"https:\/\/wade.one\/blog\/wp-content\/uploads\/2015\/02\/200px.png","contentUrl":"https:\/\/wade.one\/blog\/wp-content\/uploads\/2015\/02\/200px.png","width":202,"height":200,"caption":"Wade Womersley"},"logo":{"@id":"https:\/\/wade.one\/blog\/wp-content\/uploads\/2015\/02\/200px.png"}}]}},"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":1431,"url":"https:\/\/wade.one\/blog\/2026\/10\/12\/postgresql-14-support-ends-in-november-plan-the-upgrade-now\/","url_meta":{"origin":1498,"position":0},"title":"PostgreSQL 14 Support Ends in November: Plan the Upgrade Now","author":"","date":"October 12, 2026","format":false,"excerpt":"PostgreSQL 14 reaches the end of community support on 12 November 2026.","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/wade.one\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1434,"url":"https:\/\/wade.one\/blog\/2026\/10\/15\/read-the-postgresql-query-plan-before-adding-another-index\/","url_meta":{"origin":1498,"position":1},"title":"Read the PostgreSQL Query Plan Before Adding Another Index","author":"","date":"October 15, 2026","format":false,"excerpt":"When a database query gets slow, adding an index is an appealingly concrete thing to do.","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/wade.one\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1503,"url":"https:\/\/wade.one\/blog\/2026\/11\/13\/optimistic-locking-stops-an-old-tab-overwriting-new-work\/","url_meta":{"origin":1498,"position":2},"title":"Optimistic Locking Stops an Old Tab Overwriting New Work","author":"","date":"November 13, 2026","format":false,"excerpt":"Two people can save valid changes and still overwrite each other. A version check gives the application a chance to catch it.","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/wade.one\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1472,"url":"https:\/\/wade.one\/blog\/2026\/10\/29\/a-database-constraint-can-close-the-gap-between-checking-and-writing\/","url_meta":{"origin":1498,"position":3},"title":"A Database Constraint Can Close the Gap Between Checking and Writing","author":"","date":"October 29, 2026","format":false,"excerpt":"Checking whether a record exists before inserting another one does not guarantee uniqueness.","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/wade.one\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1436,"url":"https:\/\/wade.one\/blog\/2026\/10\/17\/passkeys-still-need-a-sensible-account-recovery-flow\/","url_meta":{"origin":1498,"position":4},"title":"Passkeys Still Need a Sensible Account Recovery Flow","author":"","date":"October 17, 2026","format":false,"excerpt":"Passkeys can make signing in feel pleasantly uneventful.","rel":"","context":"In &quot;Software&quot;","block_context":{"text":"Software","link":"https:\/\/wade.one\/blog\/category\/software\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":337,"url":"https:\/\/wade.one\/blog\/2009\/11\/18\/superb-vps-virtual-private-server-provider-vps-net\/","url_meta":{"origin":1498,"position":5},"title":"Superb VPS (Virtual Private Server) Provider &#8211; VPS.net Review","author":"Wade","date":"November 18, 2009","format":false,"excerpt":"A few months ago at work we realised the need for lots of \"nodes\" (servers) in the UK and in the US initially. We have a lot of data processing that we need to do and we worked out it would be faster and cheaper if we could distribute the\u2026","rel":"","context":"In &quot;Hardware&quot;","block_context":{"text":"Hardware","link":"https:\/\/wade.one\/blog\/category\/hardware\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/posts\/1498","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/comments?post=1498"}],"version-history":[{"count":2,"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/posts\/1498\/revisions"}],"predecessor-version":[{"id":1521,"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/posts\/1498\/revisions\/1521"}],"wp:attachment":[{"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/media?parent=1498"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/categories?post=1498"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/tags?post=1498"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}