我目前正在尝试找到一种方法,每周自动将 dump.sql 文件还原到另一台服务器。我还没有在 mysql 或命令提示符中找到执行此操作的代码,但我正在寻找。我能看到的主要问题是服务器每天为每个数据库创建两个数据库备份,并且名称每天都会更改,因为我们将日期存储在名称中。
是否可以设置一些代码,每月恢复一次每个数据库的最新文件?
我已经做了大量研究,但我一直在寻找有关如何创建转储文件或如何将单个转储文件上传到新数据库的指南,但却找不到任何相关信息。
答案1
基本上我会做的是编写一个 bash 脚本每天/每周/每月运行一次。
这是一些逻辑(我会这样做)
在备份所在的目录中,您可以通过编辑 UNIQUEPARTHERE 获取所需的每个备份的最新版本
ls -lthr | grep UNIQUEPARTHERE | tail -1 | cut -f9 -d ' '
例如:
$FILE = ls -lthr | grep DATABASE_BACKUP1 | tail -1 | cut -f9 -d ' '
上述命令将显示文件名中包含 DATABASE_BACKUP1 的任何文件的最新备份。
之后只需在删除的服务器上运行 mysql 命令:
mysql --user=mysql_username --password=your_password remote_database_name < $FILE --host=IP_OF_REMOTE_SERVER_GOES_HERE
当然,这只是我基于您使用 bash 并且使用 mysqldump 创建备份的假设而得出的处理方法的一个粗略想法;)
祝你好运 :)
答案2
你可以试试SQLyog 的SQL 调度程序和报告工具,允许您安排查询的执行。它具有工作代理它允许您生成、格式化和发送个性化邮件,其中包含查询返回的结果。您可以指定外部文件(在您的例子中为 dump.sql)或输入要使用此工具执行的查询。有一个选项使用 Windows Scheduler 保存和安排作业如果您需要按照某个时间表自动启动工作。
答案3
答案4
bash 文件是个好主意
另一种方法是将备份放入特定目录导出数据库:
mysql>mysqldump -h 主机名 -u 用户名 -p 数据库名称 > backup_db.sql
我将其放入我的网络服务器目录中,可以作为访问http://xxxxx/backup_db.sql
进入另一台服务器
只需使用 wgethttp://xxxxx/backup_db.sql并通过以下方式导入数据库
mysql> 源 /home/om/Download/dbname.sql
你可以将整个过程自动化到 crontab 中