gpbackup incremental backups with DDBoost plugin produce missing/empty segment TOC files when no data changes, causing restore failure
search cancel

gpbackup incremental backups with DDBoost plugin produce missing/empty segment TOC files when no data changes, causing restore failure

book

Article ID: 433610

calendar_today

Updated On:

Products

VMware Tanzu Greenplum

Issue/Introduction

A scenario has been identified where incremental backups taken using gpbackup with --single-data-file and DDBoost plugin may complete successfully even when no data changes occur, but required backup artifacts are not properly generated.

In such cases:

  • gpbackup logs show:

    No tables to backup
    Backup completed successfully
     
  • However, segment TOC files (gpbackup_*_toc.yaml) are either empty or missing from the backup storage.

These incremental backups are still included in the backup chain but when attempting to restore a later incremental backup, gprestore fails with errors such as:

Unable to process segment TOC files using plugin
DDBoost Error 5004: nothing matched

This happens because incremental restore requires a complete chain of backup artifacts, including all segment TOC files from previous backups.

Cause

This behavior is due to two related issues:

1. Backup-side issue (gpbackup)

  • When no data changes occur, gpbackup skips data backup (No tables to backup)
  • However, it does not properly generate or validate segment TOC files
  • The backup still completes successfully without raising any error
  • This results in incomplete backup artifacts

2. Restore-side limitation (gprestore)

  • gprestore requires all segment TOC files from the full + incremental chain
  • If any TOC file is missing, restore fails immediately

Resolution

Workaround:

If the customer urgently needs to restore a particular incremental backup, this issue can be worked around by having the customer create the segment files themselves in the appropriate segment backup locations.  The data files can be created by gzipping /dev/null to produce valid but empty .gz files, the ToC files need to contain the string dataentries: (and nothing else) so that they can be parsed as a valid ToC by gprestore.  However, since this involves manually modifying backups, we don't recommend sharing this workaround more broadly unless a customer hits this specific issue.

 

Permanent Fix:

R&D is targeting to fix this in gpbackup 1.33.0.