# Restore of Xtrabackup from standalone database to PXC on Kubernetes fails

**URL:** <https://forums.percona.com/t/restore-of-xtrabackup-from-standalone-database-to-pxc-on-kubernetes-fails/39190>\
**Category:** Percona Operator for MySQL\
**Created:** [August 21, 2025, 2:49pm UTC](https://forums.percona.com/t/restore-of-xtrabackup-from-standalone-database-to-pxc-on-kubernetes-fails/39190 "2025-08-21T14:49:03Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![letsmakesense](https://avatars.discourse-cdn.com/v4/letter/l/eb8c5e/32.png) [@letsmakesense](https://forums.percona.com/u/letsmakesense)\
**Post date:** [August 21, 2025, 2:49pm UTC](https://forums.percona.com/t/restore-of-xtrabackup-from-standalone-database-to-pxc-on-kubernetes-fails/39190/1 "2025-08-21T14:49:03Z")

</div>

## Description:

We are in the process of moving from a Proxmox cluster to Kubernetes and need to transfer data from a Percona MySQL Server 8.0 to the Percona Operator for MySQL XtraDBCluster. I’m following this [documentation](https://docs.percona.com/percona-operator-for-mysql/pxc/backups-move-from-external-db.html).

We successfully created an xtrabackup and saved it to S3 storage using the following command

```auto
xtrabackup --defaults-extra-file=/etc/mysql/conf.d/admin.conf --backup --stream=xbstream --extra-lsndir=/tmp --target-dir=/tmp | xbcloud put --storage=s3 --s3-endpoint='[[EDITED]]' --s3-access-key=[[EDITED]] --s3-secret-key=[[EDITED]] --s3-bucket='[[EDITED]]' --md5 --parallel=10 `date +%Y%m%d-%H%M`-full_backup

```

but the restore job fails. Looks like a file ‘.sst\_info’ is missing. The restore job is very straightforward:

```auto
apiVersion: pxc.percona.com/v1
kind: PerconaXtraDBClusterRestore
metadata:
  name: restore-stage
spec:
  pxcCluster: percona-cluster-pxc-d
  backupSource:
    destination: s3://ts-protected-dev/20250821-1539-full_backup
    s3:
      bucket: ts-protected-dev
      credentialsSecret: [[EDITED]]
      endpointUrl: "[[EDITED]]"
      region: "eu-central-1"

```

The job pods start successfully and have access to the S3 bucket

```auto
+ aws s3 ls ts-protected-dev/20250821-1539-full_backup
                           PRE 20250821-1539-full_backup/
2025-08-21 13:44:12 284139 20250821-1539-full_backup.md5

```

But as one can see in the file listings an .md5 file is available, but not .sst\_info file. This results in the following error:

```auto
+ xbcloud get --parallel=2 --curl-retriable-errors=7 s3://ts-protected-dev/20250821-1539-full_backup.sst_info
250821 14:23:44 xbcloud: Successfully connected.
250821 14:23:44 xbcloud: Download failed. Cannot list 20250821-1539-full_backup.sst_info.
++ parse_ini mysql-version /datadir/pxc_sst_2sNi/sst_info
++ local key=mysql-version
++ local file_path=/datadir/pxc_sst_2sNi/sst_info
++ awk -F '=[]*' '/mysql-version[]*=/ {print $2}' /datadir/pxc_sst_2sNi/sst_info
awk: fatal: cannot open file `/datadir/pxc_sst_2sNi/sst_info' for reading: No such file or directory
+ MYSQL_VERSION=

```

After this error the pod exits and a new pod retries the restore, but all of them fail with the same problem.

What is the expected behaviour? Should the process continue even if no .sst\_info file is available or do we have to modify the backup command so a .sst\_file will be created?

## Steps to Reproduce:

Tried several times, always the same result

## Version:

Percona MySQL Server 8.0.42-33-1.focal / Xtrabackup 8.0.35-31 on Proxmox virtual machine

## Logs:

see description

---

<div class="post-metadata">

**Author:** ![Slava\_Sarzhan](https://sea1.discourse-cdn.com/flex019/user_avatar/forums.percona.com/slava_sarzhan/32/3196_2.png) [@Slava\_Sarzhan](https://forums.percona.com/u/Slava_Sarzhan)\
**Post date:** [August 21, 2025, 3:27pm UTC](https://forums.percona.com/t/restore-of-xtrabackup-from-standalone-database-to-pxc-on-kubernetes-fails/39190/2 "2025-08-21T15:27:04Z")

</div>

> [@letsmakesense](#):
>
> `sst_info`

Hi @letsmakesense , this file is needed to detect the MySQL version of the backup. Please modify the backup command. Thanks.

---

<div class="post-metadata">

**Author:** ![letsmakesense](https://avatars.discourse-cdn.com/v4/letter/l/eb8c5e/32.png) [@letsmakesense](https://forums.percona.com/u/letsmakesense)\
**Post date:** [August 22, 2025, 7:39pm UTC](https://forums.percona.com/t/restore-of-xtrabackup-from-standalone-database-to-pxc-on-kubernetes-fails/39190/3 "2025-08-22T19:39:28Z")

</div>

Hi @Slava_Sarzhan thanks for your reply! It looks like the ‘–galera-info’ options creates this file. But this option does not work on a standalone Percona MySQL server. Would it be possible to prepare the backup, save it on a volume used by the PVC of the first node of a new Percona Operator XtraDB Cluster and bootstrap the node with this prepared volume?

---

<div class="post-metadata">

**Author:** ![Slava\_Sarzhan](https://sea1.discourse-cdn.com/flex019/user_avatar/forums.percona.com/slava_sarzhan/32/3196_2.png) [@Slava\_Sarzhan](https://forums.percona.com/u/Slava_Sarzhan)\
**Post date:** [August 29, 2025, 7:48pm UTC](https://forums.percona.com/t/restore-of-xtrabackup-from-standalone-database-to-pxc-on-kubernetes-fails/39190/4 "2025-08-29T19:48:16Z")

</div>

@letsmakesense I have created a test branch [Allow restore without sst\_info by hors · Pull Request #2182 · percona/percona-xtradb-cluster-operator · GitHub](https://github.com/percona/percona-xtradb-cluster-operator/pull/2182) and an image `perconalab/percona-xtradb-cluster-operator:test-without_sst_info` for you. It is based on the main branch, so please do not use it for production. Please test it and inform me about the results.

---

<div class="post-metadata">

**Author:** ![letsmakesense](https://avatars.discourse-cdn.com/v4/letter/l/eb8c5e/32.png) [@letsmakesense](https://forums.percona.com/u/letsmakesense)\
**Post date:** [September 1, 2025, 6:24am UTC](https://forums.percona.com/t/restore-of-xtrabackup-from-standalone-database-to-pxc-on-kubernetes-fails/39190/5 "2025-09-01T06:24:14Z")

</div>

Wow great. Thanks for the image. I will try it out the next days. Meanwhile I found a solution by creating a Kubernetes job which downloads the backup from S3, prepares it and copies the files to the PVC of the first node.

```auto
apiVersion: batch/v1
kind: Job
metadata:
  name: pxc-prepare-job
spec:
  backoffLimit: 1
  template:
    spec:
      restartPolicy: Never
      containers:
        - name: restore
          image: percona/percona-xtrabackup:8.0
          securityContext:
            runAsUser: 0
          command: ["/bin/sh", "-c"]
          args:
            - |
              set -e
              rm -rf /var/lib/mysql/*
              chown -R 1001:1001 /var/lib/mysql
              echo "=== Downloading backup from S3 ==="
              xbcloud get --storage=s3 \
                --s3-bucket=$BUCKET \
                --s3-endpoint='$ENDPOINT' \
                --s3-access-key=$AWS_ACCESS_KEY_ID \
                --s3-secret-key=$AWS_SECRET_ACCESS_KEY \
                --parallel=10 \
                $BACKUP | xbstream -x -C /var/lib/mysql
              
              echo "=== Preparing backup ==="
              xtrabackup --prepare --target-dir=/var/lib/mysql

              echo "=== Fixing ownership ==="
              chown -R 1001:1001 /var/lib/mysql
              echo "=== Restore complete ==="
          volumeMounts:
            - name: data
              mountPath: /var/lib/mysql
          env:
			- name: ENDPOINT
			  value: [[YOUR_ENDPOINT]]
			- name: BUCKET
			  value: [[YOUR_BUCKET]]
            - name: AWS_ACCESS_KEY_ID
              valueFrom:
                secretKeyRef:
                  name: [[YOUR_S3_SECRET]]
                  key: AWS_ACCESS_KEY_ID
            - name: AWS_SECRET_ACCESS_KEY
              valueFrom:
                secretKeyRef:
                  name: [[YOUR_S3_SECRET]]
                  key: AWS_SECRET_ACCESS_KEY
            - name: AWS_DEFAULT_REGION
              value: eu-central-1
            - name: BACKUP
              value: "[[YOUR_BACKUP_PREFIX]]"
      volumes:
        - name: data
          persistentVolumeClaim:
            claimName: datadir-[[YOUR_CLUSTERNAME]]-pxc-0

```

---

<div class="post-metadata">

**Author:** ![KSDreams](https://sea1.discourse-cdn.com/flex019/user_avatar/forums.percona.com/ksdreams/32/21438_2.png) [@KSDreams](https://forums.percona.com/u/KSDreams)\
**Post date:** [September 11, 2025, 7:34pm UTC](https://forums.percona.com/t/restore-of-xtrabackup-from-standalone-database-to-pxc-on-kubernetes-fails/39190/6 "2025-09-11T19:34:21Z")

</div>

Hey @Slava_Sarzhan  
Just posting to say I ran into the exact same issue trying to restore a backup on the latest version of the operator - worth noting that these restores worked just fine on 1.17.1 but updating to 1.18.0 has broken them. Tried to change the image in my image to `perconalab/percona-xtradb-cluster-operator:test-without_sst_info` but the image is missing `aws` so it fails before it gets to the step needed

```auto
+ LIB_PATH=/opt/percona/backup/lib/pxc
+ . /opt/percona/backup/lib/pxc/check-version.sh
+ . /opt/percona/backup/lib/pxc/vault.sh
++ set -o errexit
++ keyring_vault=/etc/mysql/vault-keyring-secret/keyring_vault.conf
+ . /opt/percona/backup/lib/pxc/aws.sh
++ set -o errexit
++ export AWS_SHARED_CREDENTIALS_FILE=/tmp/aws-credfile
++ AWS_SHARED_CREDENTIALS_FILE=/tmp/aws-credfile
++ export AWS_REGION=us-east-1
++ AWS_REGION=us-east-1
++ export AWS_ENDPOINT_URL=https://s3.us-east-1.amazonaws.com
++ AWS_ENDPOINT_URL=https://s3.us-east-1.amazonaws.com
++ '[' -n true ']'
++ [[true == \f\a\l\s\e]]
+ XBCLOUD_ARGS='--curl-retriable-errors=7 '
+ '[' -n true ']'
+ [[true == \f\a\l\s\e]]
+ '[' -n <backup> ']'
/opt/percona/backup/lib/pxc/aws.sh: line 29: aws: command not found

```

So I’m looking into making a copy of that image but with aws installed, but if you release another testing image let me know.

---

<div class="post-metadata">

**Author:** ![Slava\_Sarzhan](https://sea1.discourse-cdn.com/flex019/user_avatar/forums.percona.com/slava_sarzhan/32/3196_2.png) [@Slava\_Sarzhan](https://forums.percona.com/u/Slava_Sarzhan)\
**Post date:** [September 22, 2025, 1:47pm UTC](https://forums.percona.com/t/restore-of-xtrabackup-from-standalone-database-to-pxc-on-kubernetes-fails/39190/7 "2025-09-22T13:47:10Z")

</div>

Hi @KSDreams , so you also tried to restore the standalone database to PXCO?

P.S. I have created a test image, but it is for PXC 1.19.0 only.
