因为有多种方法可以在 Windows 上备份 MySQL 数据库,本文将回顾所有不同的选项,以便您可以选择适合您的方法。本文仅限于 Microsoft Windows Server 的 MySQL 数据库备份。如果您使用的是基于 Linux 的操作系统,请参阅如何在 Linux 中自动执行 MySQL 数据库备份

请注意,本文中描述的大多数方法都与 MariaDB 完全兼容,热物理备份除外。

MySQL 备份类型

MySQL 数据库支持以下类型的备份:

    逻辑– 逻辑备份的结果是一个用于数据库重建的 .sql 脚本。该脚本是使用mysqldump实用程序创建的。这种备份的主要优点是它没有第三方依赖,可以在任何 MySQL 服务器上恢复。

    物理- 此备份是通过复制数据库文件创建的。创建和恢复此类备份比逻辑备份更快。我们建议将它用于大型数据库。

    热——如果 MySQL 服务器在InnoDB子系统上运行,那么您可以在不停止写入 MySQL 服务器的情况下创建事务一致的备份

    部分– 不是为整个 DBMS 创建备份,而是为特定数据库或表创建备份。当不同的备份策略应用于不同的数据时,这很有用。

如何创建逻辑MySQL 备份

使用mysqldump简单备份 MySQL 数据库

安装 MySQL 服务器时,会自动安装主要的备份实用程序 – mysqldump. 此命令行实用程序使用一组命令创建一个备份文件以重新创建数据库。

从 mysqldump 创建的文件恢复 MySQL 数据库很容易。可以通过将文件的内容复制到图形 IDE(例如,在MySQL Workbench中)的 SQL 编辑器中并从那里运行来恢复小型数据库。但是,最好使用mysql命令实用程序来恢复大型数据库。 

通常,mysqldump位于 MySQL 服务器安装目录中。例如,对于 MySQL 8.0,该目录的路径为 C:\Program Files\MySQL\MySQL Server 8.0\bin\。建议将此目录添加到全局 PATH 变量中。 

要创建所有 MySQL 服务器数据库的备份,请运行以下命令:

mysqldump --user root --password --all-databases > all-databases.sql

要恢复数据,请使用以下命令:

mysql --user root --password mysql < all-databases.sql

通常您需要备份的不是整个服务器,而是特定的数据库。要转储特定数据库,请使用数据库名称而不是 –all-database 参数。

mysql --user root --password [db_name] < [db_name].sql

以开放格式创建备份这一事实有两个重要优势:

您可以在具有不同版本的服务器上恢复转储。因此,无需担心备份就可以切换到另一个版本的 MySQL。

如果您需要在恢复前更改某些内容,您可以手动编辑 .sql 文件。

有关详细信息,请参阅mysqldump 文档

使用MySQL Workbench备份

MySQL Workbench是一个可视化设计工具,它与 MySQL 数据库一起工作。此应用程序还允许您创建 MySQL 数据库的逻辑备份。

要使用 MySQL Workbench 创建备份,请执行以下步骤:

data-export

1. 转到导航面板上的管理选项卡(默认情况下位于左侧)。

2. 选择数据导出。

3. 从“要导出的表”部分的“数据导出”选项卡中,选择将添加到备份文件的数据库和表。

4. 从导出选项部分,选择导出数据的格式。要么将每个表导出到一个单独的 .sql 文件,要么创建一个通用的 .sql 文件。

5. 如果您需要恢复的不是整个数据库,而是某些特定的表,那么将每个表导出到一个单独的文件会很有用。但是,通常情况下,这不是必需的,使用一个备份文件会更容易。 

6. 按导出按钮创建备份文件。

7. 导出部分本质上是mysqldump实用程序的图形界面。虽然您无法使用 MySQL Workbench 自动执行创建过程,但此工具对于手动创建备份和迁移数据非常方便。

此外,您还可以使用 MySQL Workbench 作为mysqldump. 当您单击“导出”按钮时,将显示导出执行的日志,其中将包含mysqldump界面中指定参数的命令。

data-export

使用 MySQL Workbench 进行转储恢复

1. 要恢复创建的备份,请按照下列步骤操作:

data-export-2

2. 转到导航面板上的管理选项卡(默认情况下位于左侧)。

3. 选择数据导入\恢复。

4. 选择恢复转储项目文件夹或独立文件的来源,具体取决于您在备份阶段选择的内容。

5. 如果您使用了转储项目文件夹,那么您可以选择需要恢复的数据库和表。

6. 如果您使用独立文件,则在恢复之前,您必须选择要将转储恢复到的模式。如果将转储恢复到所需架构不存在的服务器,则可以通过单击“新建”按钮来创建它。

7. 按开始导入按钮。

使用PhpMyAdmin备份

PhpMyAdmin 是一个开源工具,用于通过浏览器管理 MySQL 数据库。仅仅为了创建备份而安装 PhpMyAdmin 可能有点矫枉过正,但如果您已经使用过此工具,则只需单击五次即可创建备份。

data-export-2

1. 在左侧面板中选择数据库。

2. 转到“导出”选项卡。

3. 要备份整个服务器,请选择快速。如果要备份特定数据库,则必须选择自定义以查看其他设置。

4. 选择最适合备份的 SQL 格式。

5. 单击开始。

通常,托管服务提供商不提供对 MySQL 数据库的直接访问,而是通过 PhpMyAdmin 提供访问。但是,与 MySQL Workbench 一样,PhpMyAdmin 是一个用于处理数据库的工具,它不支持自动创建定期备份的内置机制。在这种情况下,SqlBakSQLBackupAndFTP可以通过 PhpMyAdmin 连接到 MySQL 数据库来提供帮助。

如何创建物理MySQL 数据库备份

最终,任何数据库都存储在一个文件或一组文件中。如果将这些文件保存到另一个位置,您以后可以使用它们来恢复特定时间段的数据。

与逻辑备份不同,物理备份的创建速度要快得多,因为它只是复制文件的问题。恢复也很快,同理。

但是,物理备份有两个重要的缺点:

备份只能移植到具有相同或相似硬件特征的其他机器。

创建热备份的解决方案对于小型企业来说可能过于昂贵,因为唯一允许您在不停止服务器的情况下创建物理备份的 Windows 工具是 MySQL Enterprise Backup。

通过复制数据文件手动创建 MySQL 服务器备份

创建备份的最简单方法是简单地复制 MySQL 数据目录的内容。

要基于文件手动创建 MySQL Server 备份,请按照以下步骤操作:

1. 找到 MySQL 服务器数据目录。为此,请运行以下命令:

select @@datadir;

2. 最简单的方法是通过 MySQL Workbench。

data-export-2

3. 查找并停止 MySQL Server 服务。按win+R,然后输入service.msc

4. 在服务列表中找到 MySQL Server 服务

5. 右键单击它并选择停止

data-export-2

6. 将 MySQL 服务器数据目录的内容复制或打包到另一个位置

7. 通过单击服务上下文菜单中的启动来启动 MySQL 服务器。

通过使用批处理脚本复制数据文件来创建 MySQL 服务器备份

上一节中描述的所有操作都可以使用一个批处理脚本来执行。

首先,为变量值设置值然后运行脚本。它将停止服务,将数据文件夹的内容复制到一个新的子目录,然后启动 MySQL 服务。

set mysql_data_dir=C:\ProgramData\MySQL\MySQL Server 8.0\Data
    set backup_dir=D:\Temp
    set mysql_service_name=MySQL80
    
    NET STOP %mysql_service_name%
    set mysql_backup_folder=%backup_dir%\mysql-backup-%DATE:~-4%-%DATE:~4,2%-%DATE:~7,2%-%time::=.% 
    mkdir %mysql_backup_folder%
    xcopy /e /k /h /i "%mysql_data_dir%" "%mysql_backup_folder%"
    NET START %mysql_service_name%
    
从文件恢复数据库

请按照以下步骤恢复您的数据:

1. 停止 MySQL 服务。

2. 完全清空 MySQL 服务器数据目录。

3. 将保存的数据复制到数据目录。

4. 启动服务。

总结

请记住,保护您的数据不仅仅是创建备份文件。有必要确保备份文件传输到存储,并定期删除旧备份,以防止存储溢出。

无论您是为自动 MySQL Server 备份创建批处理脚本,还是其他备份软件,最重要的是不要忘记您正在创建备份,以便以后可以恢复它。因此,请不时测试您的恢复脚本。