![使用 mysqldump 进行备份并将其放在另一台服务器上(Bash)](https://linux22.com/image/659193/%E4%BD%BF%E7%94%A8%20mysqldump%20%E8%BF%9B%E8%A1%8C%E5%A4%87%E4%BB%BD%E5%B9%B6%E5%B0%86%E5%85%B6%E6%94%BE%E5%9C%A8%E5%8F%A6%E4%B8%80%E5%8F%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%EF%BC%88Bash%EF%BC%89.png)
我正在使用 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/