Creating a Backup
Using xtrabackup #
The default backup implementation is
builtin, however we strongly recommend using the
xtrabackup engine as it is more robust and allows for non-blocking backups. Restores will always be done with whichever engine was used to create the backup.
A compatible version of xtrabackup and xbstream, if needed, must be present in your
$PATH prior to running the
Supported Versions #
xtrabackup with Vtbackup, VTTablet or Vtctld, the following flags must be set.
- The user that xtrabackup will use to connect to the database server. This user must have the necessary privileges.
- This user will need to be authorized to connect to mysql locally without a password using auth_socket.
Additionally required for MySQL 8.0:
Common Errors and Resolutions #
No xtrabackup User passed to vttablet:
E0310 08:15:45.336083 197442 main.go:72] remote error: rpc error: code = Unknown desc = TabletManager.Backup on zone1-0000000102 error: xtrabackupUser must be specified.: xtrabackupUser must be specified
Fix: Set the vtctld and vttablet flag
xtrabackup binary not found in $PATH:
E0310 08:22:22.260044 200147 main.go:72] remote error: rpc error: code = Unknown desc = TabletManager.Backup on zone1-0000000102 error: unable to start backup: exec: "xtrabackup": executable file not found in $PATH: unable to start backup: exec: "xtrabackup": executable file not found in $PATH
* Ensure the xtrabackup binary is in the $PATH for the $USER running vttablet * Alternatively, set --xtrabackup_root_path on vttablet provide path to xtrabackup/xbstream binaries via vtctld and vttablet flags
Tar format no longer supported in 8.0:
I0310 12:34:47.900363 211809 backup.go:163] I0310 20:34:47.900004 xtrabackupengine.go:310] xtrabackup stderr: Invalid --stream argument: tar Streaming in tar format is no longer supported in 8.0; use xbstream instead
Fix: Set the
--xtrabackup_stream_mode flag to to xbstream on vttablets and vtctlds
Unsupported mysql server version:
I0310 12:49:32.279729 215835 backup.go:163] I0310 20:49:32.279435 xtrabackupengine.go:310] xtrabackup stderr: Error: Unsupported server version 8.0.23-0ubuntu0.20.04.1. I0310 12:49:32.279773 215835 backup.go:163] I0310 20:49:32.279485 xtrabackupengine.go:310] xtrabackup stderr: Please upgrade PXB, if a new version is available. To continue with risk, use the option --no-server-version-check.
To continue with risk: Set
--xtrabackup_backup_flags=--no-server-version-check. Note this occurs when your MySQL server version is technically unsupported by
Create backups with vtctl #
Run the following vtctl command to create a backup:
vtctldclient --server=<vtctld_host>:<vtctld_port> Backup <tablet-alias>
If the engine is
builtin, replication will be stopped prior to shutting down mysqld for the backup.
If the engine is
xtrabackup, the tablet can continue to serve traffic while the backup is running.
Run the following vtctl command to backup a specific shard:
vtctldclient --server=<vtctld_host>:<vtctld_port> BackupShard [--allow_primary=false] <keyspace/shard>
Backing up Topology Server #
The Topology Server stores metadata (and not tablet data). It is recommended to create a backup using the method described by the underlying plugin: