Creating a Backup
Using xtrabackup #
INSTANT DDL
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.
Prerequisites #
A compatible version of xtrabackup and xbstream, if needed, must be present in your $PATH
prior to running the Backup[Shard]
command.
Supported Versions #
Configuration #
To use xtrabackup
with Vtbackup, VTTablet or Vtctld, the following flags must be set.
Required flags:
--backup_engine_implementation=xtrabackup
--xtrabackup_user string
- 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:
--xtrabackup_stream_mode=xbstream
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_user
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
Fixes:
* 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 xtrabackup
.
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: