我正在尝试在我的工作中实现数据库备份cron(其他解决方案欢迎)但我有一个小问题:
我有一个空间超过10GB的大型数据库,当前的vm没有空间将它存储在mysql创建的临时文件中.
我知道我可以将MysqLdump与主机参数一起使用,但我的问题是,当这样做时,MysqLdump生成的临时文件会保留在运行它的机器上还是留在数据库服务器上?
更新:
我忘了提到我正在尝试备份一个网站网络,其中一些是在防火墙后面(需要VPN访问),有些需要服务器跳转才能到达数据库服务器.
最佳答案
您可以从存档主机运行shell脚本,您可以在其中使用数据库服务器交换无密码的ssh密钥.这使您可以直接通过ssh传输文件,而无需在远程数据库服务器上创建任何临时文件:
原文链接:https://www.f2er.com/mysql/432844.htmlssh -C myhost.com MysqLdump -u my_user --password=bigsecret \
--skip-lock-tables --opt database_name > local_backup_file.sql
显然,有一些方法可以在命令行上保护该密码,但这种方法可以完成您想要的任务.此方法的一个优点是它不需要存档主机访问远程主机上的端口3306.
This guy’s version很酷,因为它在通过网络传输之前还会动态压缩数据,然后在将数据加载到本地数据库之前将其解压缩.
ssh me@remoteserver 'MysqLdump -u user -psecret production_database | \
gzip -9' | gzip -d | MysqL local_database
但这就是为什么我的版本使用ssh -C,它启用自己的压缩算法并避免额外的gzip管道.