Skip to content
Starting November 2023 Percona XtraBackup 2.4 has reached EOL status. If you have 5.7 databases, we encourage you to upgrade to 8.0 and then install Percona XtraBackup 8.0. Learn more

logo
Percona XtraBackup
Encrypted Backups
Initializing search
    percona/pxb-docs
    percona/pxb-docs
    • Home
      • About Percona XtraBackup
      • How Percona XtraBackup Works
      • Understand version numbers
      • Installing Percona XtraBackup 2.4
      • Installing Percona XtraBackup on Debian and Ubuntu
      • Installing Percona XtraBackup on Red Hat Enterprise Linux and CentOS
      • Installing Percona XtraBackup from a Binary Tarball
      • Compiling and Installing from Source Code
      • Running Percona XtraBackup in a Docker container
      • Connection and Privileges Needed
      • Configuring xtrabackup
      • The Backup Cycle - Full Backups
      • Incremental Backup
      • Compressed Backup
      • Encrypted Backup
      • Percona XtraBackup User Manual
      • Throttling Backups
      • Lockless binary log information
      • Encrypted InnoDB Tablespace Backups
      • lock-ddl-per-table Option Improvements
      • How-tos and Recipes
        • Release notes index
        • Percona XtraBackup 2.4.29 (2023-12-18)
        • Percona XtraBackup 2.4.28 (2023-04-04)
        • Percona XtraBackup 2.4.27 (2022-12-06)
        • Percona XtraBackup 2.4.26
        • Percona XtraBackup 2.4.25
        • Percona XtraBackup 2.4.24
        • Percona XtraBackup 2.4.23
        • Percona XtraBackup 2.4.22
        • Percona XtraBackup 2.4.21
        • Percona XtraBackup 2.4.20
        • Percona XtraBackup 2.4.19
        • Percona XtraBackup 2.4.18
        • Percona XtraBackup 2.4.17
        • Percona XtraBackup 2.4.16
        • Percona XtraBackup 2.4.15
        • Percona XtraBackup 2.4.14
        • Percona XtraBackup 2.4.13
        • Percona XtraBackup 2.4.12
        • Percona XtraBackup 2.4.11
        • Percona XtraBackup 2.4.10
        • Percona XtraBackup 2.4.9
        • Percona XtraBackup 2.4.8
        • Percona XtraBackup 2.4.7-2
        • Percona XtraBackup 2.4.7
        • Percona XtraBackup 2.4.6
        • Percona XtraBackup 2.4.5
        • Percona XtraBackup 2.4.4
        • Percona XtraBackup 2.4.3
        • Percona XtraBackup 2.4.2
        • Percona XtraBackup 2.4.1
      • The xtrabackup Option Reference
      • The innobackupex Option Reference
      • The xbcloud Binary
      • Exponential Backoff
      • Using the xbcloud binary with Microsoft Azure Cloud Storage
      • The xbcrypt binary
      • The xbstream binary
      • Known issues and limitations
      • Frequently Asked Questions
      • Glossary
      • Index of files created by Percona XtraBackup
      • Trademark policy
      • Copyright and licensing information
      • Version Checking

    • Creating Encrypted Backups
      • Using innobackupex --encrypt-key
      • Using innobackupex --encrypt-key-file
    • Optimizing the encryption process
    • Decrypting Encrypted Backups
    • Preparing Encrypted Backups
    • Restoring Encrypted Backups
    • Other Reading

    Encrypted Backups¶

    Percona XtraBackup has implemented support for encrypted backups. It can be used to encrypt/decrypt local or streaming backup with xbstream option (streaming tar backups are not supported) in order to add another layer of protection to the backups. Encryption is done with the libgcrypt library.

    Creating Encrypted Backups¶

    To make an encrypted backup following options need to be specified (options innobackupex --encrypt-key and innobackupex --encrypt-key-file are mutually exclusive, i.e. just one of them needs to be provided):

    • innobackupex –encrypt

    • innobackupex –encrypt-key

    • innobackupex –encrypt-key-file

    Both innobackupex --encrypt-key option and innobackupex --encrypt-key-file option can be used to specify the encryption key. Encryption key can be generated with a command like:

    $ openssl rand -base64 24
    

    Example output of that command should look like this:

    GCHFLrDFVx6UAsRb88uLVbAVWbK+Yzfs
    

    This value then can be used as the encryption key

    Using innobackupex --encrypt-key¶

    Example of the innobackupex command using the innobackupex –encrypt-key should look like this

    $ innobackupex --encrypt=AES256 --encrypt-key="GCHFLrDFVx6UAsRb88uLVbAVWbK+Yzfs" /data/backups
    

    Using innobackupex --encrypt-key-file¶

    Example of the innobackupex command using the innobackupex --encrypt-key-file should look like this:

    $ innobackupex --encrypt=AES256 --encrypt-key-file=/data/backups/keyfile /data/backups
    

    Note

    Depending on the text editor used for making the KEYFILE, text file in some cases can contain the CRLF and this will cause the key size to grow and thus making it invalid. Suggested way to do this would be to create the file with: echo -n "GCHFLrDFVx6UAsRb88uLVbAVWbK+Yzfs" > /data/backups/keyfile

    Both of these examples will create a timestamped directory in /data/backups containing the encrypted backup.

    Note

    You can use the innobackupex –no-timestamp option to override this behavior and the backup will be created in the given directory.

    Optimizing the encryption process¶

    Two new options have been introduced with the encrypted backups that can be used to speed up the encryption process. These are innobackupex --encrypt-threads and innobackupex --encrypt-chunk-size. By using the innobackupex --encrypt-threads option multiple threads can be specified to be used for encryption in parallel. Option innobackupex --encrypt-chunk-size can be used to specify the size (in bytes) of the working encryption buffer for each encryption thread (default is 64K).

    Decrypting Encrypted Backups¶

    Backups can be decrypted with The xbcrypt binary. The following one-liner can be used to encrypt the whole folder:

    $ for i in `find . -iname "*\.xbcrypt"`; do xbcrypt -d --encrypt-key-file=/root/secret_key --encrypt-algo=AES256 < $i > $(dirname $i)/$(basename $i .xbcrypt) && rm $i; done
    

    Percona XtraBackup innobackupex --decrypt option has been implemented that can be used to decrypt the backups:

    $ innobackupex --decrypt=AES256 --encrypt-key="GCHFLrDFVx6UAsRb88uLVbAVWbK+Yzfs" /data/backups/2015-03-18_08-31-35/
    

    Percona XtraBackup doesn’t automatically remove the encrypted files. In order to clean up the backup directory users should remove the \*.xbcrypt files.

    Note

    innobackupex --parallel can be used with innobackupex --decrypt option to decrypt multiple files simultaneously.

    When the files have been decrypted backup can be prepared.

    Preparing Encrypted Backups¶

    After the backups have been decrypted, they can be prepared the same way as the standard full backups with the innobackupex --apply-log option:

    $ innobackupex --apply-log /data/backups/2015-03-18_08-31-35/
    

    Note

    Percona XtraBackup doesn’t automatically remove the encrypted files. In order to clean up the backup directory users should remove the \*.xbcrypt files.

    Restoring Encrypted Backups¶

    innobackupex has a innobackupex --copy-back option, which performs the restoration of a backup to the server’s datadir

    $ innobackupex --copy-back /path/to/BACKUP-DIR
    

    It will copy all the data-related files back to the server’s datadir, determined by the server’s my.cnf configuration file. You should check the last line of the output for a success message:

    innobackupex: Finished copying back files.
    150318 11:08:13  innobackupex: completed OK!
    

    Other Reading¶

    • The Libgcrypt Reference Manual

    Contact us

    For free technical help, visit the Percona Community Forum.

    To report bugs or submit feature requests, open a JIRA ticket.

    For paid support and managed or consulting services , contact Percona Sales.

    2022-11-10
    Percona LLC and/or its affiliates, © 2024 Cookie Preferences
    Made with Material for MkDocs