{
    "api_version": "1",
    "kind": "dse_post",
    "self": "https://update.dsesecurity.com/api/v1/posts/keep-raw-postgresql-table-files-out-of-selective-recovery-plans/",
    "item": {
        "id": "https://update.dsesecurity.com/updates/keep-raw-postgresql-table-files-out-of-selective-recovery-plans/",
        "slug": "keep-raw-postgresql-table-files-out-of-selective-recovery-plans",
        "url": "https://update.dsesecurity.com/updates/keep-raw-postgresql-table-files-out-of-selective-recovery-plans/",
        "alternate_urls": {
            "markdown": "https://update.dsesecurity.com/updates/keep-raw-postgresql-table-files-out-of-selective-recovery-plans.md",
            "json": "https://update.dsesecurity.com/api/v1/posts/keep-raw-postgresql-table-files-out-of-selective-recovery-plans/"
        },
        "title": "Keep raw PostgreSQL table files out of selective recovery plans",
        "summary": "Use a database recovery path instead of replacing raw relation files to recover one PostgreSQL table.",
        "format": {
            "slug": "guide",
            "name": "Guide"
        },
        "priority": {
            "slug": "info",
            "name": "Information"
        },
        "featured": false,
        "image": {
            "theme": "continuity-recovery",
            "label": "Continuity & recovery",
            "alt": "Paired infrastructure paths converging on a stable recovered service.",
            "card_url": "https://update.dsesecurity.com/assets/editorial/continuity-recovery-card.webp?v=1.8.20",
            "hero_url": "https://update.dsesecurity.com/assets/editorial/continuity-recovery-hero.webp?v=1.8.20",
            "social_url": "https://update.dsesecurity.com/assets/editorial/continuity-recovery-social-v2.jpg?v=1.8.20",
            "width": 2400,
            "height": 1350
        },
        "topics": [
            {
                "slug": "business-continuity",
                "name": "Business Continuity",
                "url": "https://update.dsesecurity.com/topic/business-continuity/"
            },
            {
                "slug": "it",
                "name": "IT",
                "url": "https://update.dsesecurity.com/topic/it/"
            }
        ],
        "author": {
            "name": "DSE Security Editorial Team",
            "url": "https://update.dsesecurity.com/#editorial-team",
            "type": "Organization"
        },
        "publisher": {
            "name": "Detection Systems & Engineering",
            "url": "https://dsesecurity.com/"
        },
        "published_at": "2026-10-15T13:32:25+00:00",
        "modified_at": "2026-10-15T13:36:14+00:00",
        "reviewed_on": "2026-10-15",
        "reading_minutes": 2,
        "word_count": 265,
        "potentially_affected": "This applies to PostgreSQL 17 filesystem-level recovery boundaries. It addresses the temptation to replace raw relation files, rather than selection and dependency handling within a logical pg_restore archive.",
        "dse_recommendation": "DSE recommends routing a request for one missing table through the database recovery owner before any filesystem replacement is attempted.",
        "primary_source": {
            "name": "PostgreSQL 17 — File System Level Backup",
            "url": "https://www.postgresql.org/docs/17/backup-file.html",
            "published_on": null,
            "authority": "www.postgresql.org"
        },
        "publishing_principles": "https://update.dsesecurity.com/updates/dse-updates-editorial-methodology/",
        "usage_info": "https://update.dsesecurity.com/usage/",
        "copyright_notice": "Copyright © 2026 Detection Systems & Engineering. All rights reserved.",
        "content_html": "<p>Use a database recovery path instead of replacing raw relation files to recover one PostgreSQL table.</p>\n<h2>Source facts</h2>\n<p>PostgreSQL 17 documentation explains why an individual table&#8217;s raw files cannot be restored as a standalone database backup. Their interpretation depends on transaction commit-status files in pg_xact. Restoring a table together with only selected commit-status data is not a solution, because that would invalidate the other tables in the cluster. Filesystem-level backup and restoration therefore operate on the complete cluster. An ordinary file-copy backup also requires the server to be stopped; blocking new connections alone is insufficient.</p>\n<p>Source: <a href=\"https://www.postgresql.org/docs/17/backup-file.html\">PostgreSQL 17 — File System Level Backup</a>.</p>\n<h2>Applicability</h2>\n<p>This applies to PostgreSQL 17 filesystem-level recovery boundaries. It addresses the temptation to replace raw relation files, rather than selection and dependency handling within a logical pg_restore archive.</p>\n<h2>DSE recommendation</h2>\n<p>DSE recommends routing a request for one missing table through the database recovery owner before any filesystem replacement is attempted. Preserve the original cluster and its recovery artifacts, and identify whether a suitable logical archive or isolated complete-cluster recovery can supply the required records. Keep raw storage filenames out of instructions for a general helpdesk file restore. Require an application-level transfer plan for approved recovered data, with ownership and consistency checks suited to the request.</p>\n<h2>Verification</h2>\n<p>Rehearse the chosen recovery method on an isolated complete cluster or supported logical archive. Confirm the requested table and its relationships before exporting approved data. Retain the recovery point, transfer method, and application acceptance evidence; do not experiment by replacing relation or commit-status files in a live cluster.</p>\n<h2>Official reference</h2>\n<p><a href=\"https://www.postgresql.org/docs/17/backup-file.html\">PostgreSQL 17 — File System Level Backup</a>. Reviewed October 15, 2026.</p>",
        "content_text": "Use a database recovery path instead of replacing raw relation files to recover one PostgreSQL table.\nSource facts\nPostgreSQL 17 documentation explains why an individual table’s raw files cannot be restored as a standalone database backup. Their interpretation depends on transaction commit-status files in pg_xact. Restoring a table together with only selected commit-status data is not a solution, because that would invalidate the other tables in the cluster. Filesystem-level backup and restoration therefore operate on the complete cluster. An ordinary file-copy backup also requires the server to be stopped; blocking new connections alone is insufficient.\nSource: PostgreSQL 17 — File System Level Backup.\nApplicability\nThis applies to PostgreSQL 17 filesystem-level recovery boundaries. It addresses the temptation to replace raw relation files, rather than selection and dependency handling within a logical pg_restore archive.\nDSE recommendation\nDSE recommends routing a request for one missing table through the database recovery owner before any filesystem replacement is attempted. Preserve the original cluster and its recovery artifacts, and identify whether a suitable logical archive or isolated complete-cluster recovery can supply the required records. Keep raw storage filenames out of instructions for a general helpdesk file restore. Require an application-level transfer plan for approved recovered data, with ownership and consistency checks suited to the request.\nVerification\nRehearse the chosen recovery method on an isolated complete cluster or supported logical archive. Confirm the requested table and its relationships before exporting approved data. Retain the recovery point, transfer method, and application acceptance evidence; do not experiment by replacing relation or commit-status files in a live cluster.\nOfficial reference\nPostgreSQL 17 — File System Level Backup. Reviewed October 15, 2026.",
        "content_markdown": "Use a database recovery path instead of replacing raw relation files to recover one PostgreSQL table.\n\n## Source facts\n\nPostgreSQL 17 documentation explains why an individual table’s raw files cannot be restored as a standalone database backup. Their interpretation depends on transaction commit-status files in pg_xact. Restoring a table together with only selected commit-status data is not a solution, because that would invalidate the other tables in the cluster. Filesystem-level backup and restoration therefore operate on the complete cluster. An ordinary file-copy backup also requires the server to be stopped; blocking new connections alone is insufficient.\n\nSource: [PostgreSQL 17 — File System Level Backup](https://www.postgresql.org/docs/17/backup-file.html).\n\n## Applicability\n\nThis applies to PostgreSQL 17 filesystem-level recovery boundaries. It addresses the temptation to replace raw relation files, rather than selection and dependency handling within a logical pg_restore archive.\n\n## DSE recommendation\n\nDSE recommends routing a request for one missing table through the database recovery owner before any filesystem replacement is attempted. Preserve the original cluster and its recovery artifacts, and identify whether a suitable logical archive or isolated complete-cluster recovery can supply the required records. Keep raw storage filenames out of instructions for a general helpdesk file restore. Require an application-level transfer plan for approved recovered data, with ownership and consistency checks suited to the request.\n\n## Verification\n\nRehearse the chosen recovery method on an isolated complete cluster or supported logical archive. Confirm the requested table and its relationships before exporting approved data. Retain the recovery point, transfer method, and application acceptance evidence; do not experiment by replacing relation or commit-status files in a live cluster.\n\n## Official reference\n\n[PostgreSQL 17 — File System Level Backup](https://www.postgresql.org/docs/17/backup-file.html). Reviewed October 15, 2026."
    },
    "json_ld": {
        "@context": "https://schema.org",
        "@graph": [
            {
                "@type": "Organization",
                "@id": "https://dsesecurity.com/#organization",
                "name": "Detection Systems & Engineering",
                "alternateName": "DSE Security",
                "url": "https://dsesecurity.com/",
                "logo": {
                    "@type": "ImageObject",
                    "url": "https://update.dsesecurity.com/assets/dse-logo-20260812.png?v=1.8.20"
                }
            },
            {
                "@type": "Organization",
                "@id": "https://update.dsesecurity.com/#editorial-team",
                "name": "DSE Security Editorial Team",
                "url": "https://update.dsesecurity.com/",
                "parentOrganization": {
                    "@id": "https://dsesecurity.com/#organization"
                }
            },
            {
                "@type": "WebSite",
                "@id": "https://update.dsesecurity.com/#website",
                "name": "DSE Updates",
                "alternateName": "DSE Security Knowledge Hub",
                "url": "https://update.dsesecurity.com/",
                "inLanguage": "en-US",
                "publisher": {
                    "@id": "https://dsesecurity.com/#organization"
                },
                "potentialAction": {
                    "@type": "SearchAction",
                    "target": {
                        "@type": "EntryPoint",
                        "urlTemplate": "https://update.dsesecurity.com/?q={search_term_string}"
                    },
                    "query-input": "required name=search_term_string"
                }
            },
            {
                "@type": "WebPage",
                "@id": "https://update.dsesecurity.com/updates/keep-raw-postgresql-table-files-out-of-selective-recovery-plans/",
                "url": "https://update.dsesecurity.com/updates/keep-raw-postgresql-table-files-out-of-selective-recovery-plans/",
                "isPartOf": {
                    "@id": "https://update.dsesecurity.com/#website"
                },
                "lastReviewed": "2026-10-15"
            },
            {
                "@type": "BreadcrumbList",
                "@id": "https://update.dsesecurity.com/updates/keep-raw-postgresql-table-files-out-of-selective-recovery-plans/#breadcrumbs",
                "itemListElement": [
                    {
                        "@type": "ListItem",
                        "position": 1,
                        "name": "DSE Updates",
                        "item": "https://update.dsesecurity.com/"
                    },
                    {
                        "@type": "ListItem",
                        "position": 2,
                        "name": "Keep raw PostgreSQL table files out of selective recovery plans",
                        "item": "https://update.dsesecurity.com/updates/keep-raw-postgresql-table-files-out-of-selective-recovery-plans/"
                    }
                ]
            },
            {
                "@type": [
                    "Article",
                    "TechArticle"
                ],
                "@id": "https://update.dsesecurity.com/updates/keep-raw-postgresql-table-files-out-of-selective-recovery-plans/#article",
                "identifier": "https://update.dsesecurity.com/updates/keep-raw-postgresql-table-files-out-of-selective-recovery-plans/",
                "url": "https://update.dsesecurity.com/updates/keep-raw-postgresql-table-files-out-of-selective-recovery-plans/",
                "headline": "Keep raw PostgreSQL table files out of selective recovery plans",
                "description": "Use a database recovery path instead of replacing raw relation files to recover one PostgreSQL table.",
                "abstract": "Use a database recovery path instead of replacing raw relation files to recover one PostgreSQL table.",
                "articleBody": "Use a database recovery path instead of replacing raw relation files to recover one PostgreSQL table.\nSource facts\nPostgreSQL 17 documentation explains why an individual table’s raw files cannot be restored as a standalone database backup. Their interpretation depends on transaction commit-status files in pg_xact. Restoring a table together with only selected commit-status data is not a solution, because that would invalidate the other tables in the cluster. Filesystem-level backup and restoration therefore operate on the complete cluster. An ordinary file-copy backup also requires the server to be stopped; blocking new connections alone is insufficient.\nSource: PostgreSQL 17 — File System Level Backup.\nApplicability\nThis applies to PostgreSQL 17 filesystem-level recovery boundaries. It addresses the temptation to replace raw relation files, rather than selection and dependency handling within a logical pg_restore archive.\nDSE recommendation\nDSE recommends routing a request for one missing table through the database recovery owner before any filesystem replacement is attempted. Preserve the original cluster and its recovery artifacts, and identify whether a suitable logical archive or isolated complete-cluster recovery can supply the required records. Keep raw storage filenames out of instructions for a general helpdesk file restore. Require an application-level transfer plan for approved recovered data, with ownership and consistency checks suited to the request.\nVerification\nRehearse the chosen recovery method on an isolated complete cluster or supported logical archive. Confirm the requested table and its relationships before exporting approved data. Retain the recovery point, transfer method, and application acceptance evidence; do not experiment by replacing relation or commit-status files in a live cluster.\nOfficial reference\nPostgreSQL 17 — File System Level Backup. Reviewed October 15, 2026.",
                "datePublished": "2026-10-15T13:32:25+00:00",
                "dateModified": "2026-10-15T13:36:14+00:00",
                "mainEntityOfPage": {
                    "@id": "https://update.dsesecurity.com/updates/keep-raw-postgresql-table-files-out-of-selective-recovery-plans/"
                },
                "inLanguage": "en-US",
                "isAccessibleForFree": true,
                "author": {
                    "@type": "Organization",
                    "name": "DSE Security Editorial Team",
                    "url": "https://update.dsesecurity.com/#editorial-team"
                },
                "publisher": {
                    "@id": "https://dsesecurity.com/#organization"
                },
                "image": {
                    "@type": "ImageObject",
                    "@id": "https://update.dsesecurity.com/updates/keep-raw-postgresql-table-files-out-of-selective-recovery-plans/#primaryimage",
                    "url": "https://update.dsesecurity.com/assets/editorial/continuity-recovery-social-v2.jpg?v=1.8.20",
                    "contentUrl": "https://update.dsesecurity.com/assets/editorial/continuity-recovery-social-v2.jpg?v=1.8.20",
                    "width": 1200,
                    "height": 630,
                    "caption": "Keep raw PostgreSQL table files out of selective recovery plans"
                },
                "articleSection": [
                    "Business Continuity",
                    "IT"
                ],
                "keywords": [
                    "Business Continuity",
                    "IT",
                    "Guide",
                    "Information priority"
                ],
                "genre": "Guide",
                "about": [
                    {
                        "@type": "Thing",
                        "name": "Business Continuity",
                        "url": "https://update.dsesecurity.com/topic/business-continuity/"
                    },
                    {
                        "@type": "Thing",
                        "name": "IT",
                        "url": "https://update.dsesecurity.com/topic/it/"
                    }
                ],
                "wordCount": 265,
                "timeRequired": "PT2M",
                "publishingPrinciples": "https://update.dsesecurity.com/updates/dse-updates-editorial-methodology/",
                "usageInfo": "https://update.dsesecurity.com/usage/",
                "copyrightHolder": {
                    "@id": "https://dsesecurity.com/#organization"
                },
                "copyrightNotice": "Copyright © 2026 Detection Systems & Engineering. All rights reserved.",
                "citation": {
                    "@type": "CreativeWork",
                    "name": "PostgreSQL 17 — File System Level Backup",
                    "url": "https://www.postgresql.org/docs/17/backup-file.html"
                }
            }
        ]
    }
}