XtraBackup for fast and reliable hot-backups
Use Cases and Deployment Scope
Percona XtraBackup is used to run non-locking backups on our replicas. We usePercona XtraBackup to run full backups and daily incrementals on some of the larger database servers, [which allows] us to do point-in-time restores and thus satisfy compliance regulations or scale our reads by seamlessly firing up more replicas. The speed of Percona XtraBackup is crucial and allows us to complete the backups during a specified window.
Pros
- The ability to stream backups (using netcat or socat) to a target destination has many uses, for example, 1)We do not need to store a backup locally on the database server 2) We can stream backups into object storage using GCSFUSE.
- The hot-backup functionality is probably the most important function. We are able to take backups of our primary instances with minimal impact on the database instance.
- XtraBackup has many parameters that can be tuned, allowing us to increase performance or reduce by using the parallel thread parameter for example.
- Partial backups.
- The ease of use when doing restores. Simplified, fast and accurate.
Cons
- The only feature that could use some improvement is partial backup restores. For example, I have a multi-tenant database at the schema level running on a single Percona Server instance. As a tenant grows too large for the share instance or becomes a noisy neighbour we need to move a the tenants schema to its own instance with minimal downtime, meaning that we would run the new instance as a replica with replication filters until failover. In terms of doing a consistent backup, there may be challenges and it is currently possible with XtraBackup, but it would be great if the process was simplified and ensured to be consistent.
Likelihood to Recommend
Well suited to databases < 10TB.
For larger than this, I would go with snapshots.
