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