使用 mysqldump 进行备份并将其放在另一台服务器上(Bash)

使用 mysqldump 进行备份并将其放在另一台服务器上(Bash)

我正在使用 cron 作业每小时进行一次备份,现在,我想默认将这些备份放到另一台服务器上。

我的脚本如下:

mysqldump -u db_user -p db_password db_name| gzip > /current/path/for/backups/backup_$(date).sql.gz

我该怎么做才能将当前路径更改为另一台服务器上的新路径?

答案1

您可以在目标上创建一个共享文件夹并将其挂载到 mysql 服务器上,然后在脚本中将目标路径指定到该挂载文件夹。这应该可行。或者,您可以启动 scp 连接以将内容复制到目标服务器。

答案2

如果您不想将文件存储在本地机器上,您可以尝试以下步骤:

mysqldump -u db_user -p db_password db_name| ssh [email protected] "cat > /path/to/dump.sql"

在传输之前压缩文件(ssh也会尝试压缩其流量):

mysqldump -u db_user -p db_password db_name| gzip  | ssh [email protected] "cat > /path/to/dump.sql.gz"

cat在您的远程系统上,如果您将流导入名为 的文件中,则可能会自动解压缩该流.gz。在这种情况下,只需使用另一个后缀。

答案3

我大多数时候的做法是:备份,复制到另一台服务器,然后从源中删除

mysqldump -u db_user -p db_password db_name| gzip > /current/path/for/backups/backup_$(date).sql.gz;

#Searching, moving to other server and deleting backup files from source.
cd /current/path/for/backups/backup_$(date).sql.gz;
for f in *.gz
do
    scp -pr $f hostnameofotherserver:/destination/path/mysql/backup
    wait
    echo "Removing $f..."
    rm -f $f
done

供参考SSH 密钥设置(每次都无需密码)

http://blog.secaserver.com/2011/07/mysql-daily-backup-and-transfer-to-other-server/

https://www.digitalocean.com/community/tutorials/how-to-create-an-off-site-backup-of-your-site-with-rsync-on-centos-6

相关内容