KubeBlocks
BlogsEnterprise
⌘K
​
Blogs

Overview
Quickstart
Architecture

Operations

Lifecycle Management
Vertical Scaling
Horizontal Scaling
Volume Expansion
Configuration
Minor Version Upgrade
Manage Services

Backup And Restore

Backup
Restore

Monitoring

Observability for ZooKeeper Clusters
FAQs
  1. Backup Method
  2. Prerequisites
  3. Verify Backup Configuration
    1. Check BackupRepo
    2. Check BackupPolicy
  4. Create an On-Demand Backup
  5. Monitor Backup Progress
  6. Configure Scheduled Backups
  7. Troubleshooting
  8. Cleanup

Backup a ZooKeeper Cluster

This guide demonstrates how to create backups for ZooKeeper clusters managed by KubeBlocks using the zoocreeper backup method.

Backup Method

KubeBlocks ZooKeeper uses zoocreeper for full backups:

MethodDescription
zoocreeperCopies ZooKeeper data snapshots and transaction logs to a backup repository. Runs on a follower node (falls back to leader if no follower is available).

Prerequisites

    Before proceeding, verify your environment meets these requirements:

    • A functional Kubernetes cluster (v1.21+ recommended)
    • kubectl v1.21+ installed and configured with cluster access
    • Helm installed (installation guide)
    • KubeBlocks installed (installation guide)
    • ZooKeeper Add-on installed and a ZooKeeper cluster running (see Quickstart)
    • A BackupRepo configured and in Ready state. See Create a BackupRepo for setup instructions.

    Verify Backup Configuration

    Check BackupRepo

    kubectl get backuprepo
    Example Output
    NAME STATUS STORAGEPROVIDER ACCESSMETHOD DEFAULT AGE minio-repo Ready minio Tool true 6h

    Check BackupPolicy

    KubeBlocks automatically generates a BackupPolicy for each ZooKeeper cluster:

    kubectl get backuppolicy -n demo -l app.kubernetes.io/instance=zookeeper-cluster
    Example Output
    NAME STATUS AGE zookeeper-cluster-zookeeper-backup-policy Available 6h

    View the available backup methods:

    kubectl get backuppolicy zookeeper-cluster-zookeeper-backup-policy -n demo -oyaml \ | grep -A2 "backupMethods:"

    ZooKeeper supports one backup method: zoocreeper.

    Create an On-Demand Backup

    apiVersion: dataprotection.kubeblocks.io/v1alpha1 kind: Backup metadata: name: zk-cluster-backup namespace: demo spec: # Backup method: zoocreeper backupMethod: zoocreeper backupPolicyName: zookeeper-cluster-zookeeper-backup-policy # `Retain`: backup data is kept when the Backup CR is deleted # `Delete`: backup data is removed when the Backup CR is deleted deletionPolicy: Delete

    Apply it:

    kubectl apply -f https://raw.githubusercontent.com/apecloud/kubeblocks-addons/refs/heads/main/examples/zookeeper/backup.yaml
    apiVersion: operations.kubeblocks.io/v1alpha1 kind: OpsRequest metadata: name: zk-cluster-backup-ops namespace: demo spec: clusterName: zookeeper-cluster type: Backup backup: backupPolicyName: zookeeper-cluster-zookeeper-backup-policy backupMethod: zoocreeper deletionPolicy: Delete retentionPeriod: 7d

    Monitor Backup Progress

    kubectl get backup zk-cluster-backup -n demo -w
    Example Output
    NAME POLICY METHOD REPO STATUS TOTAL-SIZE DURATION DELETION-POLICY CREATION-TIME COMPLETION-TIME zk-cluster-backup zookeeper-cluster-zookeeper-backup-policy zoocreeper minio-repo Running 0 0s Delete 2026-04-03T12:37:31Z zk-cluster-backup zookeeper-cluster-zookeeper-backup-policy zoocreeper minio-repo Completed 588 17s Delete 2026-04-03T12:37:31Z 2026-04-03T12:37:47Z

    A Completed status means the backup succeeded.

    Configure Scheduled Backups

    Enable automatic scheduled backups by updating the BackupSchedule:

    kubectl patch backupschedule zookeeper-cluster-zookeeper-backup-schedule -n demo \ --type merge \ -p '{"spec":{"schedules":[{"backupMethod":"zoocreeper","cronExpression":"0 2 * * *","enabled":true,"retentionPeriod":"7d"}]}}'

    This schedules a daily backup at 2:00 AM with a 7-day retention period.

    Verify:

    kubectl get backupschedule zookeeper-cluster-zookeeper-backup-schedule -n demo -oyaml \ | grep -A5 "schedules:"
    Example Output
    schedules: - backupMethod: zoocreeper cronExpression: 0 2 * * * enabled: true retentionPeriod: 7d

    Troubleshooting

    If a backup fails or stays in Running state:

    1. Check the Backup resource for errors:

      kubectl describe backup zk-cluster-backup -n demo
    2. Check the backup job:

      kubectl get job -n demo -l app.kubernetes.io/instance=zookeeper-cluster,app.kubernetes.io/managed-by=kubeblocks-dataprotection
    3. Check job pod logs:

      kubectl logs -n demo -l app.kubernetes.io/instance=zookeeper-cluster,app.kubernetes.io/managed-by=kubeblocks-dataprotection

    Cleanup

    kubectl delete backup zk-cluster-backup -n demo kubectl delete cluster zookeeper-cluster -n demo kubectl delete ns demo

    © 2026 KUBEBLOCKS INC