这个问题是在2004 年的 MySQL 论坛没有答案。
我在 Windows 2003 Server 上安装 MySQL 5.0.x 以用于 Drupal。我开始使用 mysqldump 配置备份,这时我突然想到使用影子复制进行的 ntbackup 应该足够可靠,可以备份数据库。我的逻辑有什么缺陷吗?
答案1
这完全取决于备份时 mysql 服务的状态。但简单的答案是否定的,这不是制作 mysql 备份的安全或好方法。您应该使用随附的 mysqlbackup 对数据库进行定期备份。您可以将备份制作到本地计算机,然后使用 ntbackup 备份备份。
答案2
一般而言,永远不要备份正在运行的数据库的数据目录(目录)。只有在您可以先关闭数据库的情况下才备份目录。如果数据库正在运行并且支持热备份,则可以在数据库运行时进行备份。这通常需要备份软件和数据库软件之间的通信。
有可能,但我不会指望它。数据可能被缓存在内存中或在复制时被修改。如果在备份数据之前关闭 MySQL,那么它应该是可靠的。有管理工具可以进行备份。这些将在另一个目录中创建可靠的备份。
答案3
我猜 mysql db 正在使用中。否则就没有意义了。
- 备份后无法比较文件。在此期间它们可能已经发生改变。
- 而且您也无法获得一致的快照。
也许您想设置一个复制的 mysql db,并在备份从属 db 时断开从属与主属的连接,然后重新连接,以便从属可以再次赶上,直到您下次备份。您可以使用一些脚本来执行此操作。
编辑:如果您使用 nt shadow copy 拍摄只读快照,这不会有太大变化。它可以帮助您解决比较问题,但无法解决一致性问题。
如果您想要一致的备份,则应在 mysql 级别进行,例如我上面描述的。Mysql 将使用二进制日志来复制数据库,并且您应该具有最大的一致性。二进制日志将尊重事务。
但在应用层面,有一些事情需要考虑:http://dev.mysql.com/doc/refman/5.0/en/replication-features-transactions.html