2010-09-02 119 views
0

我们的Java服务器应用程序将数据记录到SQL数据库,该数据库可能位于同一台计算机上,也可能不在同一台计算机上。目前我们使用MS SQL Server,现在我们正在移植到MySQL。用户在我们的应用服务器上配置数据库备份参数,例如时间来运行备份,并且应用程序服务器通过sproc在适当的时间执行SQL Server的BACKUP DATABASE命令。它每天进行增量备份和每周完整备份。MySQL数据库的远程备份

MySQL缺乏相同的功能来告诉数据库从客户端连接恢复自己。我们正在考虑的选项包括:

  • 创建一个UDF以外壳化为mysqldump(或复制数据库文件),可以通过sproc从我们的应用服务器调用它。本质上,我们将为MySQL实施一个BACKUP DATABASE版本。
  • 创建一个服务在MySQL框上运行,该框可以从应用服务器获取备份设置并在本地运行mysqldump(或文件复制)。
  • 创建一个模拟mysqldump的备份sproc,例如显示每个表的CREATE TABLES和SELECT INTO OUTFILE。

设置一个cron作业,Perl脚本,第三方应用程序或其他在数据中心工作的技巧并不是首选;这是一个收缩包装包,需要非常强大,才能实现。

数据库大小的范围可以从大约10MB到10GB。

我知道增量片的二进制日志。如果我们决定使用它们,我认为一般的解决方案也可能适用于他们。

这都是在Windows 2003 32位或2008R2 64位MySQL 5.1上。

UDF选项似乎是最适合我的。 UDF仓库(http://www.mysqludf.org/)有mysqludf_sys,这可能是我们需要的,但我认为我会征求意见,因为广泛的谷歌搜索后,似乎没有其他人已经达到了相同的结论,或者我们的需求刚刚结束普通的。我们的应用程序是MySQL中唯一的应用程序,所以我不担心其他用户访问我们的UDF。

我忽略的任何解决方案?以这种方式使用UDF的经验?

感谢, 埃里克

+0

它可能更便宜,但是与mssql相比,有一百万件小事让MySQL很难处理。我喜欢并一直使用它,但是从mssql到mysql是迈向低级的一步。 – 2010-09-02 21:48:26

+0

@Byron Whitlock:不仅仅是备份证明MySQL是从SQL Server中退出的...... – 2010-09-02 21:53:35

+0

@OMG Ponies,yep在datetime字段上没有微秒精度,不允许在时间戳的表定义中使用默认的GETDATE()一个挑剔的查询优化器,强迫你重写你的查询。这个清单不胜枚举:( – 2010-09-02 22:03:50

回答

0

为此,我们决定将我们的搭配与数据库应用程序的其他原因,使这个问题变得毫无意义。