To limit the storage overhead on the database server, you can
transfer the backup data to a different server without ever
storing it locally. You can achieve that with a single-file
backup. To send the single-file backup to standard output, use
the mysqlbackup command
backup-to-image without specifying the
--backup-image option. (You can also specify
--backup-image=- to make it obvious that the
data is sent to stdout.) To stream the data, you use the
single-file backup in combination with operating system
features such as pipes, ssh, and so on,
which take the input from standard output and create an
equivalent file on a remote system. You can either store the
single-file backup directly on the remote system, or invoke
mysqlbackup with the
copy-back-and-apply-log command on the
other end to restore the backup to a remote MySQL server.
Example 4.13 Single-File Backup to a Remote Host
The following command streams the backup as a single-file
output to a remote host to be saved under the file name
my_backup.img
(--backup-dir=/tmp designates the
directory for storing temporary files rather than the final
output file):
mysqlbackup --defaults-file=~/my_backup.cnf --backup-image=- --backup-dir=/tmp backup-to-image | \
ssh <user name>@<remote host name> 'cat > ~/backups/my_backup.img'
For simplicity, all the connection and other necessary
options are assumed to be specified in the default
configuration file. ssh can be
substituted with another communication protocol like
ftp, and cat can be
substituted with another command (for example,
dd or tar for normal
archiving).
Example 4.14 Single-file Backup to a Remote MySQL Server
The following command streams the backup as a single backup file to be restored on a remote MySQL server:
mysqlbackup --backup-dir=backup --backup-image=- --compress backup-to-image | \
ssh <user name>@<remote host name> 'mysqlbackup --backup-dir=backup_tmp --datadir=/data \
--innodb_log_group_home_dir=. --uncompress --backup-image=- copy-back-and-apply-log'
Example 4.15 Stream a Backup Directory to a Remote MySQL Server
The following command streams a backup directory as a single backup file to be restored on a remote MySQL server:
mysqlbackup --backup-image=- --backup-dir=/path/to/my/backup backup-dir-to-image | \
ssh <user name>@<remote host name> 'mysqlbackup --backup-dir=backup_tmp --datadir=/data --backup-image=- copy-back-and-apply-log'