Revert storage backend to BoltDB from WAL

This topic describes how to revert your Consul storage backend from the experimental WAL LogStore backend to the default BoltDB.

The overall process for reverting to BoltDB consists of the following steps. Repeat the steps for all Consul servers that you need to revert.

  1. Stop target server gracefully.
  2. Remove data directory from target server.
  3. Update target server’s configuration.
  4. Start target server.

Stop target server gracefully

Stop the target server gracefully. For example, if you are using systemd, run the following command:

  1. $ systemctl stop consul

If your environment uses configuration management automation that might interfere with this process, such as Chef or Puppet, you must disable them until you have completely revereted the storage backend.

Remove data directory from target server

Temporarily moving the data directory to a different location is less destructive than deleting it. We recommend moving the data directory instead of deleted it in cases where you unsuccessfully enable WAL. Do not use the old data directory (/data-dir/raft.bak) for recovery after restarting the server. We recommend eventually deleting the old directory.

The following example assumes the data_dir in the server’s configuration is /data-dir and renames it to /data-dir.wal.bak.

  1. $ mv /data-dir/raft /data-dir/raft.wal.bak

When switching backend, you must always remove the entire raft directory not just the raft.db file or wal directory. This is because the log must always be consistent with the snapshots to avoid undefined behavior or data loss.

Update target server’s configuration

Modify the backend in the target server’s configuration file:

  1. raft_logstore {
  2. backend = "boltdb"
  3. verification {
  4. enabled = true
  5. interval = "60s"
  6. }
  7. }

Start target server

Start the target server. For example, if you are using systemd, run the following command:

  1. $ systemctl start consul

Watch for the server to become a healthy voter again.

  1. $ consul operator raft list-peers

Clean up old data directories

If necessary, clean up any raft.wal.bak directories. Replace /data-dir with the value you specified in your configuration file.

  1. $ rm /data-dir/raft.bak