Deleting Broker Data Volumes

Delete broker data volumes to remove persistent MQTT data.

Deleting broker data volumes permanently removes all persistent MQTT data, including client sessions, retained messages, and subscriptions. This operation is typically performed when you need to completely reset the broker state or decommission a broker cluster.

circle-exclamation

Deleting Broker Data is Irreversible

Deleting Broker Data Volumes on Kubernetes

Prerequisites

Procedure

  1. Before making any changes, gather the information you need to complete this procedure.

  • PersistentVolumeClaims list: List the broker PersistentVolumeClaims (PVCs) to identify which volumes you will delete:

    kubectl get pvc -lapp=broker -n ${NAMESPACE}

    Example output

    NAME                  STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
    brokerdata-broker-0   Bound    pvc-3e4cbb94-0e59-4e93-b90b-3fa120ac4d23   1Gi        RWO            efs-sc         <unset>                 11m
    brokerdata-broker-1   Bound    pvc-1316bdc4-5e27-4319-8a15-69e6e8262e12   1Gi        RWO            efs-sc         <unset>                 8m32s
    brokerdata-broker-2   Bound    pvc-6cdbcb83-e7ad-4381-b3ad-bb31484ae7d0   1Gi        RWO            efs-sc         <unset>                 7m58s
    brokerlog-broker-0    Bound    pvc-5f7704ab-c64f-4f0c-b611-1d6ccf476ada   200Mi      RWO            efs-sc         <unset>                 11m
    brokerlog-broker-1    Bound    pvc-52a2c747-7c20-485b-86e9-60cad9e21a45   200Mi      RWO            efs-sc         <unset>                 8m32s
    brokerlog-broker-2    Bound    pvc-467f2e1f-9e64-4981-9c19-cee42b00dfb5   200Mi      RWO            efs-sc         <unset>                 7m58s

    The output lists two types of volumes. brokerdata-* volumes contain message data. You will delete these in step 3. brokerlog-* volumes contain only log files, you do not need to delete them for a data reset.

  • Replica count: Run the following command and write down the number it returns. You will need it in step 5 to scale the broker back up:

    kubectl get sts broker -n ${NAMESPACE} -o jsonpath='{ .status.replicas }'
  1. Scale the broker cluster down to zero replicas. See Scaling the Broker Cluster to Zero Replicas.

  2. Delete the broker data volumes. Replace ${PVC_NAME} with the name of each brokerdata-* PVC you identified in step 1:

Example

For each PVC that starts with brokerdata, run:

Repeat this command for each brokerdata-* volume you identified in step 1.

Alternative: Automated deletion

To delete all broker data volumes at once, use the following command:

circle-info

This command deletes only brokerdata-* volumes, not brokerlog-* volumes.

  1. Verify that the PersistentVolumeClaims have been deleted:

If the command returns no results, the PVCs have been successfully deleted.

  1. After deleting the data volumes, scale the StatefulSet back to the original number of replicas. Replace ${NUM_REPLICAS} with the replica count you noted in step 1:

The broker pods will restart with fresh, empty data volumes.

Cleaning Up Persistent Volumes

Depending on your storage configuration, the underlying PersistentVolumes may still exist after deleting the PersistentVolumeClaims.

  1. List any PersistentVolumes that were previously bound to the deleted claims:

  1. If PersistentVolumes remain with a Retain reclaim policy, delete them manually. Replace ${PERSISTENT_VOLUME_NAME} with the name from the output of step 1:

circle-info

PersistentVolumes with a Delete reclaim policy are automatically removed when their corresponding PersistentVolumeClaim is deleted.

Last updated

Was this helpful?