使用Coldfusion备份MySQL数据库

5
我想做的是在Coldfusion中运行备份任务(可能是在计划任务中),它将备份MySql数据库中的结构和数据。
我使用的托管服务器出于安全原因始终阻止使用cfexecute,因此无法使用mysqldump。
例如:
<cfexecute name="c:\program files\mysql\mysql server 4.1\bin\mysqldump"
 arguments="--user=xxx --password=yyy dharma" 
 outputfile="#expandPath("./ao.sql")#" timeout="30"/>

(来自 Raymond Camden)

我还有其他选项吗?


1
(你可能已经这样做了,但是...)你问过你的主机提供商是否提供任何自动化数据库备份工具了吗? - Leigh
他们没有。虽然有手动备份机制,但我真的不想在定期备份20个站点时使用它... - Pat Dobson
我有一个在我的桌面上本地运行并使用Windows任务计划程序的进程。它从服务器获取MySQL转储并将数据存储在本地。目前我无法访问该脚本,稍后会发布它。 - Scott Stroz
3
也许需要更换主机。 - Dan Bracuk
也许另一个选项是使用PHP或.NET(两者都在同一台服务器上可用)来运行备份(仅限备份)?对此有什么想法吗? - Pat Dobson
显示剩余3条评论
1个回答

7

备份数据库文件是个好主意,但如果你将它们备份到同一驱动器上,而该驱动器又出现故障,那么就会非常麻烦。我每天都将我的数据库备份到本地系统中。以下是我在一个 .bat 文件中使用的脚本:

@ECHO OFF


@REM Set dir variables. Use ~1 format in win2k

SET basedir={directory where zip files will be put}
SET workdir={Working directory}
SET mysqldir=c:\PROGRA~1\mysql\mysqls~1.5\bin
SET gzipdir=c:\PROGRA~2\GnuWin32\bin
SET mysqlpassword={db password}
SET mysqluser={db user}
SET host={host IP or domain name}
for /f "tokens=1-4 delims=/ " %%a in ('date/t') do ( 
set mm=%%a
set dd=%%b
set yy=%%c
)

ECHO Check connection
PING -n 1 %host%|find "Reply from " >NUL
IF NOT ERRORLEVEL 1 goto :SUCCESS
IF ERRORLEVEL 1 goto :END

:SUCCESS
ECHO Connection found, run backup

@REM Change to mysqldir
CD %mysqldir%

@REM dump database. This is all one line
mysqldump -h %host% -u %mysqluser% -p%mysqlpassword% --databases {space delimited list of databases to backup >%workdir%\backup.sql

@REM Change to workdir  
CD %workdir%

@REM Zip up database
%gzipdir%\gzip.exe backup.sql

@REM Move to random file name
MOVE backup.sql.gz %basedir%\%yy%_%mm%_%dd%_backup.gz

@REM Change back to base dir
CD %basedir%

:END
ECHO No connection, do not run

我每晚使用Windows任务计划程序运行此操作。您可能需要更新它以删除旧备份。
您需要确保已安装gzip。
这将在您的本地系统上放置数据库的副本 - 然后我使用备份服务将备份备份到另一个离线系统。

我可能需要一些额外的指导。我正在使用共享服务器,因此无法访问根目录或cfadmin等。我可以为各个域创建定期任务,那么我该如何实现这个? - Pat Dobson
1
你可以为每个需要备份的数据库创建一个新脚本。或者你可以一次性备份所有数据库(这就是我所做的)。我相信你只需要一个能够访问数据库并可以远程登录的用户名/密码(这可能是你最大的问题)。 - Scott Stroz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接