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
Verifying Backups with replication and pt-checksum
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

    • Setting up the replication
    • Using pt-table-checksum

    Verifying Backups with replication and pt-checksum¶

    One way to verify if the backup is consistent is by setting up the replication and running pt-table-checksum. This can be used to verify any type of backups, but before setting up replication, backup should be prepared and be able to run (this means that incremental backups should be merged to full backups, encrypted backups decrypted etc.).

    Setting up the replication¶

    How to setup a replica for replication in 6 simple steps with Percona XtraBackup guide provides a detailed instructions on how to take the backup and set up the replication.

    For checking the backup consistency you can use either the original server where the backup was taken, or another test server created by using a different backup method (such as cold backup, mysqldump or LVM snapshots) as the source server in the replication setup.

    Using pt-table-checksum¶

    This tool is part of the Percona Toolkit. It performs an online replication consistency check by executing checksum queries on the source, which produces different results on replicas that are inconsistent with the source.

    After you confirmed that replication has been set up successfully, you can install or download pt-table-checksum. This example shows downloading the latest version of pt-table-checksum:

    $ wget percona.com/get/pt-table-checksum
    

    Note

    In order for pt-table-checksum to work correctly libdbd-mysql-perl will need to be installed on Debian/Ubuntu systems or perl-DBD-MySQL on RHEL/CentOS. If you installed the percona-toolkit package from the Percona repositories package manager should install those libraries automatically.

    After this command has been run, pt-table-checksum will be downloaded to your current working directory.

    Running the pt-table-checksum on the source will create percona database with the checksums table which will be replicated to the replicas as well. Example of the pt-table-checksum will look like this:

    $ ./pt-table-checksum
    

    You should see results similar to the following:

    TS ERRORS  DIFFS     ROWS  CHUNKS SKIPPED    TIME TABLE
    04-30T11:31:50      0      0   633135       8       0   5.400 exampledb.aka_name
    04-30T11:31:52      0      0   290859       1       0   2.692 exampledb.aka_title
    Checksumming exampledb.user_info:  16% 02:27 remain
    Checksumming exampledb.user_info:  34% 01:58 remain
    Checksumming exampledb.user_info:  50% 01:29 remain
    Checksumming exampledb.user_info:  68% 00:56 remain
    Checksumming exampledb.user_info:  86% 00:24 remain
    04-30T11:34:38      0      0 22187768     126       0 165.216 exampledb.user_info
    04-30T11:38:09      0      0        0       1       0   0.033 mysql.time_zone_name
    04-30T11:38:09      0      0        0       1       0   0.052 mysql.time_zone_transition
    04-30T11:38:09      0      0        0       1       0   0.054 mysql.time_zone_transition_type
    04-30T11:38:09      0      0        8       1       0   0.064 mysql.user
    

    If all the values in the DIFFS column are 0 that means that backup is consistent with the current setup.

    In case backup wasn’t consistent pt-table-checksum should spot the difference and point to the table that doesn’t match. Following example shows adding new user on the backed up replica in order to simulate the inconsistent backup:

    mysql> GRANT usage ON exampledb.* to exampledb@localhost IDENTIFIED BY 'thisisnewpassword';
    

    If we run the pt-table-checksum now difference should be spotted

    $ ./pt-table-checksum
    
    You should see results similar to the following:

    TS ERRORS  DIFFS     ROWS  CHUNKS SKIPPED    TIME TABLE
    04-30T11:31:50      0      0   633135       8       0   5.400 exampledb.aka_name
    04-30T11:31:52      0      0   290859       1       0   2.692 exampledb.aka_title
    Checksumming exampledb.user_info:  16% 02:27 remain
    Checksumming exampledb.user_info:  34% 01:58 remain
    Checksumming exampledb.user_info:  50% 01:29 remain
    Checksumming exampledb.user_info:  68% 00:56 remain
    Checksumming exampledb.user_info:  86% 00:24 remain
    04-30T11:34:38      0      0 22187768     126       0 165.216 exampledb.user_info
    04-30T11:38:09      0      0        0       1       0   0.033 mysql.time_zone_name
    04-30T11:38:09      0      0        0       1       0   0.052 mysql.time_zone_transition
    04-30T11:38:09      0      0        0       1       0   0.054 mysql.time_zone_transition_type
    04-30T11:38:09      1      0        8       1       0   0.064 mysql.user
    

    This output shows that source and the replica are not in a consistent state and that the difference is in the mysql.user table.

    More information on different options that pt-table-checksum provides can be found in the pt-table-checksum documentation.

    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