2011-11-07 101 views
3

我的问题有点特别,但我希望有人对此问题有所体会。适用于Windows的MySql,MySql管理员:定时备份不起作用

我正在运行Windows 2008服务器,MySql for Windows安装了它。它是MySql 5.2,该软件包包含“MySql Administrator”。在那里你可以做一个特定数据库的备份。当我配置备份并且还说要在凌晨3点左右每天进行备份时,它不会自动工作。只有当我按下“立即执行备份”时,才能保存.SQL文件,然后备份itselve正常工作。当我要求它自动启动时,不会创建任何内容,甚至不会创建日志文件。我检查了所选文件夹的权限,并添加了具有排除任何权限问题的所有权限的用户“每个人”。没有效果。

我一直在谷歌搜索的一天,我找不到解决方案。有谁知道为什么我通过My​​SQL管理员进行的自动备份不适用于MS Windows 2008,为什么它甚至不创建日志文件?

回答

1

我想它可能与Windows“cron”作业有关。无论如何,这做的伎俩对我来说:

http://realm3.com/articles/how_to_schedule_regular_mysql_backups_in_windows

当然,你必须手工做的一切,但也比较好。我在PostgreSQL中得到了同样的问题,因为“at”窗口与linux“cron”不同。由于比,我开始做我自己的“cron”工作。

而且检查: http://kedar.nitty-witty.com/blog/scheduled-backup-mysql-administrator-windows-scheduler-odd

希望它能帮助! :)

+1

感谢您的答复!在我来到这个地方之前,我实际上已经尝试使用直接指向mysqldump.exe的批处理文件选项,但是失败了。我已经尝试过,现在它似乎工作。我实际上在端口3307上使用MySQL。每个命令都使用3306端口作为标准,所以我使用mysqldump(--port = 3307)中的端口选项,现在它可以工作!所以谢谢让我再试一次。不过奇怪的是,虽然为什么Windows的MySQL管理界面不会做的伎俩...... 我把这张票开,因为我还是想MySQL管理本身 – Nehbur

+0

内的解决方案,我很乐意帮助你,莫名其妙! :) –

1

我会发布什么是我的发现让其他人享受。

我没有得到MySQL管理备份功能自动工作,而不是我用@mOrSa

的建议

我的发现是这些:

: 我已经使用这个代码做了一个批处理文件
@echo off 
set zy=2011 
set zm=1 
set zd=17 
set zz = ((zy*100)+zm)*100+zd 
Set hr=%TIME:~0,2% 
Set mn=%TIME:~3,2% 
echo Running dump... 
C:\Progra~1\MySQL\MYSQLS~1.5\bin\mysqldump -uuser -password --port=3307 --result-file="c:\MySqlBackups\backup_%zz%_%hr%%mn%.sql" meibergen_dbo 
echo Done! 
echo Deleting old files 
forfiles /P "C:\MySqlBackups" /S /M *.sql /D -7 /C "cmd /c del @PATH" 
echo Done! 

这使得所选文件夹中的.SQL文件的名称格式为“backup_20110825_14:54.sql”。它还会删除该文件夹中所有超过7天的文件。我有Windows Server 2008,因此文件“forfiles.exe”标准安装在system32文件夹内。如果你没有这个程序,你可以免费下载到某个地方。

之后,我已经在Windows任务计划程序中设置了运行此批处理文件的计划任务。确保你已经给予适当的权利在schedular。它每天执行。

2

我也试过使用1.2.17版与胜利7.我面临同样的问题。MySQL的ADMIN是通过Windows调度程序调度备份。我真的不知道为什么,但当我安排备份(当我保存新创建的项目)在一个ADMIN帐户的用户下它没有运行。当我按照标准帐户安排备份时,它运行良好。为了解决这个问题,我在WIN 7中定义了一个新的标准账户。我在我的主帐户下登录获胜,并在新帐户下安排备份。现在它工作正常。

0

简单的技巧是创建一个存储的连接(在Win7和Win2008上用MySQL Administrator 1.2.17可以测试download it from here, it's among MySQL GUI tools)。

  1. 打开MySQL的管理员,然后进入菜单工具>选项

  2. 在弹出窗口中选择左侧的“连接”,点击按钮“新 连接”。

  3. 填写你的联系信息:用户名,密码, 主机...并保存它。

  4. 关闭的MySQL管理员联络并重新打开它,但 这次通过选择新的存储连接你只是 上一步创建(3)选择列表(选择列表中的第一场连接登录窗口)

  5. 现在,您可以创建一个备份,并安排它,并计划将工作就像一个魅力。

3

创建具有最低权限的用户

mysql> grant select,lock tables on foo.* to [email protected]host identified by'backup'; 
mysql> flush privileges; 

创建一个批处理文件LIKE的追随者,并安排它 * 与数据库名+日期和时间,指定的路径这将备份文件 *

@echo off 
set mySqlPath=C:\[path to my sql]\mysql5.1.36 
set dbUser=bar 
set dbPassword=backup 
set dbName=MyDB1 

set hr=%time:~0,2% 
if "%hr:~0,1%" equ " " set hr=0%hr:~1,1% 

set file=%dbName%.%date:~-4,4%%date:~-10,2%%date:~-7,2%_%hr%%time:~3,2%%time:~6,2%.sql 
set path=C:\[path to folder]\mysql_bak 

echo Running dump for database %dbName% ^> ^%path%\%file% 
"%mySqlPath%\bin\mysqldump.exe" -u %dbUser% -p%dbPassword% --result-file="%path%\%file%" %dbName% 
echo Done! 
0

我知道这是一个老问题,但我不得不在最近几天和搜索解决方案,同样的问题,我无法找到如何解决我的问题,但我发现了一些信息,在我的事件日志,我记起我有另一个连接(显然,事件日志告诉我),所以我用事件日志显示我和瞧,相同的名称进行了新的连接,问题修复。

+0

感谢您对SO的回答,如果您有时间考虑更新您的答案以获得更具体的“您如何创建新的连接ecc ..” –

2

我得到了解决办法,当您创建时间表备份时间MySQL管理采取信息系统的用户名和密码。那个时候给予适当的系统用户名和密码