关闭。这个问题需要更加突出重点。它目前不接受答案。
**想改进这个问题吗?**通过编辑这篇文章更新这个问题,使它只关注一个问题。
两年前关门了。
改进这个问题
因此,我有一个web应用程序,每个月都应该备份一个mysql数据库表,以用于历史目的。表名将是它的名称,后跟当前年份和它应该表示的月份,如 table_201811
或者 table_201901
等等,你明白了。
我没有ssh访问权限,所以没有典型的cron作业的可能性。
我想,一种方法是,由于php不是一直在运行,每次加载页面时,我都会:
获取最新的表名
从那算起的年月
将其与当前年度和月份进行比较
检查当前年度和月份表是否存在
如果没有,则创建,并复制所有数据
现在,这没有什么问题,但是,我认为,每个人都可以看到,这不是一个最佳的解决方案,因为至少有2个mysql请求涉及。
我如何改进这个过程?有没有其他更好的方法?
编辑:实现这一点的一种可能方法,尽管不是最优雅的方法:
在服务器上的文件中保存下一个备份日期
在每次加载页面时,将该日期与当前日期进行比较
如果相等或更大,请检查是否已创建表
如果没有,则创建并复制所有数据
在服务器上的文件中设置下一个日期
有什么想法吗?
编辑2
因此,最后我采用了上述概念,只是我使用了数据库来存储下一个备份日期,因为正如我所了解的那样,通过php读取/写入文件比访问数据库要慢。有人会反驳这一点,因为数据库文件在物理上也是硬盘上的普通文件,但无论如何。这就解决了。
2条答案
按热度按时间1qczuiv01#
另一种选择是编写一个可通过url调用的备份脚本,并对该url使用.htaccess基本身份验证保护,这样其他人就无法调用它。
然后使用cron-job.org这样的服务,每天调用一次这个url。
v09wglhw2#
从没有ssh访问的Angular 推断,是其他人在为您托管吗?让他们做一个你想要的备份脚本,然后把它放到crontab中。
他们希望已经有某种备份系统在运行,如果没有,考虑尽快切换到其他地方。
另外,(暂时戴上我的操作帽)如果你打算每月将数据的完整副本积累到数据库中,他们肯定会很感兴趣。出于这个原因,最好先咨询他们。