如何在 Windows 上直接(物理)且一致地备份 MySQL 数据文件?

如何在 Windows 上直接(物理)且一致地备份 MySQL 数据文件?

MySQL 附带“dump”命令和实用程序,可将数据库转换为文本形式并将该文本存储在磁盘上的某个位置。对于大型数据库,转换为文本可能是一个缓慢的操作,并会生成包含文本的大型 SQL 文件。

MySQL 在以数据库命名的 Windows 文件夹中维护三个或四个内部紧凑文件,位于其数据文件夹。复制这些文件比复制 SQL 文本文件要快得多。

但是这些文件在 MySQL 服务器运行时不会更新,因此从这些文件复制可能会产生旧数据,而复制到这些文件可能不会在 MySQL 应用程序中显示新数据。

是否有一个 BAT/CMD 命令可以用来使数据文件一致(正确),以便可以将它们从 MySQL 复制出或复制入 MySQL?

答案1

我自己的建议是使用以下 Windows 命令:

set bin=C:\Program Files\MySQL\MySQL Server 5.6\bin
"%bin%/mysql" -e "FLUSH TABLES WITH READ LOCK; UNLOCK TABLES;" --user=UserName --password=Password DatabaseName

这会快速强制将数据库的所有内部 MySQL 数据复制到其文件中,然后放入 MySQL 中的数据库文件夹中数据文件夹,然后可以从该文件夹将它们复制到其他文件夹(用于备份或复制)。您必须针对特定版本的 MySQL 以及数据库和管理员用户自定义此命令。

根据我的经验,这个 BAT/CMD 命令运行起来又快又好。我经常使用它来备份和在两台计算机之间更新 MySQL 应用程序。

我唯一能给出的建议是使用 MySQL Workbench(MySQL 附带)停止 MySQL 服务器。停止后,它会被刷新到磁盘。直接使用完文件后,不要忘记启动 MySQL 服务器(此时 MySQL 会从磁盘读取数据库文件)。

注意:如果您只是将数据库的数据文件复制到已打开的另一个 MySQL 实例的数据文件夹中,那么您将无法在 MySQL 应用程序中看到数据!您可能认为 MySQL 会检查磁盘文件的修改日期/时间以检测更新,但事实并非如此。而且它不会将其文件保持锁定状态,向 Windows 显示它们正在使用中,而实际上确实如此。

相关内容