我是cron jobs的新手,我需要每30分钟恢复一次数据库(mysql)。 是否有一个cron作业命令可以从已被gzip压缩的.sql文件中恢复数据库?
或者我是否需要创建一个php脚本来执行此操作并创建一个cron作业来每30分钟调用一次这个脚本?
此外,这是一个单独的问题,但仍然与cron作业有关,我使用cron作业每天备份一次不同的数据库,gzip并将其放在根目录上的文件夹中。 有没有办法(自动)删除超过一个月的任何东西? 或者,至少保留最近的20个备份并删除其余备份?
其他随机论坛帖子上没有很多关于这个主题的好教程。 任何帮助表示赞赏。
关于如何导入转储文件,只需输入一个
mysql -u user -ppassword databasename < /path/to/dump.sql
进入cron工作。
更多细节:如何恢复MySQL .dump文件?
非常感激。
我理解这个Pekka的历史,但是在cat /path/to/file.sq/ | mysql -u root -ppassword上执行这个方法会更有效吗?
@Daryl我对Unix / Linux管理文件数据的方式知之甚少,不知道哪种方式更有效! 你的建议可能更好。
MySQL无法直接处理gzip压缩数据,但通过管道gzcat然后将其传递给mysql是微不足道的:
gzcat name_of_file.sql.gz | mysql -u....
您可以编写一个bash脚本来执行此操作。
mysql -uPutYourUserHere -pPutYourPasswordHere PutYourUserHere_databaseName < database.sql
没有什么可以自动删除的东西。 但是你可以在你的cron工作中做到:
find /path/to/files -mtime +30 -exec rm {}\;
我的意思是删除旧备份的cron作业。 我认为"自动"会产生误导。 会尝试你的建议。 我不太熟悉bash脚本。
find是一个非常强大的工具。 有时如果你只是谷歌"找到删除月旧"你会找到正确的答案。
我收到一个错误发送给我说找到:缺少`-exec'的参数
我在我的Mac上尝试了这个,它找到了。 -mtime +30 -exec rm {} ;
注意:{}和之间需要有空格;
@johnny,如果这解决了你的问题那么请接受正确的答案:)