>我有一些演示网站用户可以注册和登录并分享添加具有某些功能的产品,但它仅用于演示目的,因此每天有10至15人注册并测试其工作原理
但我不需要每个人的数据,我有新的 mysql.sql 这个 SQL 中的文件没有任何数据我想做 使用 crone 选项卡自动执行任务
每天它将删除当前数据库并上传我的MySQL.sql文件
我该怎么做?
操作系统:优麒麟 19.04
最初,如果数据库也包含存储过程,则只需确保还原文件也包含用于删除存储过程的查询,然后再还原数据库。
若要删除存储过程,请在mysql.sql文件中添加以下行。
DELETE FROM mysql.proc WHERE db like '%{{database_name}}%' AND type = 'PROCEDURE'
在此之后,您必须添加一个 cron 作业,该作业将每天恢复您的数据库,以执行此操作打开终端并键入sudo crontab -e
现在输入0 13 * * * mysql -u{{user_name}} -p {{password}} {{database_name}} <{{path_to_your_sql_file}} 假设您必须在每天下午 1 点恢复数据库。
添加作业后,保存文件。
添加作业后,您可以通过在终端中键入sudo crontab -l来检查它
因为您要做的只是每天"重新安装"数据库(正确吗?您可以在第一行添加到安装脚本中:
DROP database <your databese>
# Here you re-create your DB again (your current sql script)
假设你称这个脚本为"重新安装.sql";你可以将以下行添加到你的cron表中(每天运行命令@ 1am(:
0 1 * * * mysql -u username -p password database_name < /path/to/your/reinstall.sql
要打开 cron 表,您可以执行以下操作:
sudo crontab -l -u [USER_WITH_RIGHTS_TO_EDIT]
希望对您有所帮助!
MySQL将所有数据库数据保存在一个目录中。默认情况下,此目录驻留在MySQL安装中,称为数据。例如,如果您的默认安装位于c:/Users/prakash/mysql-8.0.17,则其中将提供一个名为data的目录。
原则上,您必须在某个地方保留此数据目录的新副本(没有任何在线用户信息,就像您第一次通过运行 DDL 脚本构建数据库时一样(,让我们在c:/Users/prakash/mysql-8.0.17/fresh上说。然后,您可以编写一个 crone 作业来实现以下操作,并在任何方便的时间安排它。
- 关闭数据库
- 删除数据目录(递归(
- 复制数据目录所在的新目录(递归(
- 将复制的目录重命名为数据
- 重新启动数据库