4.3.1.1 将备份数据流式传输到另一台设备或服务器

为了限制数据库服务器上的存储开销,您可以将备份数据传输到不同的服务器,而无需将其存储在本地。您可以通过单个文件备份来实现。要将单文件备份发送到标准输出,请使用不指定 选项的mysqlbackup命令 。(您还可以指定 以明确将数据发送到 stdout。)要流式传输数据,您可以将单文件备份与管道等操作系统功能结合使用,backup-to-image--backup-image--backup-image=-ssh, 等等,它们从标准输出中获取输入并在远程系统上创建一个等效文件。您可以将单文件备份直接存储在远程系统上,也 可以在另一端使用 命令调用mysqlbackupcopy-back-and-apply-log将备份恢复到远程 MySQL 服务器。

示例 4.13 到远程主机的单个文件备份

以下命令将备份作为单个文件输出流式传输到远程主机以保存在文件名下 my_backup.img--backup-dir=/tmp指定用于存储临时文件而不是最终输出文件的目录):

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'

为简单起见,假设所有连接和其他必要选项都在默认配置文件中指定。ssh可以替换为其他通信协议,如 ftpcat也可以替换为其他命令(例如, 用于正常归档的 ddtar )。


示例 4.14 到远程 MySQL 服务器的单个文件备份

以下命令将备份流式传输为要在远程 MySQL 服务器上恢复的单个备份文件:

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=. \
--innodb_log_files_in_group=<innodb_log_files_in_group_of_backedup_server> \
 --innodb_log_file_size=<innodb_log_file_size_of_backedup_server> \ 
--innodb_data_file_path=<innodb_data_file_path_of_backedup_server> \ 
--uncompress --backup-image=- copy-back-and-apply-log'

示例 4.15 将备份目录流式传输到远程 MySQL 服务器

以下命令将备份目录流式传输为要在远程 MySQL 服务器上恢复的单个备份文件:

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'