![如何在 Windows 上直接(物理)且一致地备份 MySQL 数据文件?](https://linux22.com/image/722219/%E5%A6%82%E4%BD%95%E5%9C%A8%20Windows%20%E4%B8%8A%E7%9B%B4%E6%8E%A5%EF%BC%88%E7%89%A9%E7%90%86%EF%BC%89%E4%B8%94%E4%B8%80%E8%87%B4%E5%9C%B0%E5%A4%87%E4%BB%BD%20MySQL%20%E6%95%B0%E6%8D%AE%E6%96%87%E4%BB%B6%EF%BC%9F.png)
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 显示它们正在使用中,而实际上确实如此。