WAL archiving ============= .. raw:: html Write-Ahead Log (WAL) archiving in CloudNativePG is the process of continuously shipping WAL files to a designated object store from the PostgreSQL primary. These archives are essential for enabling Point-In-Time Recovery (PITR) and are a foundational component for both object store and volume snapshot-based backup strategies. Plugin-Based Architecture ------------------------- CloudNativePG supports WAL archiving through a **plugin-based mechanism**, defined via the :ref:`spec.pluginConfiguration ` section of the ``Cluster`` resource. Only **one plugin at a time** can be responsible for WAL archiving. This is configured by setting the ``isWALArchiver`` field to ``true`` within the plugin configuration. Supported Plugins ----------------- Currently, the **Barman Cloud Plugin** is the only officially supported WAL archiving plugin maintained by the CloudNativePG Community. For full documentation, configuration options, and best practices, see the `Barman Cloud Plugin documentation `_ . Deprecation Notice: Native Barman Cloud --------------------------------------- CloudNativePG still supports WAL archiving natively through the ``.spec.backup.barmanObjectStore`` field. While still functional, **this interface is deprecated** and will be removed in a future release. .. Note:: All new deployments are strongly encouraged to adopt the plugin-based architecture, which offers a more flexible and maintainable approach.   If you are currently using the native ``.spec.backup.barmanObjectStore`` approach, refer to the official guide for a smooth transition: `Migrating from Built-in CloudNativePG Backup `_ . About the archive timeout ------------------------- By default, CloudNativePG sets ``archive_timeout`` to ``5min`` , ensuring that WAL files, even in case of low workloads, are closed and archived at least every 5 minutes, providing a deterministic time-based value for your Recovery Point Objective ( :ref:`PgBouncerPoolMode ` ). Even though you change the value of the `archive_timeout `_ , our experience suggests that the default value set by the operator is suitable for most use cases.